From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 2602A3AA9821; Thu, 15 Jul 2021 08:10:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2602A3AA9821 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Florian Weimer To: glibc-cvs@sourceware.org Subject: [glibc] nss_dns: Do not use deprecated packet parsing functions X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/master X-Git-Oldrev: 389c1114d122d78fcf2d4d08ffd6335853c8adef X-Git-Newrev: 2ff32dd4926c7ec3bb6c09b58a12a8e828a4cc58 Message-Id: <20210715081020.2602A3AA9821@sourceware.org> Date: Thu, 15 Jul 2021 08:10:20 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jul 2021 08:10:20 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2ff32dd4926c7ec3bb6c09b58a12a8e828a4cc58 commit 2ff32dd4926c7ec3bb6c09b58a12a8e828a4cc58 Author: Florian Weimer Date: Thu Jul 15 08:28:50 2021 +0200 nss_dns: Do not use deprecated packet parsing functions Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell Diff: --- resolv/nss_dns/dns-canon.c | 13 ++++++++----- resolv/nss_dns/dns-host.c | 28 ++++++++++++---------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/resolv/nss_dns/dns-canon.c b/resolv/nss_dns/dns-canon.c index cb321a0650..1cdc9a86c9 100644 --- a/resolv/nss_dns/dns-canon.c +++ b/resolv/nss_dns/dns-canon.c @@ -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; diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index 47e851db55..d6a69a602a 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -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) {