All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] cachefiles: Add __nonstring annotations for unterminated strings
@ 2025-03-12 20:08 Kees Cook
  0 siblings, 0 replies; only message in thread
From: Kees Cook @ 2025-03-12 20:08 UTC (permalink / raw)
  To: David Howells; +Cc: Kees Cook, netfs, linux-kernel, linux-hardening

When a character array without a terminating NUL character has a static
initializer, GCC 15's -Wunterminated-string-initialization will only
warn if the array lacks the "nonstring" attribute[1]. Mark the array
with __nonstring to correctly identify the char array as "not a C string"
and thereby eliminate the warning:

../fs/cachefiles/key.c:12:9: warning: initializer-string for array of 'char' truncates NUL terminator but destination lacks 'nonstring' attribute (65 chars into 64 available) [-Wunterminated-string-initialization]
   12 |         "0123456789"                    /* 0 - 9 */
      |         ^~~~~~~~~~~~

Since the array is used only for single character look-ups, use
__nonstring:

fs/cachefiles/key.c:123:                name[len++] = cachefiles_charmap[acc & 63];
fs/cachefiles/key.c:125:                name[len++] = cachefiles_charmap[acc & 63];
fs/cachefiles/key.c:127:                name[len++] = cachefiles_charmap[acc & 63];
fs/cachefiles/key.c:129:                name[len++] = cachefiles_charmap[acc & 63];

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117178 [1]
Signed-off-by: Kees Cook <kees@kernel.org>
---
 v2: improve commit log
 v1: https://lore.kernel.org/lkml/20250310222402.work.925-kees@kernel.org/
Cc: David Howells <dhowells@redhat.com>
Cc: netfs@lists.linux.dev
---
 fs/cachefiles/key.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/cachefiles/key.c b/fs/cachefiles/key.c
index bf935e25bdbe..b48525680e73 100644
--- a/fs/cachefiles/key.c
+++ b/fs/cachefiles/key.c
@@ -8,7 +8,7 @@
 #include <linux/slab.h>
 #include "internal.h"
 
-static const char cachefiles_charmap[64] =
+static const char cachefiles_charmap[64] __nonstring =
 	"0123456789"			/* 0 - 9 */
 	"abcdefghijklmnopqrstuvwxyz"	/* 10 - 35 */
 	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"	/* 36 - 61 */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2025-03-12 20:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 20:08 [PATCH v2] cachefiles: Add __nonstring annotations for unterminated strings Kees Cook

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.