]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a test for update-policy 'zonesub'
authorMark Andrews <marka@isc.org>
Tue, 4 Aug 2020 01:41:33 +0000 (11:41 +1000)
committerMichał Kępień <michal@isc.org>
Wed, 5 Aug 2020 13:55:06 +0000 (15:55 +0200)
The new test checks that 'update-policy zonesub' is properly enforced.

bin/tests/system/nsupdate/ns1/named.conf.in
bin/tests/system/nsupdate/tests.sh

index 53dbe569079c1b6e99b60da250b28b863668326f..346b6472fa6768bfa88eb791ec26ea1cac56aaa9 100644 (file)
@@ -42,6 +42,11 @@ key restricted.example.nil {
        secret "1234abcd8765";
 };
 
+key zonesub-key.example.nil {
+       algorithm hmac-md5;
+       secret "1234subk8765";
+};
+
 include "ddns.key";
 
 zone "example.nil" {
@@ -50,6 +55,7 @@ zone "example.nil" {
        check-integrity no;
        check-mx ignore;
        update-policy {
+               grant zonesub-key.example.nil zonesub TXT;
                grant ddns-key.example.nil subdomain example.nil ANY;
                grant restricted.example.nil subdomain restricted.example.nil ANY;
        };
index 89603e5bc2a977afbd791d9b47829e7cacd79a24..36ade49c76a5dd13b00db0b2ca79a08cf169e799 100755 (executable)
@@ -430,7 +430,7 @@ EOF
 # this also proves that the server is still running.
 $DIG $DIGOPTS +tcp +noadd +nosea +nostat +noquest +nocmd +norec example.\
        @10.53.0.3 nsec3param > dig.out.ns3.$n || ret=1
-grep "ANSWER: 0" dig.out.ns3.$n > /dev/null || ret=1
+grep "ANSWER: 0," dig.out.ns3.$n > /dev/null || ret=1
 grep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1
 [ $ret = 0 ] || { echo_i "failed"; status=1; }
 
@@ -445,7 +445,7 @@ EOF
 
 $DIG $DIGOPTS +tcp +noadd +nosea +nostat +noquest +nocmd +norec nsec3param.test.\
         @10.53.0.3 nsec3param > dig.out.ns3.$n || ret=1
-grep "ANSWER: 1" dig.out.ns3.$n > /dev/null || ret=1
+grep "ANSWER: 1," dig.out.ns3.$n > /dev/null || ret=1
 grep "3600.*NSEC3PARAM" dig.out.ns3.$n > /dev/null || ret=1
 grep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1
 [ $ret = 0 ] || { echo_i "failed"; status=1; }
@@ -462,7 +462,7 @@ EOF
 _ret=1
 for i in 0 1 2 3 4 5 6 7 8 9; do
        $DIG $DIGOPTS +tcp +norec +time=1 +tries=1 @10.53.0.3 nsec3param.test. NSEC3PARAM > dig.out.ns3.$n || _ret=1
-       if grep "ANSWER: 2" dig.out.ns3.$n > /dev/null; then
+       if grep "ANSWER: 2," dig.out.ns3.$n > /dev/null; then
                _ret=0
                break
        fi
@@ -487,7 +487,7 @@ EOF
 _ret=1
 for i in 0 1 2 3 4 5 6 7 8 9; do
        $DIG $DIGOPTS +tcp +norec +time=1 +tries=1 @10.53.0.3 nsec3param.test. NSEC3PARAM > dig.out.ns3.$n || _ret=1
-       if grep "ANSWER: 1" dig.out.ns3.$n > /dev/null; then
+       if grep "ANSWER: 1," dig.out.ns3.$n > /dev/null; then
                _ret=0
                break
        fi
@@ -665,6 +665,33 @@ $DIG $DIGOPTS +tcp @10.53.0.1 example.nil TXT > dig.out.2.test$n || ret=1
 grep "TXT.*everywhere" dig.out.2.test$n > /dev/null && ret=1
 [ $ret = 0 ] || { echo_i "failed"; status=1; }
 
+n=`expr $n + 1`
+ret=0
+echo_i "check that 'update-policy zonesub' is properly enforced ($n)"
+# grant zonesub-key.example.nil zonesub TXT;
+# the A record update should be rejected as it is not in the type list
+$NSUPDATE -d <<END > nsupdate.out1-$n 2>&1 && ret=1
+server 10.53.0.1 ${PORT}
+key zonesub-key.example.nil 1234subk8765
+update add zonesub.example.nil 0 IN A 1.2.3.4
+send
+END
+$DIG $DIGOPTS +tcp @10.53.0.1 zonesub.example.nil A > dig.out.1.test$n || ret=1
+grep "status: REFUSED" nsupdate.out1-$n > /dev/null || ret=1
+grep "ANSWER: 0," dig.out.1.test$n > /dev/null || ret=1
+# the TXT record update should be accepted as it is in the type list
+$NSUPDATE -d <<END > nsupdate.out2-$n 2>&1 || ret=1
+server 10.53.0.1 ${PORT}
+key zonesub-key.example.nil 1234subk8765
+update add zonesub.example.nil 0 IN TXT everywhere.
+send
+END
+$DIG $DIGOPTS +tcp @10.53.0.1 zonesub.example.nil TXT > dig.out.2.test$n || ret=1
+grep "status: REFUSED" nsupdate.out2-$n > /dev/null && ret=1
+grep "ANSWER: 1," dig.out.2.test$n > /dev/null || ret=1
+grep "TXT.*everywhere" dig.out.2.test$n > /dev/null || ret=1
+[ $ret = 0 ] || { echo_i "failed"; status=1; }
+
 n=`expr $n + 1`
 ret=0
 echo_i "check that changes to the DNSKEY RRset TTL do not have side effects ($n)"