From: Ondřej Surý Date: Fri, 31 Jul 2020 08:08:41 +0000 (+0200) Subject: Add PoC for assertion failure on large TCP DNS messages X-Git-Tag: v9.17.5~21^2 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=2c796bb9c8c00a74ce3cf811717cb33c98a726fc;p=thirdparty%2Fbind9.git Add PoC for assertion failure on large TCP DNS messages --- diff --git a/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt b/bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt new file mode 100644 index 00000000000..b723cef1d95 Binary files /dev/null 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 0f4deb8e37b..af92b95d744 100644 --- a/bin/tests/system/tcp/tests.sh +++ b/bin/tests/system/tcp/tests.sh @@ -183,5 +183,13 @@ grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi 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 +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)) + echo_i "exit status: $status" [ $status -eq 0 ] || exit 1 diff --git a/util/copyrights b/util/copyrights index 663e53a7df7..b27720e05ac 100644 --- a/util/copyrights +++ b/util/copyrights @@ -846,6 +846,7 @@ ./bin/tests/system/synthfromdnssec/ns1/sign.sh SH 2017,2018,2019,2020 ./bin/tests/system/synthfromdnssec/setup.sh SH 2017,2018,2019,2020 ./bin/tests/system/synthfromdnssec/tests.sh SH 2017,2018,2019,2020 +./bin/tests/system/tcp/1996-alloc_dnsbuf-crash-test.pkt X 2020 ./bin/tests/system/tcp/ans6/ans.py PYTHON 2019,2020 ./bin/tests/system/tcp/clean.sh SH 2014,2016,2018,2019,2020 ./bin/tests/system/tcp/setup.sh SH 2018,2019,2020