]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Don't ignore zero TTL in DNS answers
authorAndreas Schwab <schwab@redhat.com>
Fri, 26 Nov 2010 01:50:16 +0000 (20:50 -0500)
committerUlrich Drepper <drepper@gmail.com>
Fri, 26 Nov 2010 01:50:16 +0000 (20:50 -0500)
ChangeLog
resolv/nss_dns/dns-host.c

index b189baa02bfe3317152fa45f2223c7fb9d674be8..c253bf19e931aabc49321d8e812ff515cb694217 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-24  Andreas Schwab  <schwab@redhat.com>
+
+       * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0
+       specially.
+       (gaih_getanswer_slice): Likewise.
+
 2010-10-20  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Fix up inline asm.
index 8592183f62ac64abb6598c5d48d5fa133103d3be..fe4ac2d793fe12ec6720f29e1a32dfa6425f8475 100644 (file)
@@ -599,7 +599,6 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
   int (*name_ok) (const char *);
   u_char packtmp[NS_MAXCDNAME];
   int have_to_map = 0;
-  int32_t ttl = 0;
   uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data);
   buffer += pad;
   if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0))
@@ -733,7 +732,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
       cp += INT16SZ;                   /* type */
       class = __ns_get16 (cp);
       cp += INT16SZ;                   /* class */
-      ttl = __ns_get32 (cp);
+      int32_t ttl = __ns_get32 (cp);
       cp += INT32SZ;                   /* TTL */
       n = __ns_get16 (cp);
       cp += INT16SZ;                   /* len */
@@ -907,7 +906,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
            {
              register int nn;
 
-             if (ttlp != NULL && ttl != 0)
+             if (ttlp != NULL)
                *ttlp = ttl;
              if (canonp != NULL)
                *canonp = bp;
@@ -1163,7 +1162,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
 
       if (*firstp)
        {
-         if (ttl != 0 && ttlp != NULL)
+         if (ttlp != NULL)
            *ttlp = ttl;
 
          (*pat)->name = canon ?: h_name;