Cleanup the extra dns_rdataset_disassociate() code

Manually go through the code using dns_rdataset_isassociated() and
use dns_rdataset_cleanup() where appropriate in places that a simple
semantic patch is not able to find automatically.
This commit is contained in:
Ondřej Surý 2025-12-17 08:38:34 +01:00
parent 8320faf64b
commit bd074ff0ea
No known key found for this signature in database
GPG key ID: 2820F37E873DEA41
9 changed files with 40 additions and 61 deletions

View file

@ -2724,15 +2724,15 @@ findkeys:
/* Get the CDS rdataset */
result = dns_db_findrdataset(gdb, node, ver, dns_rdatatype_cds,
dns_rdatatype_none, 0, &cdsset, NULL);
if (result != ISC_R_SUCCESS && dns_rdataset_isassociated(&cdsset)) {
dns_rdataset_disassociate(&cdsset);
if (result != ISC_R_SUCCESS) {
dns_rdataset_cleanup(&cdsset);
}
/* Get the CDNSKEY rdataset */
result = dns_db_findrdataset(gdb, node, ver, dns_rdatatype_cdnskey,
dns_rdatatype_none, 0, &cdnskeyset, NULL);
if (result != ISC_R_SUCCESS && dns_rdataset_isassociated(&cdnskeyset)) {
dns_rdataset_disassociate(&cdnskeyset);
if (result != ISC_R_SUCCESS) {
dns_rdataset_cleanup(&cdnskeyset);
}
dns_diff_init(isc_g_mctx, &diff);

View file

@ -942,14 +942,8 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
if (result == ISC_R_SUCCESS) {
if (i == nlabels && type == dns_rdatatype_any) {
result = DNS_R_ZONECUT;
dns_rdataset_disassociate(rdataset);
if (sigrdataset != NULL &&
dns_rdataset_isassociated(
sigrdataset))
{
dns_rdataset_disassociate(
sigrdataset);
}
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
} else {
result = DNS_R_DELEGATION;
}
@ -1002,8 +996,8 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
break;
}
if (rdataset == &xrdataset && dns_rdataset_isassociated(rdataset)) {
dns_rdataset_disassociate(rdataset);
if (rdataset == &xrdataset) {
dns_rdataset_cleanup(rdataset);
}
if (foundname != NULL) {

View file

@ -6365,8 +6365,8 @@ negcache(dns_message_t *message, fetchctx_t *fctx, const dns_name_t *name,
result = dns_ncache_add(message, cache, node, covers, now, minttl,
maxttl, optout, secure, added);
if (added == &rdataset && dns_rdataset_isassociated(added)) {
dns_rdataset_disassociate(added);
if (added == &rdataset) {
dns_rdataset_cleanup(added);
}
*nodep = node;

View file

@ -897,8 +897,8 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
break;
}
if (rdataset == &xrdataset && dns_rdataset_isassociated(rdataset)) {
dns_rdataset_disassociate(rdataset);
if (rdataset == &xrdataset) {
dns_rdataset_cleanup(rdataset);
}
if (foundname != NULL) {

View file

@ -1230,10 +1230,8 @@ seek_dnskey(dns_validator_t *val) {
break;
}
if (dns_rdataset_isassociated(&val->frdataset) &&
val->keyset != &val->frdataset)
{
dns_rdataset_disassociate(&val->frdataset);
if (val->keyset != &val->frdataset) {
dns_rdataset_cleanup(&val->frdataset);
}
dns_rdataset_cleanup(&val->fsigrdataset);

View file

@ -915,10 +915,8 @@ db_find:
}
cleanup:
if (dns_rdataset_isassociated(&zrdataset)) {
dns_rdataset_disassociate(&zrdataset);
dns_rdataset_cleanup(&zsigrdataset);
}
dns_rdataset_cleanup(&zrdataset);
dns_rdataset_cleanup(&zsigrdataset);
if (zdb != NULL) {
if (znode != NULL) {
@ -1137,10 +1135,9 @@ db_find:
finish:
if (use_zone) {
if (dns_rdataset_isassociated(rdataset)) {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(sigrdataset);
}
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
dns_name_copy(zfname, fname);
if (dcname != NULL) {
dns_name_copy(zfname, dcname);
@ -1171,10 +1168,9 @@ finish:
}
cleanup:
if (dns_rdataset_isassociated(&zrdataset)) {
dns_rdataset_disassociate(&zrdataset);
dns_rdataset_cleanup(&zsigrdataset);
}
dns_rdataset_cleanup(&zrdataset);
dns_rdataset_cleanup(&zsigrdataset);
if (db != NULL) {
dns_db_detach(&db);
}

View file

@ -21347,11 +21347,9 @@ zone_rekey(dns_zone_t *zone) {
/* Get the current CDS rdataset */
result = dns_db_findrdataset(db, node, ver, dns_rdatatype_cds,
dns_rdatatype_none, 0, &cdsset, NULL);
if (result != ISC_R_SUCCESS && dns_rdataset_isassociated(&cdsset)) {
dns_rdataset_disassociate(&cdsset);
} else if (result == ISC_R_SUCCESS && kasp != NULL &&
ttl != cdsset.ttl && !offlineksk)
{
if (result != ISC_R_SUCCESS) {
dns_rdataset_cleanup(&cdsset);
} else if (kasp != NULL && ttl != cdsset.ttl && !offlineksk) {
update_ttl(&cdsset, &zone->origin, ttl, &diff);
dnssec_log(zone, ISC_LOG_INFO, "Updating CDS TTL from %u to %u",
cdsset.ttl, ttl);
@ -21361,11 +21359,9 @@ zone_rekey(dns_zone_t *zone) {
/* Get the current CDNSKEY rdataset */
result = dns_db_findrdataset(db, node, ver, dns_rdatatype_cdnskey,
dns_rdatatype_none, 0, &cdnskeyset, NULL);
if (result != ISC_R_SUCCESS && dns_rdataset_isassociated(&cdnskeyset)) {
dns_rdataset_disassociate(&cdnskeyset);
} else if (result == ISC_R_SUCCESS && kasp != NULL &&
ttl != cdnskeyset.ttl && !offlineksk)
{
if (result != ISC_R_SUCCESS) {
dns_rdataset_cleanup(&cdnskeyset);
} else if (kasp != NULL && ttl != cdnskeyset.ttl && !offlineksk) {
update_ttl(&cdnskeyset, &zone->origin, ttl, &diff);
dnssec_log(zone, ISC_LOG_INFO,
"Updating CDNSKEY TTL from %u to %u", cdnskeyset.ttl,

View file

@ -299,11 +299,9 @@ check_no_rrsig(const vctx_t *vctx, const dns_rdataset_t *rdataset,
const dns_name_t *name, dns_dbnode_t *node) {
char namebuf[DNS_NAME_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
dns_rdataset_t sigrdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_t *rdsiter = NULL;
isc_result_t result;
dns_rdataset_init(&sigrdataset);
result = dns_db_allrdatasets(vctx->db, node, vctx->ver, 0, 0, &rdsiter);
if (result != ISC_R_SUCCESS) {
zoneverify_log_error(vctx, "dns_db_allrdatasets(): %s",
@ -311,10 +309,12 @@ check_no_rrsig(const vctx_t *vctx, const dns_rdataset_t *rdataset,
return result;
}
DNS_RDATASETITER_FOREACH(rdsiter) {
dns_rdataset_t sigrdataset = DNS_RDATASET_INIT;
dns_rdatasetiter_current(rdsiter, &sigrdataset);
if (sigrdataset.type == dns_rdatatype_rrsig &&
sigrdataset.covers == rdataset->type)
{
dns_rdataset_disassociate(&sigrdataset);
dns_name_format(name, namebuf, sizeof(namebuf));
dns_rdatatype_format(rdataset->type, typebuf,
sizeof(typebuf));
@ -327,7 +327,6 @@ check_no_rrsig(const vctx_t *vctx, const dns_rdataset_t *rdataset,
}
dns_rdataset_disassociate(&sigrdataset);
}
dns_rdataset_cleanup(&sigrdataset);
dns_rdatasetiter_destroy(&rdsiter);
return ISC_R_SUCCESS;

View file

@ -1693,10 +1693,8 @@ query_additionalauthfind(dns_db_t *db, dns_dbversion_t *version,
/*
* Do not return signatures if the zone is not fully signed.
*/
if (sigrdataset != NULL && !dns_db_issecure(db) &&
dns_rdataset_isassociated(sigrdataset))
{
dns_rdataset_disassociate(sigrdataset);
if (!dns_db_issecure(db)) {
dns_rdataset_cleanup(sigrdataset);
}
*nodep = node;
@ -2029,7 +2027,7 @@ found:
if (result == DNS_R_NCACHENXDOMAIN) {
goto addname;
} else if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
} else if (result == ISC_R_SUCCESS) {
bool invalid = false;
@ -2044,7 +2042,7 @@ found:
sigrdataset);
}
if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
} else if (!query_isduplicate(client, fname,
dns_rdatatype_a, &mname))
@ -2070,7 +2068,7 @@ found:
}
rdataset = ns_client_newrdataset(client);
} else {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
}
}
@ -2085,7 +2083,7 @@ found:
if (result == DNS_R_NCACHENXDOMAIN) {
goto addname;
} else if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
} else if (result == ISC_R_SUCCESS) {
bool invalid = false;
@ -2102,7 +2100,7 @@ found:
}
if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
} else if (!query_isduplicate(client, fname,
dns_rdatatype_aaaa,
@ -2933,10 +2931,8 @@ rpz_clean(dns_zone_t **zonep, dns_db_t **dbp, dns_dbnode_t **nodep,
if (zonep != NULL && *zonep != NULL) {
dns_zone_detach(zonep);
}
if (rdatasetp != NULL && *rdatasetp != NULL &&
dns_rdataset_isassociated(*rdatasetp))
{
dns_rdataset_disassociate(*rdatasetp);
if (rdatasetp != NULL) {
dns_rdataset_cleanup(*rdatasetp);
}
}
@ -4588,7 +4584,7 @@ again:
if (found != NULL && optout &&
dns_name_issubdomain(&name, dns_db_origin(db)))
{
dns_rdataset_disassociate(rdataset);
dns_rdataset_cleanup(rdataset);
dns_rdataset_cleanup(sigrdataset);
skip++;
dns_name_getlabelsequence(qname, skip, labels - skip,