diff --git a/CHANGES b/CHANGES index 02915a303b..4e23fa28ad 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +5112. [bug] Named/named-checkconf could dump core if there was + a missing masters clause and a bad notify clause. + [GL #779] + 5111. [bug] Occluded DNSKEY records could make it into the delegating NSEC/NSEC3 bitmap. [GL #742] diff --git a/bin/tests/system/checkconf/bad-stub-masters-dialup.conf b/bin/tests/system/checkconf/bad-stub-masters-dialup.conf new file mode 100644 index 0000000000..3b19323471 --- /dev/null +++ b/bin/tests/system/checkconf/bad-stub-masters-dialup.conf @@ -0,0 +1,34 @@ +/* + * Copyright (C) Internet Systems Consortium, Inc. ("ISC") + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * See the COPYRIGHT file distributed with this work for additional + * information regarding copyright ownership. + */ + +controls { /* empty */ }; +options { + query-source address 10.53.0.2; + notify-source 10.53.0.2; + transfer-source 10.53.0.2; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.2; }; + listen-on-v6 { none; }; + heartbeat-interval 2; + recursion no; +}; +zone "." { + type hint; + file "hint"; +}; +zone "example." { + type stub; + dialup notify; + notify no; + file "example.bk"; + // masters { 10.53.0.1; }; +}; diff --git a/lib/bind9/check.c b/lib/bind9/check.c index d8352910ce..d6fba22500 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -2276,10 +2276,10 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, if (ztype == CFG_ZONE_MASTER || ztype == CFG_ZONE_SLAVE || ztype == CFG_ZONE_STUB) { - const cfg_obj_t *dialup = NULL; - (void)cfg_map_get(zoptions, "dialup", &dialup); - if (dialup != NULL && cfg_obj_isstring(dialup)) { - const char *str = cfg_obj_asstring(dialup); + obj = NULL; + (void)cfg_map_get(zoptions, "dialup", &obj); + if (obj != NULL && cfg_obj_isstring(obj)) { + const char *str = cfg_obj_asstring(obj); for (i = 0; i < sizeof(dialups) / sizeof(dialups[0]); i++) diff --git a/util/copyrights b/util/copyrights index 67b432cfc0..4fa7bb345c 100644 --- a/util/copyrights +++ b/util/copyrights @@ -737,6 +737,7 @@ ./bin/tests/system/checkconf/bad-sharedzone1.conf CONF-C 2013,2016,2018 ./bin/tests/system/checkconf/bad-sharedzone2.conf CONF-C 2013,2016,2018 ./bin/tests/system/checkconf/bad-sharedzone3.conf CONF-C 2018 +./bin/tests/system/checkconf/bad-stub-masters-dialup.conf CONF-C 2018 ./bin/tests/system/checkconf/bad-tsig.conf CONF-C 2012,2013,2016,2018 ./bin/tests/system/checkconf/bad-update-policy1.conf CONF-C 2018 ./bin/tests/system/checkconf/bad-update-policy10.conf CONF-C 2018