From: Evan Hunt Date: Tue, 24 Jul 2018 17:18:58 +0000 (-0700) Subject: caclulate nlabels and set *chainingp correctly X-Git-Tag: v9.13.3~72^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f907b8beee81ef30f10ff9143555daf4445e122;p=thirdparty%2Fbind9.git caclulate nlabels and set *chainingp correctly --- diff --git a/bin/tests/system/resolver/tests.sh b/bin/tests/system/resolver/tests.sh index 73066a881eb..12d2819e300 100755 --- a/bin/tests/system/resolver/tests.sh +++ b/bin/tests/system/resolver/tests.sh @@ -204,6 +204,7 @@ n=`expr $n + 1` echo_i "checking DNAME target filtering (deny) ($n)" ret=0 $DIG $DIGOPTS +tcp foo.baddname.example.net @10.53.0.1 a > dig.out.ns1.test${n} || ret=1 +grep "DNAME target foo.baddname.example.org denied for foo.baddname.example.net/IN" ns1/named.run >/dev/null || ret=1 grep "status: SERVFAIL" dig.out.ns1.test${n} > /dev/null || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index db539c5d8be..0aca23253e7 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -6640,13 +6640,14 @@ is_answertarget_allowed(fetchctx_t *fctx, dns_name_t *qname, dns_name_t *rname, RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_name_init(&prefix, NULL); tname = dns_fixedname_initname(&fixed); - nlabels = dns_name_countlabels(qname) - - dns_name_countlabels(rname); - INSIST(nlabels > 0); + nlabels = dns_name_countlabels(rname); dns_name_split(qname, nlabels, &prefix, NULL); result = dns_name_concatenate(&prefix, &dname.dname, tname, NULL); if (result == DNS_R_NAMETOOLONG) { + if (chainingp != NULL) { + *chainingp = true; + } return (true); } RUNTIME_CHECK(result == ISC_R_SUCCESS);