[PATCH v2 5/8] resolv: Check for inet_ntop failure in ns_sprintrrf

Carlos O'Donell carlos@redhat.com
Wed Jun 17 19:46:36 GMT 2026


On 6/16/26 12:31 PM, Florian Weimer wrote:
> This makes the output more consistent (either failure or complete
> output) and helps with systematic testing with varying buffer
> sizes.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>   resolv/ns_print.c | 18 +++++++++++-------
>   1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/resolv/ns_print.c b/resolv/ns_print.c
> index 3d38876483..e58df5f35a 100644
> --- a/resolv/ns_print.c
> +++ b/resolv/ns_print.c
> @@ -167,8 +167,9 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
>   	switch (type) {
>   	case ns_t_a:
>   	  if (rdlen != (size_t)NS_INADDRSZ)
> -			goto formerr;
> -		(void) inet_ntop(AF_INET, rdata, buf, buflen);
> +		  goto formerr;
> +		if (inet_ntop (AF_INET, rdata, buf, buflen) == NULL)
> +		  return -1;

OK. Check return.

>   		addlen(strlen(buf), &buf, &buflen);
>   		break;
>   
> @@ -334,9 +335,10 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
>   	    }
>   
>   	case ns_t_aaaa:
> -	  if (rdlen != (size_t)NS_IN6ADDRSZ)
> -			goto formerr;
> -		(void) inet_ntop(AF_INET6, rdata, buf, buflen);
> +		if (rdlen != (size_t)NS_IN6ADDRSZ)
> +		  goto formerr;
> +		if (inet_ntop (AF_INET6, rdata, buf, buflen) == NULL)
> +		  return -1;

OK. Likewise.

>   		addlen(strlen(buf), &buf, &buflen);
>   		break;
>   
> @@ -427,7 +429,8 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
>   			goto formerr;
>   
>   		/* Address. */
> -		(void) inet_ntop(AF_INET, rdata, buf, buflen);
> +		if (inet_ntop (AF_INET, rdata, buf, buflen) == NULL)
> +		  return -1;

OK. Likewise.

>   		addlen(strlen(buf), &buf, &buflen);
>   		rdata += NS_INADDRSZ;
>   
> @@ -569,7 +572,8 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
>   			if (rdata + pbyte >= edata) goto formerr;
>   			memset(&a, 0, sizeof(a));
>   			memcpy(&a.s6_addr[pbyte], rdata, sizeof(a) - pbyte);
> -			(void) inet_ntop(AF_INET6, &a, buf, buflen);
> +			if (inet_ntop (AF_INET6, &a, buf, buflen) == NULL)
> +			  return -1;

OK. Likewise.

>   			addlen(strlen(buf), &buf, &buflen);
>   			rdata += sizeof(a) - pbyte;
>   		}


-- 
Cheers,
Carlos.



More information about the Libc-alpha mailing list