]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix assertion failure in dns_db_findrdataset() for SIG records
authorMark Andrews <marka@isc.org>
Tue, 7 Apr 2026 14:39:57 +0000 (16:39 +0200)
committerOndřej Surý <ondrej@isc.org>
Fri, 17 Apr 2026 17:24:13 +0000 (19:24 +0200)
dns__db_findrdataset() had a REQUIRE() that only accepted
dns_rdatatype_rrsig when the covers parameter was set.  A dynamic
update containing a SIG record (type 24) would trigger this
assertion, crashing named.  Use dns_rdatatype_issig() to accept
both SIG and RRSIG.

(cherry picked from commit 03edeccaa16991e05c101ae82a03568ae1b2dbd0)

lib/dns/db.c

index eb771bee41e441027f29bb08736aced85fcec1df..3e92b1540f4fd05d245d0660473450adcfede84a 100644 (file)
@@ -703,7 +703,8 @@ dns__db_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
        REQUIRE(node != NULL);
        REQUIRE(DNS_RDATASET_VALID(rdataset));
        REQUIRE(!dns_rdataset_isassociated(rdataset));
-       REQUIRE(covers == 0 || type == dns_rdatatype_rrsig);
+       REQUIRE(covers == dns_rdatatype_none || type == dns_rdatatype_rrsig ||
+               type == dns_rdatatype_sig);
        REQUIRE(type != dns_rdatatype_any);
        REQUIRE(sigrdataset == NULL ||
                (DNS_RDATASET_VALID(sigrdataset) &&