net: ena: replace deprecated strncpy with strscpy
authorjustinstitt@google.com <justinstitt@google.com>
Thu, 7 Dec 2023 21:34:42 +0000 (21:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 10 Dec 2023 19:08:58 +0000 (19:08 +0000)
`strncpy` is deprecated for use on NUL-terminated destination strings
[1] and as such 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 without
unnecessarily NUL-padding.

host_info allocation is done in ena_com_allocate_host_info() via
dma_alloc_coherent() and is not zero initialized by alloc_etherdev_mq().

However zero initialization of the destination doesn't matter in this case,
because strscpy() guarantees a NULL termination.

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>
Acked-by: Arthur Kiyanovski <akiyano@amazon.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amazon/ena/ena_netdev.c

index b5bca48..4a41efc 100644 (file)
@@ -3276,8 +3276,8 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev, struct pci_dev *pd
        strscpy(host_info->kernel_ver_str, utsname()->version,
                sizeof(host_info->kernel_ver_str) - 1);
        host_info->os_dist = 0;
-       strncpy(host_info->os_dist_str, utsname()->release,
-               sizeof(host_info->os_dist_str) - 1);
+       strscpy(host_info->os_dist_str, utsname()->release,
+               sizeof(host_info->os_dist_str));
        host_info->driver_version =
                (DRV_MODULE_GEN_MAJOR) |
                (DRV_MODULE_GEN_MINOR << ENA_ADMIN_HOST_INFO_MINOR_SHIFT) |