[PATCH 2.42 4/7] resolv: Check for inet_ntop failure in ns_sprintrrf
Jaipaul Cheernam <[email protected]> Mon, 3 Aug 2026 16:23:24 +0200
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
From: Florian Weimer <[email protected]> This makes the output more consistent (either failure or complete output) and helps with systematic testing with varying buffer sizes. Reviewed-by: Carlos O'Donell <[email protected]> Reviewed-by: Adhemerval Zanella <[email protected]> (cherry picked from commit cd0db208d56a2cecd528b8ae96df752ba5344d9a) Signed-off-by: Jaipaul Cheernam <[email protected]> --- 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; 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; 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; 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; addlen(strlen(buf), &buf, &buflen); rdata += sizeof(a) - pbyte; }