acct: replace all non-returning strlcpy with strscpy
authorAzeem Shaikh <azeemshaikh38@gmail.com>
Mon, 10 Jul 2023 01:17:48 +0000 (01:17 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 18 Aug 2023 17:18:51 +0000 (10:18 -0700)
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

Link: https://lkml.kernel.org/r/20230710011748.3538624-1-azeemshaikh38@gmail.com
Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/acct.c

index 010667ce60801a498ffdcce39af2147f1028179c..10f769e13f724dd18615be9bfb2ec47dcabc7b1b 100644 (file)
@@ -445,7 +445,7 @@ static void fill_ac(acct_t *ac)
        memset(ac, 0, sizeof(acct_t));
 
        ac->ac_version = ACCT_VERSION | ACCT_BYTEORDER;
-       strlcpy(ac->ac_comm, current->comm, sizeof(ac->ac_comm));
+       strscpy(ac->ac_comm, current->comm, sizeof(ac->ac_comm));
 
        /* calculate run_time in nsec*/
        run_time = ktime_get_ns();