Browse Source

Bugfix: DevAPI: Guarantee set_device functions never get passed a NULL pointer for newvalue

Luke Dashjr 11 years ago
parent
commit
bf77f9ac2a
1 changed files with 5 additions and 1 deletions
  1. 5 1
      deviceapi.c

+ 5 - 1
deviceapi.c

@@ -910,6 +910,7 @@ void _set_auto_sdr(enum bfg_set_device_replytype * const out_success, const char
 		*out_success = SDR_ERR;
 		*out_success = SDR_ERR;
 }
 }
 
 
+static
 const char *_proc_set_device(struct cgpu_info * const proc, const char * const optname, const char * const newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
 const char *_proc_set_device(struct cgpu_info * const proc, const char * const optname, const char * const newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
 {
 {
 	const struct bfg_set_device_definition *sdf;
 	const struct bfg_set_device_definition *sdf;
@@ -938,6 +939,7 @@ const char *_proc_set_device(struct cgpu_info * const proc, const char * const o
 	return replybuf;
 	return replybuf;
 }
 }
 
 
+static
 const char *__proc_set_device(struct cgpu_info * const proc, char * const optname, char * const newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
 const char *__proc_set_device(struct cgpu_info * const proc, char * const optname, char * const newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
 {
 {
 	if (proc->drv->set_device)
 	if (proc->drv->set_device)
@@ -950,8 +952,10 @@ const char *__proc_set_device(struct cgpu_info * const proc, char * const optnam
 	return _proc_set_device(proc, optname, newvalue, replybuf, out_success);
 	return _proc_set_device(proc, optname, newvalue, replybuf, out_success);
 }
 }
 
 
-const char *proc_set_device(struct cgpu_info * const proc, char * const optname, char * const newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
+const char *proc_set_device(struct cgpu_info * const proc, char * const optname, char *newvalue, char * const replybuf, enum bfg_set_device_replytype * const out_success)
 {
 {
+	if (!newvalue)
+		newvalue = "";
 	const char * const rv = __proc_set_device(proc, optname, newvalue, replybuf, out_success);
 	const char * const rv = __proc_set_device(proc, optname, newvalue, replybuf, out_success);
 	switch (*out_success)
 	switch (*out_success)
 	{
 	{