[SCSI] fusion: ensure NUL-termination of MptCallbacksName elements

Using strlcpy instead of memcpy makes the strlen() calls superfluous
and also ensures zero-termination of the copied string.
At the same time get rid of the magic constant 50.

Actually, I can't see why copying the callback name is necessary
instead of simply storing a pointer to it (just like to the callback
function itself), but that goes beyond the scope of this fix.

Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Acked-by: "Nandigama, Nagalakshmi" <Nagalakshmi.Nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Ferenc Wagner 2011-08-25 14:44:57 +02:00 committed by James Bottomley
parent cd6dbb038a
commit 8af3d8d5bc
2 changed files with 5 additions and 3 deletions

View File

@ -115,7 +115,8 @@ module_param(mpt_fwfault_debug, int, 0600);
MODULE_PARM_DESC(mpt_fwfault_debug, MODULE_PARM_DESC(mpt_fwfault_debug,
"Enable detection of Firmware fault and halt Firmware on fault - (default=0)"); "Enable detection of Firmware fault and halt Firmware on fault - (default=0)");
static char MptCallbacksName[MPT_MAX_PROTOCOL_DRIVERS][50]; static char MptCallbacksName[MPT_MAX_PROTOCOL_DRIVERS]
[MPT_MAX_CALLBACKNAME_LEN+1];
#ifdef MFCNT #ifdef MFCNT
static int mfcounter = 0; static int mfcounter = 0;
@ -717,8 +718,8 @@ mpt_register(MPT_CALLBACK cbfunc, MPT_DRIVER_CLASS dclass, char *func_name)
MptDriverClass[cb_idx] = dclass; MptDriverClass[cb_idx] = dclass;
MptEvHandlers[cb_idx] = NULL; MptEvHandlers[cb_idx] = NULL;
last_drv_idx = cb_idx; last_drv_idx = cb_idx;
memcpy(MptCallbacksName[cb_idx], func_name, strlcpy(MptCallbacksName[cb_idx], func_name,
strlen(func_name) > 50 ? 50 : strlen(func_name)); MPT_MAX_CALLBACKNAME_LEN+1);
break; break;
} }
} }

View File

@ -89,6 +89,7 @@
*/ */
#define MPT_MAX_ADAPTERS 18 #define MPT_MAX_ADAPTERS 18
#define MPT_MAX_PROTOCOL_DRIVERS 16 #define MPT_MAX_PROTOCOL_DRIVERS 16
#define MPT_MAX_CALLBACKNAME_LEN 49
#define MPT_MAX_BUS 1 /* Do not change */ #define MPT_MAX_BUS 1 /* Do not change */
#define MPT_MAX_FC_DEVICES 255 #define MPT_MAX_FC_DEVICES 255
#define MPT_MAX_SCSI_DEVICES 16 #define MPT_MAX_SCSI_DEVICES 16