]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3051. [bug] NS records obsure DS records at the bottom of the
authorMark Andrews <marka@isc.org>
Wed, 2 Mar 2011 04:41:36 +0000 (04:41 +0000)
committerMark Andrews <marka@isc.org>
Wed, 2 Mar 2011 04:41:36 +0000 (04:41 +0000)
                        zone if both are present. [RT #23035]

CHANGES
bin/tests/system/checkzone/clean.sh [new file with mode: 0644]
bin/tests/system/checkzone/tests.sh [new file with mode: 0644]
bin/tests/system/checkzone/zones/good1.db [new file with mode: 0644]
bin/tests/system/conf.sh.in
bin/tests/system/testsock.pl
lib/dns/rbtdb.c

diff --git a/CHANGES b/CHANGES
index 83b504ddef0b846c358672b6614393c198d87b78..7b1fb70998be921b5e61751a2d54c55277e5add5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3051.  [bug]           NS records obsure DS records at the bottom of the
+                       zone if both are present. [RT #23035]
+
 3041.  [bug]           dnssec-signzone failed to generate new signatures on
                        ttl changes. [RT #23330]
 
diff --git a/bin/tests/system/checkzone/clean.sh b/bin/tests/system/checkzone/clean.sh
new file mode 100644 (file)
index 0000000..9d4071c
--- /dev/null
@@ -0,0 +1,17 @@
+# Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# $Id: clean.sh,v 1.2.8.2 2011/03/02 04:41:35 marka Exp $
+
+rm -f test.out.*
diff --git a/bin/tests/system/checkzone/tests.sh b/bin/tests/system/checkzone/tests.sh
new file mode 100644 (file)
index 0000000..c960f03
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# $Id: tests.sh,v 1.2.8.2 2011/03/02 04:41:35 marka Exp $
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+status=0
+n=1
+
+for db in zones/good*.db
+do
+       echo "I:checking $db ($n)"
+       ret=0
+       $CHECKZONE example $db > test.out.$n 2>&1 || ret=1
+       n=`expr $n + 1`
+       if [ $ret != 0 ]; then echo "I:failed"; fi
+       status=`expr $status + $ret`
+done
+
+exit $status
diff --git a/bin/tests/system/checkzone/zones/good1.db b/bin/tests/system/checkzone/zones/good1.db
new file mode 100644 (file)
index 0000000..5646c0f
--- /dev/null
@@ -0,0 +1,25 @@
+; Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
+;
+; Permission to use, copy, modify, and/or distribute this software for any
+; purpose with or without fee is hereby granted, provided that the above
+; copyright notice and this permission notice appear in all copies.
+;
+; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+; AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+; PERFORMANCE OF THIS SOFTWARE.
+
+; $Id: good1.db,v 1.2.8.2 2011/03/02 04:41:36 marka Exp $
+
+
+$TTL 600
+@              SOA     ns hostmaster 2011012708 3600 1200 604800 1200
+                NS      ns
+ns             A       192.0.2.1
+
+ns-and-dname   NS      ns.ns-and-dname
+               DNAME   example.com.
+ns.ns-and-dname        A       203.178.141.207
index c41392f2de2dae7294609a3f9759120cdc317fc3..f7a87a343da9fd193461a5d75d7efc85ccb3999c 100644 (file)
@@ -15,7 +15,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: conf.sh.in,v 1.27.18.14 2010/06/04 23:46:02 tbox Exp $
+# $Id: conf.sh.in,v 1.27.18.15 2011/03/02 04:41:35 marka Exp $
 
 #
 # Common configuration data for system tests, to be sourced into
@@ -43,10 +43,10 @@ CHECKCONF=$TOP/bin/check/named-checkconf
 # The "stress" test is not run by default since it creates enough
 # load on the machine to make it unusable to other users.
 # v6synth
-SUBDIRS="acl cacheclean checkconf checknames dlv dnssec forward glue ixfr
-    limits lwresd masterfile masterformat notify nsupdate pending
-    resolver rrsetorder sortlist stub tkey unknown upforwd views
-    xfer xferquota zonechecks"
+SUBDIRS="acl cacheclean checkconf checknames checkzone dlv dnssec forward
+        glue ixfr limits lwresd masterfile masterformat notify nsupdate
+        pending resolver rrsetorder sortlist stub tkey unknown upforwd
+        views xfer xferquota zonechecks"
 
 # PERL will be an empty string if no perl interpreter was found.
 PERL=@PERL@
index d4373de5bb4cf755ce5b06b57fbb1d47b84957e2..b7dfeff2bbd436d602bc822e8b759aba162fc51a 100644 (file)
@@ -15,7 +15,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: testsock.pl,v 1.14.18.2 2010/08/17 23:45:18 tbox Exp $
+# $Id: testsock.pl,v 1.14.18.3 2011/03/02 04:41:35 marka Exp $
 
 # Test whether the interfaces on 10.53.0.* are up.
 
@@ -47,5 +47,4 @@ foreach $id (@ids) {
                or die sprintf("$0: bind(%s, %d): $!\n",
                               inet_ntoa($addr), $port);
        close(SOCK);
-       sleep(1);
 }
index 0aafb9ffb14f3e4a5896696dbb85188fc4755c19..4160ecca108c3969dd9f0eb86733aa1ddfe464e5 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: rbtdb.c,v 1.196.18.64 2010/11/17 10:21:01 marka Exp $ */
+/* $Id: rbtdb.c,v 1.196.18.65 2011/03/02 04:41:34 marka Exp $ */
 
 /*! \file */
 
@@ -1779,10 +1779,15 @@ zone_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) {
        /*
         * Did we find anything?
         */
-       if (dname_header != NULL) {
+       if (!IS_CACHE(search->rbtdb) && !IS_STUB(search->rbtdb) &&
+           ns_header != NULL) {
                /*
-                * Note that DNAME has precedence over NS if both exist.
+                * Note that NS has precedence over DNAME if both exist
+                * in a zone.  Otherwise DNAME take precedence over NS.
                 */
+               found = ns_header;
+               search->zonecut_sigrdataset = NULL;
+       } else if (dname_header != NULL) {
                found = dname_header;
                search->zonecut_sigrdataset = sigdname_header;
        } else if (ns_header != NULL) {