]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: liquidio: replace deprecated strncpy with strscpy_pad
authorJustin Stitt <justinstitt@google.com>
Thu, 5 Oct 2023 21:41:01 +0000 (21:41 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 10 Oct 2023 02:38:47 +0000 (19:38 -0700)
`strncpy` is deprecated for use on NUL-terminated destination strings
[1] and as such we should prefer more robust and less ambiguous string
interfaces.

We know `fw_type` must be NUL-terminated based on use here:
|       static bool fw_type_is_auto(void)
|       {
|        return strncmp(fw_type, LIO_FW_NAME_TYPE_AUTO,
|               sizeof(LIO_FW_NAME_TYPE_AUTO)) == 0;
|       }
...and here
|       module_param_string(fw_type, fw_type, sizeof(fw_type), 0444);

Let's opt to NUL-pad the destination buffer as well so that we maintain
the same exact behavior that `strncpy` provided here.

A suitable replacement is `strscpy_pad` due to the fact that it
guarantees both NUL-termination and NUL-padding on the destination
buffer.

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings
Link: https://github.com/KSPP/linux/issues/90
Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20231005-strncpy-drivers-net-ethernet-cavium-liquidio-lio_main-c-v1-1-663e3f1d8f99@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cavium/liquidio/lio_main.c

index 100daadbea2a66ff648250abef332ff6c4c94228..34f02a8ec2ca3adad9dd64ec48df2cc66c8880ea 100644 (file)
@@ -1689,7 +1689,7 @@ static int load_firmware(struct octeon_device *oct)
 
        if (fw_type_is_auto()) {
                tmp_fw_type = LIO_FW_NAME_TYPE_NIC;
-               strncpy(fw_type, tmp_fw_type, sizeof(fw_type));
+               strscpy_pad(fw_type, tmp_fw_type, sizeof(fw_type));
        } else {
                tmp_fw_type = fw_type;
        }