From: Mark Andrews Date: Tue, 12 Dec 2017 02:43:55 +0000 (+1100) Subject: 4845. [bug] Dig (non iOS) should exit on malformed names. X-Git-Tag: v9.12.1b1~168 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=940449fc72064deff9c626c731ef46e4caeea867;p=thirdparty%2Fbind9.git 4845. [bug] Dig (non iOS) should exit on malformed names. [RT #46806] --- diff --git a/CHANGES b/CHANGES index 3b04bffb3dc..f5b2ab8d134 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4845. [bug] Dig (non iOS) should exit on malformed names. + [RT #46806] + 4844. [test] Address memory leaks in libatf-c. [RT #46798] 4843. [bug] dnssec-signzone free hashlist on exit. [RT #46791] diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index dd562f376ae..ac2db2a020c 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -2203,6 +2203,8 @@ setup_lookup(dig_lookup_t *lookup) { #if TARGET_OS_IPHONE check_next_lookup(current_lookup); return (ISC_FALSE); +#else + digexit(); #endif } } diff --git a/bin/tests/system/digdelv/tests.sh b/bin/tests/system/digdelv/tests.sh index c2826c5ebb0..e02c82ad92b 100644 --- a/bin/tests/system/digdelv/tests.sh +++ b/bin/tests/system/digdelv/tests.sh @@ -471,6 +471,18 @@ if [ -x ${DIG} ] ; then if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` + n=`expr $n + 1` + echo "I:check that dig gracefully handles bad escape in domain name ($n)" + ret=0 + $DIG $DIGOPTS @10.53.0.3 '\0.' > dig.out.test$n 2>&1 + digstatus=$? + echo digstatus=$digstatus >> dig.out.test$n + test $digstatus -eq 10 || ret=1 + grep REQUIRE dig.out.test$n > /dev/null && ret=1 + grep "is not a legal name (bad escape)" dig.out.test$n > /dev/null || ret=1 + if [ $ret != 0 ]; then echo "I:failed"; fi + status=`expr $status + $ret` + else echo "$DIG is needed, so skipping these dig tests" fi