diff --git a/CHANGES b/CHANGES index 04340af055..9ef76a4b88 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 e7a0200ca9..caf80d6a15 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -2898,6 +2898,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)) { @@ -2911,16 +2912,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,