[PATCH gnupg] Fix gcc -Wunterminated-string-initialization warnings.

Jacob Bachmeyer jcb62281 at gmail.com
Thu May 1 04:08:59 CEST 2025


On 4/29/25 23:01, Collin Funk via Gnupg-devel wrote:
> * 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.

The patch as written breaks compatibility with GCC < GCC8 and with other 
compilers because it neglects to define the new macros with empty 
expansions on older or non-GCC compilers.

> [...]
> 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
> [...]
> 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
> [...]


-- Jacob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnupg-devel/attachments/20250430/0f7d15b1/attachment-0001.html>


More information about the Gnupg-devel mailing list