2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-02 07:35:26 +00:00

1742. [bug] Deleting all records at a node then adding a

previously existing record, in a single UPDATE
                        transaction, failed to leave / regenerate the
                        associated RRSIG records. [RT #12788]
This commit is contained in:
Mark Andrews
2004-10-21 01:29:29 +00:00
parent 49210da3fb
commit 055597532d
2 changed files with 25 additions and 7 deletions

View File

@@ -18,13 +18,16 @@
1744. [bug] If tuple2msgname() failed to convert a tuple to 1744. [bug] If tuple2msgname() failed to convert a tuple to
a name a REQUIRE could be triggered. [RT #12796] a name a REQUIRE could be triggered. [RT #12796]
1743. [placeholder] rt12790 1743. [bug] If isc_taskmgr_create() was not able to create the
1742. [bug] If isc_taskmgr_create() was not able to create the
requested number of worker threads then destruction requested number of worker threads then destruction
of the manager would trigger an INSIST() failure. of the manager would trigger an INSIST() failure.
[RT #12790] [RT #12790]
1742. [bug] Deleting all records at a node then adding a
previously existing record, in a single UPDATE
transaction, failed to leave / regenerate the
associated RRSIG records. [RT #12788]
1741. [bug] Deleting all records at a node in a secure zone 1741. [bug] Deleting all records at a node in a secure zone
using a update-policy grant failed. [RT #12787] using a update-policy grant failed. [RT #12787]

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: update.c,v 1.117 2004/10/12 21:57:57 marka Exp $ */ /* $Id: update.c,v 1.118 2004/10/21 01:29:29 marka Exp $ */
#include <config.h> #include <config.h>
@@ -965,13 +965,27 @@ typedef struct {
*/ */
/* /*
* Return true iff 'update_rr' is neither a SOA nor an NS RR. * Return true iff 'db_rr' is neither a SOA nor an NS RR nor
* an RRSIG nor a NSEC.
*/ */
static isc_boolean_t static isc_boolean_t
type_not_soa_nor_ns_p(dns_rdata_t *update_rr, dns_rdata_t *db_rr) { type_not_soa_nor_ns_p(dns_rdata_t *update_rr, dns_rdata_t *db_rr) {
UNUSED(update_rr); UNUSED(update_rr);
return ((db_rr->type != dns_rdatatype_soa && return ((db_rr->type != dns_rdatatype_soa &&
db_rr->type != dns_rdatatype_ns) ? db_rr->type != dns_rdatatype_ns &&
db_rr->type != dns_rdatatype_rrsig &&
db_rr->type != dns_rdatatype_nsec) ?
ISC_TRUE : ISC_FALSE);
}
/*
* Return true iff 'db_rr' is neither a RRSIG nor a NSEC.
*/
static isc_boolean_t
type_not_dnssec(dns_rdata_t *update_rr, dns_rdata_t *db_rr) {
UNUSED(update_rr);
return ((db_rr->type != dns_rdatatype_rrsig &&
db_rr->type != dns_rdatatype_nsec) ?
ISC_TRUE : ISC_FALSE); ISC_TRUE : ISC_FALSE);
} }
@@ -2514,7 +2528,8 @@ update_action(isc_task_t *task, isc_event_t *event) {
dns_rdatatype_any, 0, dns_rdatatype_any, 0,
&rdata, &diff)); &rdata, &diff));
} else { } else {
CHECK(delete_if(true_p, db, ver, name, CHECK(delete_if(type_not_dnssec,
db, ver, name,
dns_rdatatype_any, 0, dns_rdatatype_any, 0,
&rdata, &diff)); &rdata, &diff));
} }