]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nss_dns: Do not use deprecated packet parsing functions
authorFlorian Weimer <fweimer@redhat.com>
Thu, 15 Jul 2021 06:28:50 +0000 (08:28 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 15 Jul 2021 06:39:02 +0000 (08:39 +0200)
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
resolv/nss_dns/dns-canon.c
resolv/nss_dns/dns-host.c

index cb321a0650a1bb885bb1ddff424042ec72f3b95e..1cdc9a86c90e6584e7e3ac394b9241d98a440f1e 100644 (file)
@@ -150,15 +150,18 @@ _nss_dns_getcanonname_r (const char *name, char *buffer, size_t buflen,
              if (type != ns_t_cname)
                goto unavail;
 
-             if (__ns_get16 (ptr) != ns_c_in)
+             uint16_t rrclass;
+             NS_GET16 (rrclass, ptr);
+             if (rrclass != ns_c_in)
                goto unavail;
 
-             /* Also skip over class and TTL.  */
-             ptr += sizeof (uint16_t) + sizeof (uint32_t);
+             /* Skip over TTL.  */
+             ptr += sizeof (uint32_t);
 
              /* Skip over RDATA length and RDATA itself.  */
-             uint16_t rdatalen = __ns_get16 (ptr);
-             ptr += sizeof (uint16_t);
+             uint16_t rdatalen;
+             NS_GET16 (rdatalen, ptr);
+
              /* Not enough room for RDATA.  */
              if (endptr - ptr < rdatalen)
                goto unavail;
index 47e851db559e9f8020c383a45c36c8b487045a91..d6a69a602a68061b286aa7122496318b4e0fa2ee 100644 (file)
@@ -782,14 +782,11 @@ getanswer_r (struct resolv_context *ctx,
          continue;
        }
 
-      type = __ns_get16 (cp);
-      cp += INT16SZ;                   /* type */
-      class = __ns_get16 (cp);
-      cp += INT16SZ;                   /* class */
-      int32_t ttl = __ns_get32 (cp);
-      cp += INT32SZ;                   /* TTL */
-      n = __ns_get16 (cp);
-      cp += INT16SZ;                   /* len */
+      NS_GET16 (type, cp);
+      NS_GET16 (class, cp);
+      int32_t ttl;
+      NS_GET32 (ttl, cp);
+      NS_GET16 (n, cp);                /* RDATA length.  */
 
       if (end_of_message - cp < n)
        {
@@ -1116,14 +1113,13 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
          continue;
        }
 
-      int type = __ns_get16 (cp);
-      cp += INT16SZ;                   /* type */
-      int class = __ns_get16 (cp);
-      cp += INT16SZ;                   /* class */
-      int32_t ttl = __ns_get32 (cp);
-      cp += INT32SZ;                   /* TTL */
-      n = __ns_get16 (cp);
-      cp += INT16SZ;                   /* len */
+      uint16_t type;
+      NS_GET16 (type, cp);
+      uint16_t class;
+      NS_GET16 (class, cp);
+      int32_t ttl;
+      NS_GET32 (ttl, cp);
+      NS_GET16 (n, cp);                /* RDATA length.  */
 
       if (end_of_message - cp < n)
        {