diff --git a/bin/tests/system/packet.pl b/bin/tests/system/packet.pl index 30500630ec..28d6a0987a 100644 --- a/bin/tests/system/packet.pl +++ b/bin/tests/system/packet.pl @@ -14,7 +14,7 @@ # the standard input, in the form of a series of bytes in hexadecimal. # Whitespace is ignored, as is anything following a '#' symbol. # -# For example, the following input would generate normal query for +# For example, the following input would generate normal query for # isc.org/NS/IN": # # # QID: @@ -31,7 +31,7 @@ # Note that we do not wait for a response for the server. This is simply # a way of injecting arbitrary packets to test server resposnes. # -# Usage: packet.pl [-a
] [-p ] [-t (udp|tcp)] [filename] +# Usage: packet.pl [-a
] [-p ] [-t (udp|tcp)] [-r ] [filename] # # If not specified, address defaults to 127.0.0.1, port to 53, protocol # to udp, and file to stdin. @@ -46,12 +46,12 @@ use IO::File; use IO::Socket; sub usage { - print ("Usage: packet.pl [-a address] [-p port] [-t (tcp|udp)] -d [file]\n"); + print ("Usage: packet.pl [-a address] [-p port] [-t (tcp|udp)] [-r ] [file]\n"); exit 1; } my %options={}; -getopts("a:dp:t:", \%options); +getopts("a:p:t:r:", \%options); my $addr = "127.0.0.1"; $addr = $options{a} if defined $options{a}; @@ -63,6 +63,9 @@ my $proto = "udp"; $proto = lc $options{t} if defined $options{t}; usage if ($proto !~ /^(udp|tcp)$/); +my $repeats = 1; +$repeats = $options{r} if defined $options{r}; + my $file = "STDIN"; if (@ARGV >= 1) { my $filename = shift @ARGV; @@ -82,52 +85,23 @@ my $data = pack("H*", $input); my $len = length $data; my $output = unpack("H*", $data); -print ("sending: $output\n"); +print ("sending $repeats time(s): $output\n"); my $sock = IO::Socket::INET->new(PeerAddr => $addr, PeerPort => $port, Proto => $proto,) or die "$!"; my $bytes; -if ($proto eq "udp") { - $bytes = $sock->send($data); -} else { - $bytes = $sock->syswrite(pack("n", $len), 2); - $bytes += $sock->syswrite($data, $len); +while ($repeats > 0) { + if ($proto eq "udp") { + $bytes = $sock->send($data); + } else { + $bytes = $sock->syswrite(pack("n", $len), 2); + $bytes += $sock->syswrite($data, $len); + } + + $repeats = $repeats - 1; } print ("sent $bytes bytes to $addr:$port\n"); -if (defined $options{d}) { - use Net::DNS; - use Net::DNS::Packet; - - my $rin; - my $rout; - $rin = ''; - vec($rin, fileno($sock), 1) = 1; - select($rout = $rin, undef, undef, 1); - if (vec($rout, fileno($sock), 1)) {{ - my $buf; - if ($proto eq "udp") { - $sock->recv($buf, 512); - } else { - my $n = $sock->sysread($buf, 2); - last unless $n == 2; - my $len = unpack("n", $buf); - $n = $sock->sysread($buf, $len); - last unless $n == $len; - } - - my $response; - if ($Net::DNS::VERSION > 0.68) { - $response = new Net::DNS::Packet(\$buf, 0); - $@ and die $@; - } else { - my $err; - ($response, $err) = new Net::DNS::Packet(\$buf, 0); - $err and die $err; - } - $response->print; - }} -} $sock->close; close $file; diff --git a/bin/tests/system/pkcs11/2037-pk11_numbits-crash-test.pkt b/bin/tests/system/pkcs11/2037-pk11_numbits-crash-test.pkt index 77d87f68ed..09b06f0739 100644 --- a/bin/tests/system/pkcs11/2037-pk11_numbits-crash-test.pkt +++ b/bin/tests/system/pkcs11/2037-pk11_numbits-crash-test.pkt @@ -1,20 +1,20 @@ -00000000: 0137 edda 2800 0001 0000 0001 0000 0972 .7..(..........r -00000010: 7361 7368 6132 3536 0765 7861 6d70 6c65 sasha256.example -00000020: 0000 0600 01c0 0c00 3000 0100 0001 2c01 ........0.....,. -00000030: 0801 0003 0803 0100 0100 0000 0000 0000 ................ -00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ -00000130: 0000 0000 0000 0000 00 ......... +edda 2800 0001 0000 0001 0000 0972 7361 +7368 6132 3536 0765 7861 6d70 6c65 0000 +0600 01c0 0c00 3000 0100 0001 2c01 0801 +0003 0803 0100 0100 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 0000 0000 0000 0000 0000 +0000 0000 0000 00 diff --git a/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt b/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt index b723cef1d9..7520c3a35f 100644 Binary files a/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt and b/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt differ diff --git a/bin/tests/system/tcp/tests.sh b/bin/tests/system/tcp/tests.sh index af92b95d74..20d72c610a 100644 --- a/bin/tests/system/tcp/tests.sh +++ b/bin/tests/system/tcp/tests.sh @@ -186,7 +186,7 @@ status=$((status + ret)) n=$((n + 1)) echo_i "checking that BIND 9 doesn't crash on long TCP messages ($n)" ret=0 -$PERL ../packet.pl -a "10.53.0.1" -p "${PORT}" -t udp 1996-alloc_dnsbuf-crash-test.pkt || ret=1 +$PERL ../packet.pl -a "10.53.0.1" -p "${PORT}" -t tcp -r 300000 1996-alloc_dnsbuf-crash-test.pkt || ret=1 dig_with_opts +tcp @10.53.0.1 txt.example > dig.out.test$n || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status + ret))