net: qed: use correct strncpy() size
authorArnd Bergmann <arnd@arndb.de>
Fri, 2 Feb 2018 15:44:47 +0000 (16:44 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Dec 2018 12:03:41 +0000 (13:03 +0100)
commit 11f711081af0eb54190dc0de96ba4a9cd494666b upstream.

passing the strlen() of the source string as the destination
length is pointless, and gcc-8 now warns about it:

drivers/net/ethernet/qlogic/qed/qed_debug.c: In function 'qed_grc_dump':
include/linux/string.h:253: error: 'strncpy' specified bound depends on the length of the source argument [-Werror=stringop-overflow=]

This changes qed_grc_dump_big_ram() to instead uses the length of
the destination buffer, and use strscpy() to guarantee nul-termination.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/qlogic/qed/qed_debug.c

index 03c3cf77aaff6a097163ef7d53165bf2a2014cb8..99f32202a85c96d8013920bfe318d383a07a936c 100644 (file)
@@ -3590,10 +3590,8 @@ static u32 qed_grc_dump_big_ram(struct qed_hwfn *p_hwfn,
        total_blocks = big_ram->num_of_blocks[dev_data->chip_id];
        ram_size = total_blocks * BIG_RAM_BLOCK_SIZE_DWORDS;
 
-       strncpy(type_name, big_ram->instance_name,
-               strlen(big_ram->instance_name));
-       strncpy(mem_name, big_ram->instance_name,
-               strlen(big_ram->instance_name));
+       strscpy(type_name, big_ram->instance_name, sizeof(type_name));
+       strscpy(mem_name, big_ram->instance_name, sizeof(mem_name));
 
        /* Dump memory header */
        offset += qed_grc_dump_mem_hdr(p_hwfn,