]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix missing RRSIG for CNAME with different slabheader order
authorOndřej Surý <ondrej@isc.org>
Tue, 6 Feb 2024 13:05:08 +0000 (14:05 +0100)
committerOndřej Surý <ondrej@isc.org>
Thu, 8 Feb 2024 08:45:13 +0000 (09:45 +0100)
The cachedb was missing piece of code (already found in zonedb) that
would make lookups in the slabheaders to miss the RRSIGs for CNAME if
the order of CNAME and RRSIG(CNAME) was reversed in the node->data.

(cherry picked from commit 5070c7f5c74a143f74775515d65fad01f398ecd1)

lib/dns/rbtdb.c

index ca315028b3bf431e2fe05848d480479ff10d7802..bab35e4eaaa01027c9cf0d8fc2e99406e66a3e5b 100644 (file)
@@ -5212,13 +5212,17 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
                                 */
                                found = header;
                                if (header->type == dns_rdatatype_cname &&
-                                   cname_ok &&
-                                   cnamesig != NULL) {
+                                   cname_ok) {
                                        /*
                                         * If we've already got the
                                         * CNAME RRSIG, use it.
                                         */
-                                       foundsig = cnamesig;
+                                       if (cnamesig != NULL) {
+                                               foundsig = cnamesig;
+                                       } else {
+                                               sigtype =
+                                                       RBTDB_RDATATYPE_SIGCNAME;
+                                       }
                                }
                        } else if (header->type == sigtype) {
                                /*