[PATCH 11/13] nss_dns: In gaih_getanswer_slice, skip strange aliases (bug 12154)
Siddhesh Poyarekar
siddhesh@gotplt.org
Tue Aug 23 12:23:28 GMT 2022
On 2022-08-10 05:31, Florian Weimer via Libc-alpha wrote:
> If the name is not a host name, skip adding it to the result, instead
> of reporting query failure. This fixes bug 12154 for getaddrinfo.
>
> This commit still keeps the old parsing code, and only adjusts when
> a host name is copied.
> ---
> resolv/nss_dns/dns-host.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
LGTM.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
>
> diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
> index 0e7eef6889..809a269a7c 100644
> --- a/resolv/nss_dns/dns-host.c
> +++ b/resolv/nss_dns/dns-host.c
> @@ -970,12 +970,12 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
>
> n = -1;
> }
> - if (__glibc_unlikely (n < 0 || __libc_res_hnok (buffer) == 0))
> + if (__glibc_unlikely (n < 0))
> {
> ++had_error;
> continue;
> }
> - if (*firstp && canon == NULL)
> + if (*firstp && canon == NULL && __libc_res_hnok (buffer))
> {
> h_name = buffer;
> buffer += h_namelen;
> @@ -1021,14 +1021,14 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
>
> n = __libc_dn_expand (answer->buf, end_of_message, cp,
> tbuf, sizeof tbuf);
> - if (__glibc_unlikely (n < 0 || __libc_res_hnok (tbuf) == 0))
> + if (__glibc_unlikely (n < 0))
> {
> ++had_error;
> continue;
> }
> cp += n;
>
> - if (*firstp)
> + if (*firstp && __libc_res_hnok (tbuf))
> {
> /* Reclaim buffer space. */
> if (h_name + h_namelen == buffer)
More information about the Libc-alpha
mailing list