]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4845. [bug] Dig (non iOS) should exit on malformed names.
authorMark Andrews <marka@isc.org>
Tue, 12 Dec 2017 02:43:55 +0000 (13:43 +1100)
committerMark Andrews <marka@isc.org>
Tue, 12 Dec 2017 02:43:55 +0000 (13:43 +1100)
                        [RT #46806]

CHANGES
bin/dig/dighost.c
bin/tests/system/digdelv/tests.sh

diff --git a/CHANGES b/CHANGES
index 3b04bffb3dcf2c9e14330f664b07e9b58472ba25..f5b2ab8d13415c60752b58388759ba1b490d8748 100644 (file)
--- 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]
index dd562f376ae5af20ddca107c4a1c105b4016cf52..ac2db2a020cb07f54ed79e18eed2ea965d6f5f1b 100644 (file)
@@ -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
                }
        }
index c2826c5ebb05b141e9875c3b6b6f665c0a60534d..e02c82ad92b5be4a63c144ca03bf6ac54a922d27 100644 (file)
@@ -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