]> 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:42:42 +0000 (09:42 +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 fbb4b84259a8dbaccf0639879805c32871489f10..85b114412853a829536e4433ce914ed04bd970cc 100644 (file)
@@ -5128,13 +5128,18 @@ cache_find(dns_db_t *db, const 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) {
                                /*