]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nss_dns: In gaih_getanswer_slice, skip strange aliases (bug 12154)
authorFlorian Weimer <fweimer@redhat.com>
Tue, 30 Aug 2022 08:02:49 +0000 (10:02 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 30 Aug 2022 08:02:49 +0000 (10:02 +0200)
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.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
resolv/nss_dns/dns-host.c

index b887e77e9cc13c6babbfe6284bb9664602c23429..bea505d69724658d571bea719977d09ea674096e 100644 (file)
@@ -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)