From 940449fc72064deff9c626c731ef46e4caeea867 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 12 Dec 2017 13:43:55 +1100 Subject: [PATCH] 4845. [bug] Dig (non iOS) should exit on malformed names. [RT #46806] --- CHANGES | 3 +++ bin/dig/dighost.c | 2 ++ bin/tests/system/digdelv/tests.sh | 12 ++++++++++++ 3 files changed, 17 insertions(+) diff --git a/CHANGES b/CHANGES index 3b04bffb3d..f5b2ab8d13 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 dd562f376a..ac2db2a020 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 c2826c5ebb..e02c82ad92 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