firmware: ti_sci: refactor deprecated strncpy
authorJustin Stitt <justinstitt@google.com>
Wed, 13 Sep 2023 20:23:02 +0000 (20:23 +0000)
committerNishanth Menon <nm@ti.com>
Wed, 20 Sep 2023 12:52:08 +0000 (07:52 -0500)
`strncpy` is deprecated for use on NUL-terminated destination strings [1].

We should prefer more robust and less ambiguous string interfaces.

A suitable replacement is `strscpy` [2] due to the fact that it guarantees
NUL-termination on the destination buffer.

It does not seem like `ver->firmware_description` requires NUL-padding
(which is a behavior that strncpy provides) but if it does let's opt for
`strscpy_pad()`.

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings
Link: https://manpages.debian.org/testing/linux-manual-4.8/strscpy.9.en.html
Link: https://github.com/KSPP/linux/issues/90
Cc: linux-hardening@vger.kernel.org
Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230913-strncpy-drivers-firmware-ti_sci-c-v1-1-740db471110d@google.com
Signed-off-by: Nishanth Menon <nm@ti.com>
drivers/firmware/ti_sci.c

index 8444355539c6d58bf83eb7e798b1be1ed22bb3df..c288ae49f91c695b960780967e39d047a8856154 100644 (file)
@@ -485,7 +485,7 @@ static int ti_sci_cmd_get_revision(struct ti_sci_info *info)
        ver->abi_major = rev_info->abi_major;
        ver->abi_minor = rev_info->abi_minor;
        ver->firmware_revision = rev_info->firmware_revision;
-       strncpy(ver->firmware_description, rev_info->firmware_description,
+       strscpy(ver->firmware_description, rev_info->firmware_description,
                sizeof(ver->firmware_description));
 
 fail: