From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 781593858427; Tue, 20 Sep 2022 11:07:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 781593858427 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663672059; bh=vftP+8Jh6jGTzOdrFeVZOpN/mfPblsgW6UrgJe+BthA=; h=From:To:Subject:Date:From; b=NSxQG3kshhWyQ0LfbFfRJpCP73kCDsCQZ6blZj68oLuOBhrYSxvgY3SzvTlofE+JT O0boNCY5YHIT1OrJm6p6CdrfxDo0tG6Aoh5K5BUpD936z9PGbQmCutfcoVKsZM3nc6 cPtwofPWoMhpcuUKa5FtCkIQR5KY2GvzTBTCUPgo= 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/release/2.35/master] nss_dns: In gaih_getanswer_slice, skip strange aliases (bug 12154) X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/release/2.35/master X-Git-Oldrev: ee74c14325a1d6577dd55cc314832d684ddecf68 X-Git-Newrev: 519e1b025113c338852933d71acfc9d163658cfe Message-Id: <20220920110739.781593858427@sourceware.org> Date: Tue, 20 Sep 2022 11:07:39 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=519e1b025113c338852933d71acfc9d163658cfe commit 519e1b025113c338852933d71acfc9d163658cfe Author: Florian Weimer Date: Tue Aug 30 10:02:49 2022 +0200 nss_dns: In gaih_getanswer_slice, skip strange aliases (bug 12154) 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 (cherry picked from commit 32b599ac8c21c4c332cc3900a792a1395bca79c7) Diff: --- resolv/nss_dns/dns-host.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index b1bdb3018b..484a6289d5 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -948,12 +948,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; @@ -999,14 +999,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)