]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a test with an incorrect question in a continuation message
authorEvan Hunt <each@isc.org>
Mon, 30 Mar 2020 23:14:55 +0000 (16:14 -0700)
committerOndřej Surý <ondrej@isc.org>
Thu, 4 Jun 2020 14:10:41 +0000 (16:10 +0200)
bin/tests/system/ans.pl
bin/tests/system/xfer/ans5/wrongname [new file with mode: 0644]
bin/tests/system/xfer/tests.sh
util/copyrights

index 9d77eb45755587573ff0083472ee22de63656e9e..0f391a0d2f367f280a099e9221e4469ff8f4c1f2 100644 (file)
@@ -154,13 +154,13 @@ sub handleUDP {
        foreach $r (@rules) {
                my $pattern = $r->{pattern};
                my($dbtype, $key_name, $key_data) = split(/ /,$pattern);
-               print "[handleUDP] $dbtype, $key_name, $key_data \n";
+               print "[handleUDP] $dbtype, $key_name, $key_data\n";
                if ("$qname $qtype" =~ /$dbtype/) {
                        my $a;
                        foreach $a (@{$r->{answer}}) {
                                $packet->push("answer", $a);
                        }
-                       if(defined($key_name) && defined($key_data)) {
+                       if (defined($key_name) && defined($key_data)) {
                                my $tsig;
                                # Sign the packet
                                print "  Signing the response with " .
@@ -366,18 +366,18 @@ sub handleTCP {
        my $r;
        foreach $r (@rules) {
                my $pattern = $r->{pattern};
-               my($dbtype, $key_name, $key_data, $extra) = split(/ /,$pattern);
-               print "[handleTCP] $dbtype, $key_name, $key_data \n";
+               my($dbtype, $key_name, $key_data, $tname) = split(/ /,$pattern);
+               print "[handleTCP] $dbtype, $key_name, $key_data, $tname \n";
                if ("$qname $qtype" =~ /$dbtype/) {
                        $count_these++;
                        my $a;
                        foreach $a (@{$r->{answer}}) {
                                $packet->push("answer", $a);
                        }
-                       if(defined($key_name) && $key_name eq "bad-id") {
+                       if (defined($key_name) && $key_name eq "bad-id") {
                                $packet->header->id(($id+50)%0xffff);
                                $key_name = $key_data;
-                               $key_data = $extra;
+                               ($key_data, $tname) = split(/ /,$tname)
                        }
                        if (defined($key_name) && defined($key_data)) {
                                my $tsig;
@@ -446,7 +446,10 @@ sub handleTCP {
                        }
                        #$packet->print;
                        push(@results,$packet->data);
-                       $packet = new Net::DNS::Packet($qname, $qtype, $qclass);
+                       if ($tname eq "") {
+                               $tname = $qname;
+                       }
+                       $packet = new Net::DNS::Packet($tname, $qtype, $qclass);
                        $packet->header->qr(1);
                        $packet->header->aa(1);
                        $packet->header->id($id);
diff --git a/bin/tests/system/xfer/ans5/wrongname b/bin/tests/system/xfer/ans5/wrongname
new file mode 100644 (file)
index 0000000..346ac3d
--- /dev/null
@@ -0,0 +1,10 @@
+/SOA tsig_key LSAnCU+Z/
+nil.           300     SOA     ns.nil. root.nil. 1 300 300 604800 300
+/AXFR tsig_key LSAnCU+Z/
+nil.           300     SOA     ns.nil. root.nil. 1 300 300 604800 300
+/AXFR tsig_key LSAnCU+Z ns.wrong./
+nil.           300     NS      ns.nil.
+nil.           300     TXT     "wrong question AXFR"
+a.nil.         60      A       10.0.0.61
+/AXFR tsig_key LSAnCU+Z/
+nil.           300     SOA     ns.nil. root.nil. 1 300 300 604800 300
index 67cdfd1af47ecb62fe0d5de322257459b53a794c..9b853be55e162d3647874f63d93776d2ec6d9ccb 100755 (executable)
@@ -387,6 +387,25 @@ $DIGCMD nil. TXT | grep 'incorrect key AXFR' >/dev/null && {
     status=$((status+1))
 }
 
+n=$((n+1))
+echo_i "bad question section ($n)"
+
+sendcmd < ans5/wrongname
+
+$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
+
+sleep 2
+
+nextpart ns4/named.run | grep "question name mismatch" > /dev/null || {
+    echo_i "failed: expected status was not logged"
+    status=$((status+1))
+}
+
+$DIGCMD nil. TXT | grep 'wrong question AXFR' >/dev/null && {
+    echo_i "failed"
+    status=$((status+1))
+}
+
 n=$((n+1))
 echo_i "bad message id ($n)"
 
index 70cf2e35fd4255bbd96147b14bf31d6b3a8a8057..6ea48afacbcfdbe0527bd2e3d25fd3ad0f563bc5 100644 (file)
 ./bin/tests/system/xfer/ans5/unknownkey                X       2011,2018,2019,2020
 ./bin/tests/system/xfer/ans5/unsigned          X       2011,2018,2019,2020
 ./bin/tests/system/xfer/ans5/wrongkey          X       2011,2018,2019,2020
+./bin/tests/system/xfer/ans5/wrongname         X       2020
 ./bin/tests/system/xfer/axfr-stats.good                X       2019,2020
 ./bin/tests/system/xfer/clean.sh               SH      2000,2001,2004,2007,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/xfer/dig1.good              X       2000,2001,2003,2004,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020