From d9ce8a0667248b2deb0787846276329993fb5d12 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 12 Aug 2015 19:06:00 +1000 Subject: [PATCH] 4172. [bug] Named / named-checkconf didn't handle a view of CLASS0. [RT #40265] (cherry picked from commit 151f1bcd5efdc59a9727de7529c37664845203b7) --- CHANGES | 3 +++ bin/tests/system/checkconf/good-class.conf | 1 + lib/bind9/check.c | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 bin/tests/system/checkconf/good-class.conf 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,