From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28640 invoked by alias); 24 Nov 2010 15:05:11 -0000 Received: (qmail 28543 invoked by uid 22791); 24 Nov 2010 15:05:11 -0000 X-SWARE-Spam-Status: No, hits=-6.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 24 Nov 2010 15:05:06 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oAOF54dU017532 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 24 Nov 2010 10:05:04 -0500 Received: from hase (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oAOF52nW028464 for ; Wed, 24 Nov 2010 10:05:03 -0500 From: Andreas Schwab To: libc-hacker@sourceware.org Subject: [PATCH] Don't ignore zero TTL in DNS answers X-Yow: It's the RINSE CYCLE!! They've ALL IGNORED the RINSE CYCLE!! Date: Wed, 24 Nov 2010 15:05:00 -0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact libc-hacker-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sourceware.org X-SW-Source: 2010-11/txt/msg00000.txt.bz2 2010-11-24 Andreas Schwab * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0 specially. (gaih_getanswer_slice): Likewise. --- resolv/nss_dns/dns-host.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index 19f6dab..9cd2641 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -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 */ @@ -916,7 +915,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; @@ -1177,7 +1176,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname, ++had_error; continue; } - if (ttl != 0 && ttlp != NULL) + if (ttlp != NULL) *ttlp = ttl; (*pat)->name = canon ?: h_name; -- 1.7.2.3 -- Andreas Schwab, schwab@redhat.com GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E "And now for something completely different."