From: Evan Hunt Date: Mon, 4 May 2015 19:44:10 +0000 (-0700) Subject: [master] fix root-delegation-only without exclude X-Git-Tag: v9.11.0a1~842 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1c02dd9dd94c95a9a59bb6c10b669fb790853b10;p=thirdparty%2Fbind9.git [master] fix root-delegation-only without exclude 4112. [bug] Named failed to load when "root-delegation-only" was used without a list of domains to exclude. [RT #39380] --- diff --git a/CHANGES b/CHANGES index 5eb43440a62..6e55dc703a1 100644 --- 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 diff --git a/bin/named/server.c b/bin/named/server.c index 8067a602b43..56a8336fb3b 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -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), diff --git a/bin/tests/system/resolver/ns4/named.conf b/bin/tests/system/resolver/ns4/named.conf index 197451e2197..7ad653d914e 100644 --- a/bin/tests/system/resolver/ns4/named.conf +++ b/bin/tests/system/resolver/ns4/named.conf @@ -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 "." { diff --git a/bin/tests/system/resolver/ns6/named.conf b/bin/tests/system/resolver/ns6/named.conf index fad5353d2ce..c4540f463cb 100644 --- a/bin/tests/system/resolver/ns6/named.conf +++ b/bin/tests/system/resolver/ns6/named.conf @@ -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 "." {