scsi: lpfc: Replace all non-returning strlcpy() with strscpy()
authorAzeem Shaikh <azeemshaikh38@gmail.com>
Tue, 30 May 2023 15:57:45 +0000 (15:57 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 31 May 2023 21:59:06 +0000 (17:59 -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/20230530155745.343032-1-azeemshaikh38@gmail.com
Reviewed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_hbadisc.c

index 67bfddd..6d9868a 100644 (file)
@@ -4836,7 +4836,7 @@ lpfc_nlp_state_name(char *buffer, size_t size, int state)
        };
 
        if (state < NLP_STE_MAX_STATE && states[state])
-               strlcpy(buffer, states[state], size);
+               strscpy(buffer, states[state], size);
        else
                snprintf(buffer, size, "unknown (%d)", state);
        return buffer;