diff --git a/CHANGES b/CHANGES index cfdc1ddfe2..613d4bf50b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3161. [bug] zone.c:del_sigs failed to always reset rdata leading + assertion failures. [RT #25880] + 3160. [bug] When printing out a NSEC3 record in multiline form the newline was not being printed causing type codes to be run together. [RT #25873] diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 34a59fdf1f..7ade7ff8b4 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.c,v 1.632 2011/09/06 22:29:33 smann Exp $ */ +/* $Id: zone.c,v 1.633 2011/10/07 02:55:04 marka Exp $ */ /*! \file */ @@ -4898,7 +4898,6 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, isc_result_t result; dns_dbnode_t *node = NULL; dns_rdataset_t rdataset; - dns_rdata_t rdata = DNS_RDATA_INIT; unsigned int i; dns_rdata_rrsig_t rrsig; isc_boolean_t found, changed; @@ -4931,6 +4930,8 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, for (result = dns_rdataset_first(&rdataset); result == ISC_R_SUCCESS; result = dns_rdataset_next(&rdataset)) { + dns_rdata_t rdata = DNS_RDATA_INIT; + dns_rdataset_current(&rdataset, &rdata); result = dns_rdata_tostruct(&rdata, &rrsig, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); @@ -4942,7 +4943,6 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, rdataset.ttl, &rdata); if (incremental) changed = ISC_TRUE; - dns_rdata_reset(&rdata); if (result != ISC_R_SUCCESS) break; } else { @@ -5038,7 +5038,6 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, result = update_one_rr(db, ver, diff, DNS_DIFFOP_DELRESIGN, name, rdataset.ttl, &rdata); - dns_rdata_reset(&rdata); if (result != ISC_R_SUCCESS) break; }