]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sparc64: Replace all non-returning strlcpy with strscpy
authorAzeem Shaikh <azeemshaikh38@gmail.com>
Tue, 30 May 2023 16:30:01 +0000 (16:30 +0000)
committerKees Cook <keescook@chromium.org>
Wed, 14 Jun 2023 19:04:06 +0000 (12:04 -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

Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230530163001.985256-1-azeemshaikh38@gmail.com
arch/sparc/kernel/ioport.c
arch/sparc/kernel/setup_32.c
arch/sparc/kernel/setup_64.c
arch/sparc/prom/bootstr_32.c

index 4e4f3d3263e46ba409127cf6fe51b8e2bb1d8b6b..a8cbe403301f3e357cc9e751051d8c0c0aaba940 100644 (file)
@@ -191,7 +191,7 @@ static void __iomem *_sparc_alloc_io(unsigned int busno, unsigned long phys,
                tack += sizeof (struct resource);
        }
 
-       strlcpy(tack, name, XNMLN+1);
+       strscpy(tack, name, XNMLN+1);
        res->name = tack;
 
        va = _sparc_ioremap(res, busno, phys, size);
index c8e0dd99f3700e73851878ca44102f1c7d24fe8f..ace0e9adfd771eb20c16355afe8be2d659d6f2d3 100644 (file)
@@ -302,7 +302,7 @@ void __init setup_arch(char **cmdline_p)
 
        /* Initialize PROM console and command line. */
        *cmdline_p = prom_getbootargs();
-       strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
+       strscpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
        parse_early_param();
 
        boot_flags_init(*cmdline_p);
index 48abee4eee29d8589d9452029f109e102f63f91a..6546ca9d4d3f1f629a632f9c8c000ee6802b99eb 100644 (file)
@@ -636,7 +636,7 @@ void __init setup_arch(char **cmdline_p)
 {
        /* Initialize PROM console and command line. */
        *cmdline_p = prom_getbootargs();
-       strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
+       strscpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
        parse_early_param();
 
        boot_flags_init(*cmdline_p);
index e3b731ff00f07b3cc937cf5baf5bc40fe0d213f8..1c7cd258b0dc02ad533e79563701186a08093294 100644 (file)
@@ -52,7 +52,7 @@ prom_getbootargs(void)
                 * V3 PROM cannot supply as with more than 128 bytes
                 * of an argument. But a smart bootstrap loader can.
                 */
-               strlcpy(barg_buf, *romvec->pv_v2bootargs.bootargs, sizeof(barg_buf));
+               strscpy(barg_buf, *romvec->pv_v2bootargs.bootargs, sizeof(barg_buf));
                break;
        default:
                break;