summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2025-03-18 05:09:31 +0000
committerAndrew Clayton <a.clayton@nginx.com>2025-03-20 15:28:19 +0000
commitd9c2fd793fe1e8c8fbfd7aec9af3482fa5f0dacc (patch)
tree2b841403cc96ae6f936eda056f90574c4a44adbe
parent764ad73fc7e3cbbe48b259159340e063f7d7b082 (diff)
downloadunit-d9c2fd793fe1e8c8fbfd7aec9af3482fa5f0dacc.tar.gz
unit-d9c2fd793fe1e8c8fbfd7aec9af3482fa5f0dacc.tar.bz2
Tag various character arrays with NXT_NONSTRING
In Unit we have a number of character arrays which are intentionally not NUL terminated. With GCC 15 this static const char hex[16] = "0123456789ABCDEF"; will trigger a warning like $ gcc -Wextra -c nonstring.c nonstring.c: In function ‘hexit’: nonstring.c:9:37: warning: initializer-string for array of ‘char’ truncates NUL terminator but destination lacks ‘nonstring’ attribute (17 chars into 16 available) [-Wunterminated-string-initialization] 9 | static const char hex[16] = "0123456789ABCDEF"; | ^~~~~~~~~~~~~~~~~~ By adding NXT_NONSTRING like static const char hex[16] NXT_NONSTRING = "0123456789ABCDEF"; we no longer get the warning. Cc: Alejandro Colomar <alx@kernel.org> Co-authored-by: Alejandro Colomar <alx@kernel.org> Signed-off-by: Alejandro Colomar <alx@kernel.org> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
-rw-r--r--src/nxt_http_parse.c2
-rw-r--r--src/nxt_http_parse.h2
-rw-r--r--src/nxt_sprintf.c4
-rw-r--r--src/nxt_string.c4
4 files changed, 6 insertions, 6 deletions
diff --git a/src/nxt_http_parse.c b/src/nxt_http_parse.c
index dd490e72..3ae4d41c 100644
--- a/src/nxt_http_parse.c
+++ b/src/nxt_http_parse.c
@@ -516,7 +516,7 @@ nxt_http_parse_field_name(nxt_http_request_parse_t *rp, u_char **pos,
size_t len;
uint32_t hash;
- static const u_char normal[256] nxt_aligned(64) =
+ static const u_char normal[256] NXT_NONSTRING nxt_aligned(64) =
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
/* \s ! " # $ % & ' ( ) * + , . / : ; < = > ? */
"\0\1\0\1\1\1\1\1\0\0\1\1\0" "-" "\1\0" "0123456789" "\0\0\0\0\0\0"
diff --git a/src/nxt_http_parse.h b/src/nxt_http_parse.h
index 9e2f6fab..157dc47d 100644
--- a/src/nxt_http_parse.h
+++ b/src/nxt_http_parse.h
@@ -21,7 +21,7 @@ typedef struct nxt_http_fields_hash_s nxt_http_fields_hash_t;
typedef union {
- u_char str[8];
+ u_char str[8] NXT_NONSTRING;
uint64_t ui64;
struct {
diff --git a/src/nxt_sprintf.c b/src/nxt_sprintf.c
index 875f43a5..2e29e80e 100644
--- a/src/nxt_sprintf.c
+++ b/src/nxt_sprintf.c
@@ -112,8 +112,8 @@ nxt_vsprintf(u_char *buf, u_char *end, const char *fmt, va_list args)
nxt_sprintf_t spf;
nxt_file_name_t *fn;
- static const u_char hexadecimal[16] = "0123456789abcdef";
- static const u_char HEXADECIMAL[16] = "0123456789ABCDEF";
+ static const u_char hexadecimal[16] NXT_NONSTRING = "0123456789abcdef";
+ static const u_char HEXADECIMAL[16] NXT_NONSTRING = "0123456789ABCDEF";
static const u_char nan[] = "[nan]";
static const u_char null[] = "[null]";
static const u_char infinity[] = "[infinity]";
diff --git a/src/nxt_string.c b/src/nxt_string.c
index 1ca595a1..a23ee058 100644
--- a/src/nxt_string.c
+++ b/src/nxt_string.c
@@ -598,7 +598,7 @@ nxt_encode_uri(u_char *dst, u_char *src, size_t length)
u_char *end;
nxt_uint_t n;
- static const u_char hex[16] = "0123456789ABCDEF";
+ static const u_char hex[16] NXT_NONSTRING = "0123456789ABCDEF";
end = src + length;
@@ -644,7 +644,7 @@ nxt_encode_complex_uri(u_char *dst, u_char *src, size_t length)
u_char *reserved, *end, ch;
nxt_uint_t n;
- static const u_char hex[16] = "0123456789ABCDEF";
+ static const u_char hex[16] NXT_NONSTRING = "0123456789ABCDEF";
reserved = (u_char *) "?#\0";