]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] fix root-delegation-only without exclude
authorEvan Hunt <each@isc.org>
Mon, 4 May 2015 19:44:10 +0000 (12:44 -0700)
committerEvan Hunt <each@isc.org>
Mon, 4 May 2015 19:44:10 +0000 (12:44 -0700)
4112. [bug] Named failed to load when "root-delegation-only"
was used without a list of domains to exclude.
[RT #39380]

CHANGES
bin/named/server.c
bin/tests/system/resolver/ns4/named.conf
bin/tests/system/resolver/ns6/named.conf

diff --git a/CHANGES b/CHANGES
index 5eb43440a62642f14e6b1e9136f26e198855fe95..6e55dc703a1b85604a192e0e76fe0dd942157a1d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+4112.  [bug]           Named failed to load when "root-delegation-only"
+                       was used without a list of domains to exclude.
+                       [RT #39380]
+
 4111.  [doc]           Alphabetize rndc man page. [RT #39360]
 
 4110.  [bug]           Address memory leaks / null pointer dereferences
index 8067a602b435b180c3bc9e7c4b59c7bb7e35c552..56a8336fb3bc7600b9ef7921ae03b57a455eeeea 100644 (file)
@@ -3641,18 +3641,19 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
 
        obj = NULL;
        result = ns_config_get(maps, "root-delegation-only", &obj);
-       if (result == ISC_R_SUCCESS) {
+       if (result == ISC_R_SUCCESS)
+               dns_view_setrootdelonly(view, ISC_TRUE);
+       if (result == ISC_R_SUCCESS && ! cfg_obj_isvoid(obj)) {
+               const cfg_obj_t *exclude;
                dns_fixedname_t fixed;
                dns_name_t *name;
-               const cfg_obj_t *exclude;
-
-               dns_view_setrootdelonly(view, ISC_TRUE);
 
                dns_fixedname_init(&fixed);
                name = dns_fixedname_name(&fixed);
                for (element = cfg_list_first(obj);
                     element != NULL;
-                    element = cfg_list_next(element)) {
+                    element = cfg_list_next(element))
+               {
                        exclude = cfg_listelt_value(element);
                        CHECK(dns_name_fromstring(name,
                                                  cfg_obj_asstring(exclude),
index 197451e21975c62f08f335a2db81f7a0c7298615..7ad653d914ea34c0f1d6fbb1c805f3dbb535d0c8 100644 (file)
@@ -30,6 +30,8 @@ options {
        listen-on-v6 { none; };
        recursion no;
        // minimal-responses yes;
+       /* test that named loads with root-delegation-only */
+       root-delegation-only;
 };
 
 zone "." {
index fad5353d2ce8399d5cf69b839b0552fda2d45d65..c4540f463cbab23df6d6c9008dbe83884569bc2a 100644 (file)
@@ -31,6 +31,11 @@ options {
        recursion no;
        // minimal-responses yes;
        querylog yes;
+       /*
+        * test that named loads with root-delegation-only that
+        * has a exclude list.
+        */
+       root-delegation-only exclude { "a"; };
 };
 
 zone "." {