2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 15:05:23 +00:00

4031. [bug] named-checkconf -z failed to report a missing file

with a hint zone. [RT #38294]
This commit is contained in:
Mark Andrews
2015-01-08 19:19:12 +11:00
parent 4069b09224
commit d1f1f13c7f
4 changed files with 18 additions and 16 deletions

View File

@@ -1,3 +1,6 @@
4031. [bug] named-checkconf -z failed to report a missing file
with a hint zone. [RT #38294]
4030. [func] "rndc delzone" is now applicable to zones that were 4030. [func] "rndc delzone" is now applicable to zones that were
configured in named.conf, as well as zones that configured in named.conf, as well as zones that
were added via "rndc addzone". (Note, however, that were added via "rndc addzone". (Note, however, that

View File

@@ -4331,16 +4331,8 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
if (dns_name_equal(origin, dns_rootname)) { if (dns_name_equal(origin, dns_rootname)) {
const char *hintsfile = cfg_obj_asstring(fileobj); const char *hintsfile = cfg_obj_asstring(fileobj);
result = configure_hints(view, hintsfile); CHECK(configure_hints(view, hintsfile));
if (result != ISC_R_SUCCESS) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER,
ISC_LOG_ERROR,
"could not configure root hints "
"from '%s': %s", hintsfile,
isc_result_totext(result));
goto cleanup;
}
/* /*
* Hint zones may also refer to delegation only points. * Hint zones may also refer to delegation only points.
*/ */

View File

@@ -53,7 +53,8 @@ done
echo "I: checking that named-checkconf -z catches missing hint file" echo "I: checking that named-checkconf -z catches missing hint file"
ret=0 ret=0
$CHECKCONF -z hint-nofile.conf > /dev/null 2>&1 && ret=1 $CHECKCONF -z hint-nofile.conf > hint-nofile.out 2>&1 && ret=1
grep "could not configure root hints from 'nonexistent.db': file not found" hint-nofile.out > /dev/null || ret=1
if [ $ret != 0 ]; then echo "I:failed"; fi if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret` status=`expr $status + $ret`

View File

@@ -211,7 +211,7 @@ dns_rootns_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
result = dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_zone, result = dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_zone,
rdclass, 0, NULL, &db); rdclass, 0, NULL, &db);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); goto failure;
len = strlen(root_ns); len = strlen(root_ns);
isc_buffer_init(&source, root_ns, len); isc_buffer_init(&source, root_ns, len);
@@ -220,7 +220,7 @@ dns_rootns_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
dns_rdatacallbacks_init(&callbacks); dns_rdatacallbacks_init(&callbacks);
result = dns_db_beginload(db, &callbacks); result = dns_db_beginload(db, &callbacks);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); goto failure;
if (filename != NULL) { if (filename != NULL) {
/* /*
* Load the hints from the specified filename. * Load the hints from the specified filename.
@@ -243,7 +243,7 @@ dns_rootns_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
if (result == ISC_R_SUCCESS || result == DNS_R_SEENINCLUDE) if (result == ISC_R_SUCCESS || result == DNS_R_SEENINCLUDE)
result = eresult; result = eresult;
if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE) if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE)
goto db_detach; goto failure;
if (check_hints(db) != ISC_R_SUCCESS) if (check_hints(db) != ISC_R_SUCCESS)
isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_HINTS, ISC_LOG_WARNING, DNS_LOGMODULE_HINTS, ISC_LOG_WARNING,
@@ -252,8 +252,14 @@ dns_rootns_create(isc_mem_t *mctx, dns_rdataclass_t rdclass,
*target = db; *target = db;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
db_detach: failure:
dns_db_detach(&db); isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_HINTS,
ISC_LOG_ERROR, "could not configure root hints from "
"'%s': %s", (filename != NULL) ? filename : "<BUILT-IN>",
isc_result_totext(result));
if (db != NULL)
dns_db_detach(&db);
return (result); return (result);
} }