On Mon, Apr 08, 2024 at 09:48:11PM +0200, Arnd Bergmann wrote:
From: Arnd Bergmann arnd@arndb.de
gcc-10 warns about a strncpy() that does not enforce zero-termination:
In file included from include/linux/string.h:369, from drivers/staging/greybus/fw-management.c:9: In function 'strncpy', inlined from 'fw_mgmt_backend_fw_update_operation' at drivers/staging/greybus/fw-management.c:306:2: include/linux/fortify-string.h:108:30: error: '__builtin_strncpy' specified bound 10 equals destination size [-Werror=stringop-truncation] 108 | #define __underlying_strncpy __builtin_strncpy | ^ include/linux/fortify-string.h:187:9: note: in expansion of macro '__underlying_strncpy' 187 | return __underlying_strncpy(p, q, size); | ^~~~~~~~~~~~~~~~~~~~
For some reason, I cannot reproduce this with gcc-9 or gcc-11, and I only get a warning for one of the four related strncpy()s, so I'm not sure what's going on.
Change all four to strscpy_pad(), which is the safest replacement here, as it avoids ending up with uninitialized stack data in the tag name.
Signed-off-by: Arnd Bergmann arnd@arndb.de
v2
- use strscpy_pad()
- use two-argument form
- change all four instances, not just the one that produced the warning
Reviewed-by: Dan Carpenter dan.carpenter@linaro.org
regards, dan carpenter