]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Make ANSWER TTL capping checks stricter
authorMichał Kępień <michal@isc.org>
Mon, 11 Mar 2019 11:04:42 +0000 (12:04 +0100)
committerMichał Kępień <michal@isc.org>
Mon, 11 Mar 2019 11:23:27 +0000 (12:23 +0100)
For checks querying a named instance with "dnssec-accept-expired yes;"
set, authoritative responses have a TTL of 300 seconds.  Assuming empty
resolver cache, TTLs of RRsets in the ANSWER section of the first
response to a given query will always match their authoritative
counterparts.  Also note that for a DNSSEC-validating named resolver,
validated RRsets replace any existing non-validated RRsets with the same
owner name and type, e.g. cached from responses received while resolving
CD=1 queries.  Since TTL capping happens before a validated RRset is
inserted into the cache and RRSIG expiry time does not impose an upper
TTL bound when "dnssec-accept-expired yes;" is set and, as pointed out
above, the original TTLs of the relevant RRsets equal 300 seconds, the
RRsets in the ANSWER section of the responses to expiring.example/SOA
and expired.example/SOA queries sent with CD=0 should always be exactly
120 seconds, never a lower value.  Make the relevant TTL checks stricter
to reflect that.

(cherry picked from commit a85cc41486d94d6c5e5116c63fa7ef1c9fd58925)

bin/tests/system/dnssec/tests.sh

index 02adabb24b7c27e232d169c910e1efa426ebabcc..5fa3a5ce2e90add6061ec3a5c2df80d58365305c 100644 (file)
@@ -2830,7 +2830,7 @@ for ttl in ${ttls:-0}; do
     [ $ttl -eq 300 ] || ret=1
 done
 for ttl in ${ttls2:-0}; do
-    [ $ttl -le 120 -a $ttl -gt 60 ] || ret=1
+    [ "$ttl" -eq 120 ] || ret=1
 done
 n=`expr $n + 1`
 if [ $ret != 0 ]; then echo_i "failed"; fi
@@ -2846,7 +2846,7 @@ for ttl in ${ttls:-0}; do
     [ $ttl -eq 300 ] || ret=1
 done
 for ttl in ${ttls2:-0}; do
-    [ $ttl -le 120 -a $ttl -gt 60 ] || ret=1
+    [ "$ttl" -eq 120 ] || ret=1
 done
 n=`expr $n + 1`
 if [ $ret != 0 ]; then echo_i "failed"; fi