scsi: message: fusion: Replace all non-returning strlcpy() with strscpy()
authorAzeem Shaikh <azeemshaikh38@gmail.com>
Tue, 30 May 2023 16:02:48 +0000 (16:02 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 31 May 2023 22:03:33 +0000 (18:03 -0400)
strlcpy() reads the entire source buffer first.  This read may exceed the
destination size limit.  This is both inefficient and can lead to linear
read overflows if a source string is not NUL-terminated [1].  In an effort
to remove strlcpy() completely [2], replace strlcpy() here with strscpy().
No return values were used, so direct replacement is safe.

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy
[2] https://github.com/KSPP/linux/issues/89

Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
Link: https://lore.kernel.org/r/20230530160248.411637-1-azeemshaikh38@gmail.com
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptctl.c

index 4f0afce8428da45f2dac29310cf2e2de89d32a5a..4bf669c5564932616a69056598765969a138c08e 100644 (file)
@@ -712,7 +712,7 @@ mpt_register(MPT_CALLBACK cbfunc, MPT_DRIVER_CLASS dclass, char *func_name)
                        MptDriverClass[cb_idx] = dclass;
                        MptEvHandlers[cb_idx] = NULL;
                        last_drv_idx = cb_idx;
-                       strlcpy(MptCallbacksName[cb_idx], func_name,
+                       strscpy(MptCallbacksName[cb_idx], func_name,
                                MPT_MAX_CALLBACKNAME_LEN+1);
                        break;
                }
@@ -7666,7 +7666,7 @@ mpt_display_event_info(MPT_ADAPTER *ioc, EventNotificationReply_t *pEventReply)
                break;
        }
        if (ds)
-               strlcpy(evStr, ds, EVENT_DESCR_STR_SZ);
+               strscpy(evStr, ds, EVENT_DESCR_STR_SZ);
 
 
        devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT
index 1decd09a08d8166c448fc403660addb8e6d437f9..dd028df4b283d55c24e25fa086bd400f5653c5be 100644 (file)
@@ -2408,7 +2408,7 @@ mptctl_hp_hostinfo(MPT_ADAPTER *ioc, unsigned long arg, unsigned int data_size)
                                if (mpt_config(ioc, &cfg) == 0) {
                                        ManufacturingPage0_t *pdata = (ManufacturingPage0_t *) pbuf;
                                        if (strlen(pdata->BoardTracerNumber) > 1) {
-                                               strlcpy(karg.serial_number,
+                                               strscpy(karg.serial_number,
                                                        pdata->BoardTracerNumber, 24);
                                        }
                                }