diff --git a/CHANGES b/CHANGES index bb2fc405a2..1024cd6067 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4172. [bug] Named / named-checkconf didn't handle a view of CLASS0. + [RT #40265] + 4171. [bug] Fixed incorrect class checks in TSIG RR implementation. [RT #40287] diff --git a/bin/tests/system/checkconf/good-class.conf b/bin/tests/system/checkconf/good-class.conf new file mode 100644 index 0000000000..ff2693eed5 --- /dev/null +++ b/bin/tests/system/checkconf/good-class.conf @@ -0,0 +1 @@ +view "example" class00 { }; diff --git a/lib/bind9/check.c b/lib/bind9/check.c index 3f19f231f4..b607c073e1 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -3183,6 +3183,7 @@ bind9_check_namedconf(const cfg_obj_t *config, isc_log_t *logctx, dns_rdataclass_t vclass = dns_rdataclass_in; const char *key = cfg_obj_asstring(vname); isc_symvalue_t symvalue; + unsigned int symtype; tresult = ISC_R_SUCCESS; if (cfg_obj_isstring(vclassobj)) { @@ -3196,16 +3197,17 @@ bind9_check_namedconf(const cfg_obj_t *config, isc_log_t *logctx, "view '%s': invalid class %s", cfg_obj_asstring(vname), r.base); } + symtype = vclass + 1; if (tresult == ISC_R_SUCCESS && symtab != NULL) { symvalue.as_cpointer = view; - tresult = isc_symtab_define(symtab, key, vclass, + tresult = isc_symtab_define(symtab, key, symtype, symvalue, isc_symexists_reject); if (tresult == ISC_R_EXISTS) { const char *file; unsigned int line; RUNTIME_CHECK(isc_symtab_lookup(symtab, key, - vclass, &symvalue) == ISC_R_SUCCESS); + symtype, &symvalue) == ISC_R_SUCCESS); file = cfg_obj_file(symvalue.as_cpointer); line = cfg_obj_line(symvalue.as_cpointer); cfg_obj_log(view, logctx, ISC_LOG_ERROR,