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 " .
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;
}
#$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);
--- /dev/null
+/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
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)"
./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