From: W.C.A. Wijngaards Date: Thu, 19 Sep 2019 14:29:51 +0000 (+0200) Subject: - Fix wrong response ttl for prepended short CNAME ttls, this would X-Git-Tag: release-1.9.6rc1~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f0b260c49516450ed9a35d3c160c202a7bd223c;p=thirdparty%2Funbound.git - Fix wrong response ttl for prepended short CNAME ttls, this would create a wrong zero_ttl response count with serve-expired enabled. --- diff --git a/doc/Changelog b/doc/Changelog index 8c7562dab..347b46536 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ - oss-fuzz badge on README.md. - Fix fix for #78 to also free service callback struct. - Fix for oss-fuzz build warning. + - Fix wrong response ttl for prepended short CNAME ttls, this would + create a wrong zero_ttl response count with serve-expired enabled. 11 September 2019: Wouter - Use explicit bzero for wiping clear buffer of hash in cachedb, diff --git a/iterator/iterator.c b/iterator/iterator.c index c906c2714..1e0113a87 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -409,6 +409,8 @@ iter_prepend(struct iter_qstate* iq, struct dns_msg* msg, num_an = 0; for(p = iq->an_prepend_list; p; p = p->next) { sets[num_an++] = p->rrset; + if(ub_packed_rrset_ttl(p->rrset) < msg->rep->ttl) + msg->rep->ttl = ub_packed_rrset_ttl(p->rrset); } memcpy(sets+num_an, msg->rep->rrsets, msg->rep->an_numrrsets * sizeof(struct ub_packed_rrset_key*)); @@ -421,6 +423,8 @@ iter_prepend(struct iter_qstate* iq, struct dns_msg* msg, msg->rep->ns_numrrsets, p->rrset)) continue; sets[msg->rep->an_numrrsets + num_an + num_ns++] = p->rrset; + if(ub_packed_rrset_ttl(p->rrset) < msg->rep->ttl) + msg->rep->ttl = ub_packed_rrset_ttl(p->rrset); } memcpy(sets + num_an + msg->rep->an_numrrsets + num_ns, msg->rep->rrsets + msg->rep->an_numrrsets,