[PATCH gnupg] Fix gcc -Wunterminated-string-initialization warnings.
Collin Funk
collin.funk1 at gmail.com
Wed Apr 30 06:01:44 CEST 2025
* common/ksba-io-support.c (ATTR_NONSTRING): New macro.
(bintoasc): Mark with ATTR_NONSTRING.
(has_only_base64): Use memchr since calling strchr on a non-NUL
terminated string is undefined behavior.
* dirmngr/dns.c (DNS_NONSTRING): New macro.
(dns_aaaa_arpa, dns_sshfp_print): Mark a variable with DNS_NONSTRING.
--
GnuPG-bug-id: 7629
Signed-off-by: Collin Funk <collin.funk1 at gmail.com>
---
common/ksba-io-support.c | 7 +++++--
dirmngr/dns.c | 7 +++++--
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/common/ksba-io-support.c b/common/ksba-io-support.c
index 352485ffa..10419ab20 100644
--- a/common/ksba-io-support.c
+++ b/common/ksba-io-support.c
@@ -51,6 +51,9 @@
#define LF "\n"
#endif
+#if __GNUC__ >= 8
+# define ATTR_NONSTRING __attribute__ ((__nonstring__))
+#endif
/* Data used by the reader callbacks. */
struct reader_cb_parm_s
@@ -134,7 +137,7 @@ struct gnupg_ksba_io_s {
/* The base-64 character list */
-static char bintoasc[64] =
+static char bintoasc[64] ATTR_NONSTRING =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
@@ -174,7 +177,7 @@ has_only_base64 (const unsigned char *line, int linelen)
{
if (*line == '\n' || (linelen > 1 && *line == '\r' && line[1] == '\n'))
break;
- if ( !strchr (bintoasc, *line) )
+ if ( !memchr (bintoasc, *line, sizeof (bintoasc)) )
return 0;
}
return 1; /* yes */
diff --git a/dirmngr/dns.c b/dirmngr/dns.c
index 5c7bb08d8..bfab59f13 100644
--- a/dirmngr/dns.c
+++ b/dirmngr/dns.c
@@ -131,6 +131,9 @@ typedef int socket_fd_t;
#if __GNUC__
#define DNS_NOTUSED __attribute__((unused))
#define DNS_NORETURN __attribute__((__noreturn__))
+#if __GNUC__ >= 8
+#define DNS_NONSTRING __attribute__((__nonstring__))
+#endif
#else
#define DNS_NOTUSED
#define DNS_NORETURN
@@ -3441,7 +3444,7 @@ static int dns_aaaa_cmp0(const void *a, const void *b) {
}
size_t dns_aaaa_arpa(void *_dst, size_t lim, const struct dns_aaaa *aaaa) {
- static const unsigned char hex[16] = "0123456789abcdef";
+ static const unsigned char hex[16] DNS_NONSTRING = "0123456789abcdef";
struct dns_buf dst = DNS_B_INTO(_dst, lim);
unsigned nyble;
int i, j;
@@ -4222,7 +4225,7 @@ static int dns_sshfp_cmp0(const void *a, const void *b) {
size_t dns_sshfp_print(void *_dst, size_t lim, struct dns_sshfp *fp) {
- static const unsigned char hex[16] = "0123456789abcdef";
+ static const unsigned char hex[16] DNS_NONSTRING = "0123456789abcdef";
struct dns_buf dst = DNS_B_INTO(_dst, lim);
size_t i;
--
2.49.0
More information about the Gnupg-devel
mailing list