| From: Arnd Bergmann <arnd@arndb.de> |
| Subject: test_hexdump: avoid string truncation warning |
| Date: Tue, 9 Apr 2024 16:00:54 +0200 |
| |
| gcc can warn when a string is too long to fit into the strncpy() |
| destination buffer, as it is here depending on the function arguments: |
| |
| inlined from 'test_hexdump_prepare_test.constprop' at /home/arnd/arm-soc/lib/test_hexdump.c:116:3: |
| include/linux/fortify-string.h:108:33: error: '__builtin_strncpy' output truncated copying between 0 and 32 bytes from a string of length 32 [-Werror=stringop-truncation] |
| 108 | #define __underlying_strncpy __builtin_strncpy |
| | ^ |
| include/linux/fortify-string.h:187:16: note: in expansion of macro '__underlying_strncpy' |
| 187 | return __underlying_strncpy(p, q, size); |
| | ^~~~~~~~~~~~~~~~~~~~ |
| |
| The intention here is to copy exactly 'l' bytes without any padding or |
| NUL-termination, so the most logical change is to use memcpy(), just as |
| a previous change adapted the other output from strncpy() to memcpy(). |
| |
| Link: https://lkml.kernel.org/r/20240409140059.3806717-2-arnd@kernel.org |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Acked-by: Justin Stitt <justinstitt@google.com> |
| Cc: Alexey Starikovskiy <astarikovskiy@suse.de> |
| Cc: Bob Moore <robert.moore@intel.com> |
| Cc: Jens Axboe <axboe@kernel.dk> |
| Cc: Len Brown <lenb@kernel.org> |
| Cc: Lin Ming <ming.m.lin@intel.com> |
| Cc: Masahiro Yamada <masahiroy@kernel.org> |
| Cc: Masami Hiramatsu <mhiramat@kernel.org> |
| Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| Cc: Nicolas Schier <nicolas@fjasle.eu> |
| Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Cc: "Richard Russon (FlatCap)" <ldm@flatcap.org> |
| Cc: Steven Rostedt <rostedt@goodmis.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| lib/test_hexdump.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/lib/test_hexdump.c~test_hexdump-avoid-string-truncation-warning |
| +++ a/lib/test_hexdump.c |
| @@ -113,7 +113,7 @@ static void __init test_hexdump_prepare_ |
| *p++ = ' '; |
| } while (p < test + rs * 2 + rs / gs + 1); |
| |
| - strncpy(p, data_a, l); |
| + memcpy(p, data_a, l); |
| p += l; |
| } |
| |
| _ |