]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Don't process DNSSEC-related and ZONEMD records in catz
authorAram Sargsyan <aram@isc.org>
Wed, 1 Jun 2022 08:51:55 +0000 (08:51 +0000)
committerAram Sargsyan <aram@isc.org>
Thu, 2 Jun 2022 10:33:03 +0000 (10:33 +0000)
When processing a catalog zone update, skip processing records with
DNSSEC-related and ZONEMD types, because we are not interested in them
in the context of a catalog zone, and processing them will fail and
produce an unnecessary warning message.

(cherry picked from commit 73d664313703d2874c3b1a4380afdcd8ba26dc62)

lib/dns/catz.c

index 53fbb1c2a77976fcde32e654fe13be3ba9885eb5..a749ffa9d4959da8c491f0d522fb7cac262a68a5 100644 (file)
@@ -1799,6 +1799,12 @@ cleanup:
        return (result);
 }
 
+static bool
+catz_rdatatype_is_processable(const dns_rdatatype_t type) {
+       return (!dns_rdatatype_isdnssec(type) && type != dns_rdatatype_cds &&
+               type != dns_rdatatype_cdnskey && type != dns_rdatatype_zonemd);
+}
+
 void
 dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs) {
        dns_catz_zone_t *oldzone = NULL, *newzone = NULL;
@@ -1908,6 +1914,17 @@ dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs) {
                result = dns_rdatasetiter_first(rdsiter);
                while (result == ISC_R_SUCCESS) {
                        dns_rdatasetiter_current(rdsiter, &rdataset);
+
+                       /*
+                        * Skip processing DNSSEC-related and ZONEMD types,
+                        * because we are not interested in them in the context
+                        * of a catalog zone, and processing them will fail
+                        * and produce an unnecessary warning message.
+                        */
+                       if (!catz_rdatatype_is_processable(rdataset.type)) {
+                               goto next;
+                       }
+
                        result = dns_catz_update_process(catzs, newzone, name,
                                                         &rdataset);
                        if (result != ISC_R_SUCCESS) {
@@ -1930,6 +1947,7 @@ dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs) {
                                              cname, classbuf, typebuf,
                                              isc_result_totext(result));
                        }
+               next:
                        dns_rdataset_disassociate(&rdataset);
                        if (result != ISC_R_SUCCESS) {
                                break;