From: Ondřej Surý Date: Wed, 17 Dec 2025 06:09:15 +0000 (+0100) Subject: Apply the dns_rdataset_cleanup patch through the codebase X-Git-Tag: v9.21.17~29^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8320faf64b023bd2da738dac56ee312f9f4e4a28;p=thirdparty%2Fbind9.git Apply the dns_rdataset_cleanup patch through the codebase Add a semantic patch to turn the conditional rdataset disassociate into dns_rdataset_cleanup() call and run it. --- diff --git a/bin/dnssec/dnssec-cds.c b/bin/dnssec/dnssec-cds.c index 9f976e21f18..50239e61788 100644 --- a/bin/dnssec/dnssec-cds.c +++ b/bin/dnssec/dnssec-cds.c @@ -195,9 +195,7 @@ findset(dns_db_t *db, dns_dbnode_t *node, dns_rdatatype_t type, static void freeset(dns_rdataset_t *rdataset) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); } static void diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index 76e2a80b7ce..e18a52cf21d 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -541,9 +541,7 @@ main(int argc, char **argv) { emits(showall, cds, &rdata); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (verbose > 10) { isc_mem_stats(isc_g_mctx, stdout); } diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index 23361ef7130..59e05f10a21 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -447,9 +447,7 @@ main(int argc, char **argv) { emit(dir, &rdata); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (verbose > 10) { isc_mem_stats(isc_g_mctx, stdout); } diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index 3b139ef91ce..99965f93886 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -677,9 +677,7 @@ signset(dns_diff_t *del, dns_diff_t *add, dns_dbnode_t *node, dns_name_t *name, } check_result(result, "dns_rdataset_first/next"); - if (dns_rdataset_isassociated(&sigset)) { - dns_rdataset_disassociate(&sigset); - } + dns_rdataset_cleanup(&sigset); ISC_LIST_FOREACH(keylist, key, link) { if (REVOKE(key->key) && set->type != dns_rdatatype_dnskey) { @@ -1108,9 +1106,7 @@ secure(dns_name_t *name, dns_dbnode_t *node) { dns_rdataset_init(&dsset); result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_ds, 0, 0, &dsset, NULL); - if (dns_rdataset_isassociated(&dsset)) { - dns_rdataset_disassociate(&dsset); - } + dns_rdataset_cleanup(&dsset); return result == ISC_R_SUCCESS; } @@ -1148,9 +1144,7 @@ has_dname(dns_db_t *db, dns_dbversion_t *ver, dns_dbnode_t *node) { dns_rdataset_init(&dnameset); result = dns_db_findrdataset(db, node, ver, dns_rdatatype_dname, 0, 0, &dnameset, NULL); - if (dns_rdataset_isassociated(&dnameset)) { - dns_rdataset_disassociate(&dnameset); - } + dns_rdataset_cleanup(&dnameset); return result == ISC_R_SUCCESS; } @@ -1562,9 +1556,7 @@ assignwork(void *arg) { dns_rdataset_init(&nsec); result = dns_db_findrdataset(gdb, node, gversion, nsec_datatype, 0, 0, &nsec, NULL); - if (dns_rdataset_isassociated(&nsec)) { - dns_rdataset_disassociate(&nsec); - } + dns_rdataset_cleanup(&nsec); if (result == ISC_R_SUCCESS) { found = true; } else if (nsec_datatype == dns_rdatatype_nsec3) { @@ -1653,9 +1645,7 @@ add_ds(dns_name_t *name, dns_dbnode_t *node, uint32_t nsttl) { NULL); check_result(result, "dns_db_addrdataset"); dns_rdataset_disassociate(&dsset); - if (dns_rdataset_isassociated(&sigdsset)) { - dns_rdataset_disassociate(&sigdsset); - } + dns_rdataset_cleanup(&sigdsset); } else if (dns_rdataset_isassociated(&sigdsset)) { result = dns_db_deleterdataset(gdb, node, gversion, dns_rdatatype_rrsig, @@ -2545,15 +2535,9 @@ loadzonekeys(bool preserve_keys, bool load_public) { } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } - if (dns_rdataset_isassociated(&keysigs)) { - dns_rdataset_disassociate(&keysigs); - } - if (dns_rdataset_isassociated(&soasigs)) { - dns_rdataset_disassociate(&soasigs); - } + dns_rdataset_cleanup(&rdataset); + dns_rdataset_cleanup(&keysigs); + dns_rdataset_cleanup(&soasigs); dns_db_detachnode(&node); dns_db_closeversion(gdb, ¤tversion, false); } @@ -2779,12 +2763,8 @@ findkeys: dns_diff_clear(&diff); - if (dns_rdataset_isassociated(&cdsset)) { - dns_rdataset_disassociate(&cdsset); - } - if (dns_rdataset_isassociated(&cdnskeyset)) { - dns_rdataset_disassociate(&cdnskeyset); - } + dns_rdataset_cleanup(&cdsset); + dns_rdataset_cleanup(&cdnskeyset); clear_keylist(&rmkeys); clear_keylist(&matchkeys); @@ -2936,9 +2916,7 @@ set_nsec3params(bool update, bool set_salt, bool set_optout, bool set_iter) { dns_rdata_freestruct(&nsec3); cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/bin/named/server.c b/bin/named/server.c index a39eb30837f..a8213215e8b 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -6487,12 +6487,8 @@ tat_done(void *arg) { dns_resolver_freefresp(&resp); dns_resolver_destroyfetch(&tat->fetch); - if (dns_rdataset_isassociated(&tat->rdataset)) { - dns_rdataset_disassociate(&tat->rdataset); - } - if (dns_rdataset_isassociated(&tat->sigrdataset)) { - dns_rdataset_disassociate(&tat->sigrdataset); - } + dns_rdataset_cleanup(&tat->rdataset); + dns_rdataset_cleanup(&tat->sigrdataset); dns_view_detach(&tat->view); isc_mem_putanddetach(&tat->mctx, tat, sizeof(*tat)); } @@ -6636,9 +6632,7 @@ tat_send(void *arg) { * it succeeds. Thus, we need to check whether 'nameservers' is * associated and release it if it is. */ - if (dns_rdataset_isassociated(&nameservers)) { - dns_rdataset_disassociate(&nameservers); - } + dns_rdataset_cleanup(&nameservers); if (result != ISC_R_SUCCESS) { dns_view_detach(&tat->view); @@ -13904,9 +13898,7 @@ named_server_signing(named_server_t *server, isc_lex_t *lex, } cleanup: - if (dns_rdataset_isassociated(&privset)) { - dns_rdataset_disassociate(&privset); - } + dns_rdataset_cleanup(&privset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index b43223395f3..1d9ab722cf2 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -642,9 +642,7 @@ configure_staticstub(const cfg_obj_t *zconfig, const cfg_obj_t *tconfig, result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (apexnode != NULL) { dns_db_detachnode(&apexnode); } diff --git a/bin/plugins/filter-a.c b/bin/plugins/filter-a.c index 541bb7ebc50..f722fdcb813 100644 --- a/bin/plugins/filter-a.c +++ b/bin/plugins/filter-a.c @@ -695,9 +695,7 @@ filter_respond_begin(void *arg, void *cbdata, isc_result_t *resp) { result = dns_db_findrdataset( qctx->db, qctx->node, qctx->version, dns_rdatatype_aaaa, 0, qctx->client->inner.now, trdataset, NULL); - if (dns_rdataset_isassociated(trdataset)) { - dns_rdataset_disassociate(trdataset); - } + dns_rdataset_cleanup(trdataset); ns_client_putrdataset(qctx->client, &trdataset); /* diff --git a/bin/plugins/filter-aaaa.c b/bin/plugins/filter-aaaa.c index 8173b736c7f..6a7a8d25e9b 100644 --- a/bin/plugins/filter-aaaa.c +++ b/bin/plugins/filter-aaaa.c @@ -699,9 +699,7 @@ filter_respond_begin(void *arg, void *cbdata, isc_result_t *resp) { result = dns_db_findrdataset( qctx->db, qctx->node, qctx->version, dns_rdatatype_a, 0, qctx->client->inner.now, trdataset, NULL); - if (dns_rdataset_isassociated(trdataset)) { - dns_rdataset_disassociate(trdataset); - } + dns_rdataset_cleanup(trdataset); ns_client_putrdataset(qctx->client, &trdataset); /* diff --git a/cocci/dns_rdataset_cleanup.spatch b/cocci/dns_rdataset_cleanup.spatch new file mode 100644 index 00000000000..3f4d5771df9 --- /dev/null +++ b/cocci/dns_rdataset_cleanup.spatch @@ -0,0 +1,17 @@ +@@ +expression R; +@@ + +- if (R != NULL && dns_rdataset_isassociated(R)) { +- dns_rdataset_disassociate(R); +- } ++ dns_rdataset_cleanup(R); + +@@ +expression R; +@@ + +- if (dns_rdataset_isassociated(R)) { +- dns_rdataset_disassociate(R); +- } ++ dns_rdataset_cleanup(R); diff --git a/lib/dns/adb.c b/lib/dns/adb.c index 467caa26627..0bdf4a9ad96 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -1103,9 +1103,7 @@ free_adbfetch(dns_adb_t *adb, dns_adbfetch_t **fetchp) { fetch->magic = 0; - if (dns_rdataset_isassociated(&fetch->rdataset)) { - dns_rdataset_disassociate(&fetch->rdataset); - } + dns_rdataset_cleanup(&fetch->rdataset); isc_mem_put(adb->hmctx, fetch, sizeof(*fetch)); } @@ -2540,9 +2538,7 @@ dbfind_name(dns_adbname_t *adbname, isc_stdtime_t now, dns_rdatatype_t rdtype) { break; } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } @@ -2792,9 +2788,7 @@ cleanup: if (fetch != NULL) { free_adbfetch(adb, &fetch); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } diff --git a/lib/dns/client.c b/lib/dns/client.c index abfa407857b..0e2d12f1aa0 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -405,9 +405,7 @@ putrdataset(isc_mem_t *mctx, dns_rdataset_t **rdatasetp) { *rdatasetp = NULL; REQUIRE(rdataset != NULL); - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); isc_mem_put(mctx, rdataset, sizeof(*rdataset)); } diff --git a/lib/dns/diff.c b/lib/dns/diff.c index 43fc7ca946b..97ab6db7b2c 100644 --- a/lib/dns/diff.c +++ b/lib/dns/diff.c @@ -271,9 +271,7 @@ cleanup: if (node != NULL) { dns_db_detachnode(&node); } - if (dns_rdataset_isassociated(&ardataset)) { - dns_rdataset_disassociate(&ardataset); - } + dns_rdataset_cleanup(&ardataset); return result; } diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index 0d5ef95c532..2874341be0d 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -1459,9 +1459,7 @@ mark_active_keys(dns_dnsseckeylist_t *keylist, dns_rdataset_t *rrsigs) { } } - if (dns_rdataset_isassociated(&sigs)) { - dns_rdataset_disassociate(&sigs); - } + dns_rdataset_cleanup(&sigs); return result; } @@ -1673,9 +1671,7 @@ dns_dnssec_keylistfromrdataset(const dns_name_t *origin, dns_kasp_t *kasp, result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&keys)) { - dns_rdataset_disassociate(&keys); - } + dns_rdataset_cleanup(&keys); if (dnskey != NULL) { dst_key_free(&dnskey); } diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index f80c40232ac..07cd7c17621 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -550,9 +550,7 @@ ncache_summary(dns_rdataset_t *rdataset, bool omit_final_dot, result = ISC_R_SUCCESS; } cleanup: - if (dns_rdataset_isassociated(&rds)) { - dns_rdataset_disassociate(&rds); - } + dns_rdataset_cleanup(&rds); return result; } diff --git a/lib/dns/message.c b/lib/dns/message.c index 2d71e97df48..1a7181b1052 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -1019,9 +1019,7 @@ getquestions(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t dctx, cleanup: if (rdataset != NULL) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); dns_message_puttemprdataset(msg, &rdataset); } @@ -3177,9 +3175,7 @@ dns_message_checksig(dns_message_t *msg, dns_view_t *view) { } freesig: - if (dns_rdataset_isassociated(&keyset)) { - dns_rdataset_disassociate(&keyset); - } + dns_rdataset_cleanup(&keyset); dns_rdata_freestruct(&sig); return result; } diff --git a/lib/dns/nsec.c b/lib/dns/nsec.c index 145ada6b171..74fde42ee6e 100644 --- a/lib/dns/nsec.c +++ b/lib/dns/nsec.c @@ -183,9 +183,7 @@ dns_nsec_build(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c index bf9c8486ac3..867aa2b26d1 100644 --- a/lib/dns/nsec3.c +++ b/lib/dns/nsec3.c @@ -871,9 +871,7 @@ cleanup: if (dbit != NULL) { dns_dbiterator_destroy(&dbit); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -934,9 +932,7 @@ dns_nsec3_addnsec3s(dns_db_t *db, dns_dbversion_t *version, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -1165,9 +1161,7 @@ try_private: result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_db_detachnode(&node); return result; } @@ -1265,12 +1259,8 @@ try_private: result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } - if (dns_rdataset_isassociated(&prdataset)) { - dns_rdataset_disassociate(&prdataset); - } + dns_rdataset_cleanup(&rdataset); + dns_rdataset_cleanup(&prdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -1564,9 +1554,7 @@ cleanup: if (dbit != NULL) { dns_dbiterator_destroy(&dbit); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -1667,9 +1655,7 @@ try_private: result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/lib/dns/nta.c b/lib/dns/nta.c index 39c6242e7b3..17345e26138 100644 --- a/lib/dns/nta.c +++ b/lib/dns/nta.c @@ -90,12 +90,8 @@ dns__nta_destroy(dns__nta_t *nta) { REQUIRE(nta->timer == NULL); nta->magic = 0; - if (dns_rdataset_isassociated(&nta->rdataset)) { - dns_rdataset_disassociate(&nta->rdataset); - } - if (dns_rdataset_isassociated(&nta->sigrdataset)) { - dns_rdataset_disassociate(&nta->sigrdataset); - } + dns_rdataset_cleanup(&nta->rdataset); + dns_rdataset_cleanup(&nta->sigrdataset); if (nta->fetch != NULL) { dns_resolver_cancelfetch(nta->fetch); dns_resolver_destroyfetch(&nta->fetch); @@ -157,12 +153,8 @@ fetch_done(void *arg) { dns_view_t *view = ntatable->view; isc_stdtime_t now = isc_stdtime_now(); - if (dns_rdataset_isassociated(&nta->rdataset)) { - dns_rdataset_disassociate(&nta->rdataset); - } - if (dns_rdataset_isassociated(&nta->sigrdataset)) { - dns_rdataset_disassociate(&nta->sigrdataset); - } + dns_rdataset_cleanup(&nta->rdataset); + dns_rdataset_cleanup(&nta->sigrdataset); if (nta->fetch == resp->fetch) { nta->fetch = NULL; } @@ -217,12 +209,8 @@ checkbogus(void *arg) { dns_resolver_cancelfetch(nta->fetch); nta->fetch = NULL; } - if (dns_rdataset_isassociated(&nta->rdataset)) { - dns_rdataset_disassociate(&nta->rdataset); - } - if (dns_rdataset_isassociated(&nta->sigrdataset)) { - dns_rdataset_disassociate(&nta->sigrdataset); - } + dns_rdataset_cleanup(&nta->rdataset); + dns_rdataset_cleanup(&nta->sigrdataset); if (atomic_load(&ntatable->shuttingdown)) { isc_timer_stop(nta->timer); diff --git a/lib/dns/private.c b/lib/dns/private.c index 8982b7a73f6..510b8fb0801 100644 --- a/lib/dns/private.c +++ b/lib/dns/private.c @@ -272,15 +272,9 @@ dns_private_chains(dns_db_t *db, dns_dbversion_t *ver, success: result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&nsecset)) { - dns_rdataset_disassociate(&nsecset); - } - if (dns_rdataset_isassociated(&nsec3paramset)) { - dns_rdataset_disassociate(&nsec3paramset); - } - if (dns_rdataset_isassociated(&privateset)) { - dns_rdataset_disassociate(&privateset); - } + dns_rdataset_cleanup(&nsecset); + dns_rdataset_cleanup(&nsec3paramset); + dns_rdataset_cleanup(&privateset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index afb530ef8af..e6d3618a961 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -443,19 +443,11 @@ free_glue(isc_mem_t *mctx, dns_glue_t *glue) { while (glue != NULL) { dns_glue_t *next = glue->next; - if (dns_rdataset_isassociated(&glue->rdataset_a)) { - dns_rdataset_disassociate(&glue->rdataset_a); - } - if (dns_rdataset_isassociated(&glue->sigrdataset_a)) { - dns_rdataset_disassociate(&glue->sigrdataset_a); - } + dns_rdataset_cleanup(&glue->rdataset_a); + dns_rdataset_cleanup(&glue->sigrdataset_a); - if (dns_rdataset_isassociated(&glue->rdataset_aaaa)) { - dns_rdataset_disassociate(&glue->rdataset_aaaa); - } - if (dns_rdataset_isassociated(&glue->sigrdataset_aaaa)) { - dns_rdataset_disassociate(&glue->sigrdataset_aaaa); - } + dns_rdataset_cleanup(&glue->rdataset_aaaa); + dns_rdataset_cleanup(&glue->sigrdataset_aaaa); dns_rdataset_invalidate(&glue->rdataset_a); dns_rdataset_invalidate(&glue->sigrdataset_a); @@ -5210,19 +5202,11 @@ glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype, result = ISC_R_SUCCESS; - if (dns_rdataset_isassociated(&rdataset_a)) { - dns_rdataset_disassociate(&rdataset_a); - } - if (dns_rdataset_isassociated(&sigrdataset_a)) { - dns_rdataset_disassociate(&sigrdataset_a); - } + dns_rdataset_cleanup(&rdataset_a); + dns_rdataset_cleanup(&sigrdataset_a); - if (dns_rdataset_isassociated(&rdataset_aaaa)) { - dns_rdataset_disassociate(&rdataset_aaaa); - } - if (dns_rdataset_isassociated(&sigrdataset_aaaa)) { - dns_rdataset_disassociate(&sigrdataset_aaaa); - } + dns_rdataset_cleanup(&rdataset_aaaa); + dns_rdataset_cleanup(&sigrdataset_aaaa); if (node_a != NULL) { dns__db_detachnode((dns_dbnode_t **)&node_a DNS__DB_FLARG_PASS); @@ -5482,9 +5466,7 @@ failure: if (node != NULL) { dns_db_detachnode(&node); } - if (dns_rdataset_isassociated(&ardataset)) { - dns_rdataset_disassociate(&ardataset); - } + dns_rdataset_cleanup(&ardataset); return result; } diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 989f892f6ae..09854aa750e 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -4491,9 +4491,7 @@ resume_qmin(void *arg) { break; } - if (dns_rdataset_isassociated(&fctx->nameservers)) { - dns_rdataset_disassociate(&fctx->nameservers); - } + dns_rdataset_cleanup(&fctx->nameservers); if (dns_rdatatype_atparent(fctx->type)) { findoptions |= DNS_DBFIND_NOEXACT; @@ -4552,12 +4550,8 @@ cleanup: if (db != NULL) { dns_db_detach(&db); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } - if (dns_rdataset_isassociated(&sigrdataset)) { - dns_rdataset_disassociate(&sigrdataset); - } + dns_rdataset_cleanup(&rdataset); + dns_rdataset_cleanup(&sigrdataset); if (result != ISC_R_SUCCESS) { /* An error occurred, tear down whole fctx */ fctx_failure_unref(fctx, result); @@ -4634,9 +4628,7 @@ fctx__destroy(fetchctx_t *fctx, const char *func, const char *file, } fcount_decr(fctx); dns_message_detach(&fctx->qmessage); - if (dns_rdataset_isassociated(&fctx->nameservers)) { - dns_rdataset_disassociate(&fctx->nameservers); - } + dns_rdataset_cleanup(&fctx->nameservers); dns_db_detach(&fctx->cache); dns_adb_detach(&fctx->adb); dns_dispatchmgr_detach(&fctx->dispatchmgr); @@ -5097,9 +5089,7 @@ cleanup_fcount: fcount_decr(fctx); cleanup_nameservers: - if (dns_rdataset_isassociated(&fctx->nameservers)) { - dns_rdataset_disassociate(&fctx->nameservers); - } + dns_rdataset_cleanup(&fctx->nameservers); isc_mem_free(fctx->mctx, fctx->info); if (fctx->nfails != NULL) { isc_counter_detach(&fctx->nfails); @@ -6939,17 +6929,13 @@ resume_dslookup(void *arg) { case ISC_R_SUCCESS: FCTXTRACE("resuming DS lookup"); - if (dns_rdataset_isassociated(&fctx->nameservers)) { - dns_rdataset_disassociate(&fctx->nameservers); - } + dns_rdataset_cleanup(&fctx->nameservers); dns_rdataset_clone(frdataset, &fctx->nameservers); /* * Disassociate now the NS's are saved. */ - if (dns_rdataset_isassociated(frdataset)) { - dns_rdataset_disassociate(frdataset); - } + dns_rdataset_cleanup(frdataset); fctx->ns_ttl = fctx->nameservers.ttl; fctx->ns_ttl_ok = true; @@ -6967,18 +6953,14 @@ resume_dslookup(void *arg) { case ISC_R_CANCELED: /* Don't try anymore. */ /* Can't be done in cleanup. */ - if (dns_rdataset_isassociated(frdataset)) { - dns_rdataset_disassociate(frdataset); - } + dns_rdataset_cleanup(frdataset); goto cleanup; default: /* * Disassociate for the next dns_resolver_createfetch call. */ - if (dns_rdataset_isassociated(frdataset)) { - dns_rdataset_disassociate(frdataset); - } + dns_rdataset_cleanup(frdataset); /* * If the chain of resume_dslookup() invocations managed to @@ -7020,9 +7002,7 @@ resume_dslookup(void *arg) { } } - if (dns_rdataset_isassociated(&nameservers)) { - dns_rdataset_disassociate(&nameservers); - } + dns_rdataset_cleanup(&nameservers); } cleanup: @@ -9132,9 +9112,7 @@ rctx_referral(respctx_t *rctx) { INSIST(dns_name_countlabels(fctx->domain) > 0); fcount_decr(fctx); - if (dns_rdataset_isassociated(&fctx->nameservers)) { - dns_rdataset_disassociate(&fctx->nameservers); - } + dns_rdataset_cleanup(&fctx->nameservers); dns_name_copy(rctx->ns_name, fctx->domain); @@ -9902,9 +9880,7 @@ prime_done(void *arg) { if (resp->db != NULL) { dns_db_detach(&resp->db); } - if (dns_rdataset_isassociated(resp->rdataset)) { - dns_rdataset_disassociate(resp->rdataset); - } + dns_rdataset_cleanup(resp->rdataset); INSIST(resp->sigrdataset == NULL); isc_mem_put(res->mctx, resp->rdataset, sizeof(*resp->rdataset)); @@ -10090,9 +10066,7 @@ fctx_minimize_qname(fetchctx_t *fctx) { result = dns_db_find(fctx->cache, &name, NULL, dns_rdatatype_ns, 0, 0, NULL, fname, &rdataset, NULL); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); switch (result) { case ISC_R_SUCCESS: case DNS_R_CNAME: diff --git a/lib/dns/rootns.c b/lib/dns/rootns.c index f5eadd98396..3306dbec944 100644 --- a/lib/dns/rootns.c +++ b/lib/dns/rootns.c @@ -170,9 +170,7 @@ check_hints(dns_db_t *db) { } cleanup: - if (dns_rdataset_isassociated(&rootns)) { - dns_rdataset_disassociate(&rootns); - } + dns_rdataset_cleanup(&rootns); if (rdsiter != NULL) { dns_rdatasetiter_destroy(&rdsiter); } @@ -368,12 +366,8 @@ check_address_records(dns_view_t *view, dns_db_t *hints, dns_db_t *db, report(view, name, true, &rdata); } } - if (dns_rdataset_isassociated(&rootrrset)) { - dns_rdataset_disassociate(&rootrrset); - } - if (dns_rdataset_isassociated(&hintrrset)) { - dns_rdataset_disassociate(&hintrrset); - } + dns_rdataset_cleanup(&rootrrset); + dns_rdataset_cleanup(&hintrrset); /* * Check AAAA records. @@ -414,12 +408,8 @@ check_address_records(dns_view_t *view, dns_db_t *hints, dns_db_t *db, report(view, name, true, &rdata); } } - if (dns_rdataset_isassociated(&rootrrset)) { - dns_rdataset_disassociate(&rootrrset); - } - if (dns_rdataset_isassociated(&hintrrset)) { - dns_rdataset_disassociate(&hintrrset); - } + dns_rdataset_cleanup(&rootrrset); + dns_rdataset_cleanup(&hintrrset); } void @@ -513,10 +503,6 @@ dns_root_checkhints(dns_view_t *view, dns_db_t *hints, dns_db_t *db) { } cleanup: - if (dns_rdataset_isassociated(&rootns)) { - dns_rdataset_disassociate(&rootns); - } - if (dns_rdataset_isassociated(&hintns)) { - dns_rdataset_disassociate(&hintns); - } + dns_rdataset_cleanup(&rootns); + dns_rdataset_cleanup(&hintns); } diff --git a/lib/dns/rriterator.c b/lib/dns/rriterator.c index 3e468cbe5fa..ef7d350542f 100644 --- a/lib/dns/rriterator.c +++ b/lib/dns/rriterator.c @@ -57,9 +57,7 @@ isc_result_t dns_rriterator_first(dns_rriterator_t *it) { REQUIRE(VALID_RRITERATOR(it)); /* Reset state */ - if (dns_rdataset_isassociated(&it->rdataset)) { - dns_rdataset_disassociate(&it->rdataset); - } + dns_rdataset_cleanup(&it->rdataset); if (it->rdatasetit != NULL) { dns_rdatasetiter_destroy(&it->rdatasetit); } @@ -108,9 +106,7 @@ dns_rriterator_first(dns_rriterator_t *it) { isc_result_t dns_rriterator_nextrrset(dns_rriterator_t *it) { REQUIRE(VALID_RRITERATOR(it)); - if (dns_rdataset_isassociated(&it->rdataset)) { - dns_rdataset_disassociate(&it->rdataset); - } + dns_rdataset_cleanup(&it->rdataset); it->result = dns_rdatasetiter_next(it->rdatasetit); /* * The while loop body is executed more than once @@ -177,9 +173,7 @@ dns_rriterator_pause(dns_rriterator_t *it) { void dns_rriterator_destroy(dns_rriterator_t *it) { REQUIRE(VALID_RRITERATOR(it)); - if (dns_rdataset_isassociated(&it->rdataset)) { - dns_rdataset_disassociate(&it->rdataset); - } + dns_rdataset_cleanup(&it->rdataset); if (it->rdatasetit != NULL) { dns_rdatasetiter_destroy(&it->rdatasetit); } diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index aa6e58305c7..218e45272c6 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -845,11 +845,7 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, { result = DNS_R_ZONECUT; dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); break; } else if (result == ISC_R_SUCCESS) { result = DNS_R_DELEGATION; diff --git a/lib/dns/tkey.c b/lib/dns/tkey.c index 028aed74dee..9f71c4e41cf 100644 --- a/lib/dns/tkey.c +++ b/lib/dns/tkey.c @@ -142,9 +142,7 @@ free_namelist(dns_message_t *msg, dns_namelist_t *namelist) { ISC_LIST_UNLINK(*namelist, name, link); ISC_LIST_FOREACH(name->list, set, link) { ISC_LIST_UNLINK(name->list, set, link); - if (dns_rdataset_isassociated(set)) { - dns_rdataset_disassociate(set); - } + dns_rdataset_cleanup(set); dns_message_puttemprdataset(msg, &set); } dns_message_puttempname(msg, &name); diff --git a/lib/dns/update.c b/lib/dns/update.c index 99f8318d537..f05330e25ad 100644 --- a/lib/dns/update.c +++ b/lib/dns/update.c @@ -1137,9 +1137,7 @@ add_sigs(dns_update_log_t *log, dns_zone_t *zone, dns_db_t *db, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/lib/dns/validator.c b/lib/dns/validator.c index b3a0b0513dd..6b9ce6e0710 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -191,15 +191,9 @@ validator_addede(dns_validator_t *val, uint16_t code, const char *extra); */ static void disassociate_rdatasets(dns_validator_t *val) { - if (dns_rdataset_isassociated(&val->fdsset)) { - dns_rdataset_disassociate(&val->fdsset); - } - if (dns_rdataset_isassociated(&val->frdataset)) { - dns_rdataset_disassociate(&val->frdataset); - } - if (dns_rdataset_isassociated(&val->fsigrdataset)) { - dns_rdataset_disassociate(&val->fsigrdataset); - } + dns_rdataset_cleanup(&val->fdsset); + dns_rdataset_cleanup(&val->frdataset); + dns_rdataset_cleanup(&val->fsigrdataset); } /*% @@ -436,9 +430,7 @@ fetch_callback_dnskey(void *arg) { if (resp->db != NULL) { dns_db_detach(&resp->db); } - if (dns_rdataset_isassociated(&val->fsigrdataset)) { - dns_rdataset_disassociate(&val->fsigrdataset); - } + dns_rdataset_cleanup(&val->fsigrdataset); validator_log(val, ISC_LOG_DEBUG(3), "in fetch_callback_dnskey"); @@ -531,9 +523,7 @@ fetch_callback_ds(void *arg) { if (resp->db != NULL) { dns_db_detach(&resp->db); } - if (dns_rdataset_isassociated(&val->fsigrdataset)) { - dns_rdataset_disassociate(&val->fsigrdataset); - } + dns_rdataset_cleanup(&val->fsigrdataset); validator_log(val, ISC_LOG_DEBUG(3), "in fetch_callback_ds"); @@ -1208,9 +1198,7 @@ seek_dnskey(dns_validator_t *val) { { dns_rdataset_disassociate(&val->frdataset); } - if (dns_rdataset_isassociated(&val->fsigrdataset)) { - dns_rdataset_disassociate(&val->fsigrdataset); - } + dns_rdataset_cleanup(&val->fsigrdataset); return validate_helper_run(val, resume_answer_with_key); } @@ -1247,9 +1235,7 @@ seek_dnskey(dns_validator_t *val) { { dns_rdataset_disassociate(&val->frdataset); } - if (dns_rdataset_isassociated(&val->fsigrdataset)) { - dns_rdataset_disassociate(&val->fsigrdataset); - } + dns_rdataset_cleanup(&val->fsigrdataset); return result; } @@ -2486,9 +2472,7 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type, if (!exists && NEEDNOQNAME(val)) { proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name; } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return ISC_R_SUCCESS; } @@ -2513,18 +2497,14 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type, if (!exists && NEEDNOQNAME(val)) { proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name; } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return ISC_R_SUCCESS; } } if (result == ISC_R_NOMORE) { result = ISC_R_SUCCESS; } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return result; } @@ -2573,9 +2553,7 @@ findnsec3proofs(dns_validator_t *val) { NULL, NULL, NULL, NULL, NULL, NULL, validator_log, val); if (result != ISC_R_IGNORE && result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return result; } } @@ -2585,9 +2563,7 @@ findnsec3proofs(dns_validator_t *val) { POST(result); if (dns_name_countlabels(zonename) == 0) { - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return ISC_R_SUCCESS; } @@ -2656,9 +2632,7 @@ findnsec3proofs(dns_validator_t *val) { { proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name; } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return result; } if (result != ISC_R_SUCCESS) { @@ -2711,15 +2685,11 @@ findnsec3proofs(dns_validator_t *val) { { result = checkwildcard(val, dns_rdatatype_nsec3, zonename); if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return result; } } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); return result; } @@ -3165,11 +3135,7 @@ seek_ds(dns_validator_t *val, isc_result_t *resp) { *keysetp = NULL; if (check_ds_private(&val->frdataset)) { - if (dns_rdataset_isassociated(&val->dsrdataset)) - { - dns_rdataset_disassociate( - &val->dsrdataset); - } + dns_rdataset_cleanup(&val->dsrdataset); dns_rdataset_clone(&val->frdataset, &val->dsrdataset); dssetp = &val->dsrdataset; @@ -3454,11 +3420,7 @@ proveunsecure(dns_validator_t *val, bool have_ds, bool have_dnskey, } if (!have_dnskey && check_ds_private(&val->frdataset)) { - if (dns_rdataset_isassociated(&val->dsrdataset)) - { - dns_rdataset_disassociate( - &val->dsrdataset); - } + dns_rdataset_cleanup(&val->dsrdataset); dns_rdataset_clone(&val->frdataset, &val->dsrdataset); dssetp = &val->dsrdataset; @@ -3780,9 +3742,7 @@ destroy_validator(dns_validator_t *val) { dns_keytable_detach(&val->keytable); } disassociate_rdatasets(val); - if (dns_rdataset_isassociated(&val->dsrdataset)) { - dns_rdataset_disassociate(&val->dsrdataset); - } + dns_rdataset_cleanup(&val->dsrdataset); mctx = val->view->mctx; if (val->siginfo != NULL) { isc_mem_put(mctx, val->siginfo, sizeof(*val->siginfo)); diff --git a/lib/dns/view.c b/lib/dns/view.c index 492cab865ae..2c5cf4ade1c 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -820,14 +820,8 @@ db_find: foundname, rdataset, sigrdataset); if (result == DNS_R_DELEGATION || result == ISC_R_NOTFOUND) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -881,14 +875,8 @@ db_find: if (result == ISC_R_NOTFOUND && !is_staticstub_zone && use_hints && view->hints != NULL) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); if (db != NULL) { if (node != NULL) { dns_db_detachnode(&node); @@ -929,9 +917,7 @@ db_find: cleanup: if (dns_rdataset_isassociated(&zrdataset)) { dns_rdataset_disassociate(&zrdataset); - if (dns_rdataset_isassociated(&zsigrdataset)) { - dns_rdataset_disassociate(&zsigrdataset); - } + dns_rdataset_cleanup(&zsigrdataset); } if (zdb != NULL) { @@ -984,27 +970,15 @@ dns_view_simplefind(dns_view_t *view, const dns_name_t *name, * foundname is not returned by this simplified API. We * disassociate them here to prevent any misuse by the caller. */ - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); } else if (result != ISC_R_SUCCESS && result != DNS_R_GLUE && result != DNS_R_HINT && result != DNS_R_NCACHENXDOMAIN && result != DNS_R_NCACHENXRRSET && result != DNS_R_NXRRSET && result != DNS_R_HINTNXRRSET && result != ISC_R_NOTFOUND) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); result = ISC_R_NOTFOUND; } @@ -1165,11 +1139,7 @@ finish: if (use_zone) { if (dns_rdataset_isassociated(rdataset)) { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } dns_name_copy(zfname, fname); if (dcname != NULL) { @@ -1193,9 +1163,7 @@ finish: * We can't even find the hints for the root * nameservers! */ - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); result = ISC_R_NOTFOUND; } else if (dcname != NULL) { dns_name_copy(fname, dcname); @@ -1205,9 +1173,7 @@ finish: cleanup: if (dns_rdataset_isassociated(&zrdataset)) { dns_rdataset_disassociate(&zrdataset); - if (dns_rdataset_isassociated(&zsigrdataset)) { - dns_rdataset_disassociate(&zsigrdataset); - } + dns_rdataset_cleanup(&zsigrdataset); } if (db != NULL) { dns_db_detach(&db); @@ -1644,9 +1610,7 @@ dns_view_istrusted(dns_view_t *view, const dns_name_t *keyname, } finish: - if (dns_rdataset_isassociated(&dsset)) { - dns_rdataset_disassociate(&dsset); - } + dns_rdataset_cleanup(&dsset); if (knode != NULL) { dns_keynode_detach(&knode); } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 1637af0e89f..50b29b3d0f8 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -3133,9 +3133,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa, case DNS_R_CNAME: break; default: - if (dns_rdataset_isassociated(&a)) { - dns_rdataset_disassociate(&a); - } + dns_rdataset_cleanup(&a); result = dns_db_find(db, name, NULL, dns_rdatatype_a, DNS_DBFIND_GLUEOK, 0, NULL, foundname, &a, NULL); @@ -3150,9 +3148,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa, if (result == ISC_R_SUCCESS) { *has_aaaa = true; } - if (dns_rdataset_isassociated(&aaaa)) { - dns_rdataset_disassociate(&aaaa); - } + dns_rdataset_cleanup(&aaaa); } return true; } else if (result == DNS_R_GLUE && has_a != NULL) { @@ -3168,9 +3164,7 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa, DNS_DBFIND_GLUEOK, 0, NULL, foundname, &aaaa, NULL); if (tresult == ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&a)) { - dns_rdataset_disassociate(&a); - } + dns_rdataset_cleanup(&a); SET_IF_NOT_NULL(has_aaaa, true); dns_rdataset_disassociate(&aaaa); return true; @@ -3189,12 +3183,8 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa, answer = (zone->checkns)(zone, name, owner, &a, &aaaa); } - if (dns_rdataset_isassociated(&a)) { - dns_rdataset_disassociate(&a); - } - if (dns_rdataset_isassociated(&aaaa)) { - dns_rdataset_disassociate(&aaaa); - } + dns_rdataset_cleanup(&a); + dns_rdataset_cleanup(&aaaa); return answer; } } @@ -3247,12 +3237,8 @@ zone_check_glue(dns_zone_t *zone, dns_db_t *db, bool *has_a, bool *has_aaaa, /* answer = false; */ } - if (dns_rdataset_isassociated(&a)) { - dns_rdataset_disassociate(&a); - } - if (dns_rdataset_isassociated(&aaaa)) { - dns_rdataset_disassociate(&aaaa); - } + dns_rdataset_cleanup(&a); + dns_rdataset_cleanup(&aaaa); return answer; } @@ -3411,9 +3397,7 @@ zone_is_served_by(dns_zone_t *zone, dns_db_t *db, dns_rdatatype_t type, dns_rdataset_init(&rdataset); result = dns_db_find(db, name, NULL, type, 0, 0, NULL, foundname, &rdataset, NULL); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); switch (result) { case DNS_R_DELEGATION: if (zone->checkisservedby != NULL) { @@ -3762,9 +3746,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { result = dns_db_find(db, &zone->origin, NULL, dns_rdatatype_ns, 0, 0, NULL, name, &rdataset, NULL); if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); goto cleanup; } @@ -3794,9 +3776,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { result = dns_db_find(db, &zone->origin, NULL, dns_rdatatype_ns, 0, 0, NULL, name, &rdataset, NULL); if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); goto cleanup; } @@ -4434,9 +4414,7 @@ check_nsec3param(dns_zone_t *zone, dns_db_t *db) { } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_db_closeversion(db, &version, false); dns_db_detachnode(&node); return result; @@ -6775,9 +6753,7 @@ findzonekeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (pubkey != NULL) { dst_key_free(&pubkey); } @@ -6904,9 +6880,7 @@ dns_zone_getdnsseckeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, } cleanup: - if (dns_rdataset_isassociated(&keyset)) { - dns_rdataset_disassociate(&keyset); - } + dns_rdataset_cleanup(&keyset); if (node != NULL) { dns_db_detachnode(&node); } @@ -7458,9 +7432,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_zone_t *zone, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -7981,9 +7953,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name, DNS_RDATASETITER_FOREACH(iterator) { isc_stdtime_t when; - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_rdatasetiter_current(iterator, &rdataset); if (rdataset.type == dns_rdatatype_soa || @@ -8061,9 +8031,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (iterator != NULL) { dns_rdatasetiter_destroy(&iterator); } @@ -8086,9 +8054,7 @@ updatesecure(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, result = dns_db_findrdataset( db, node, version, dns_rdatatype_nsec, dns_rdatatype_none, 0, &rdataset, NULL); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (result == ISC_R_NOTFOUND) { goto success; } @@ -8221,9 +8187,7 @@ updatesignwithkey(dns_zone_t *zone, dns_signing_t *signing, } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -8284,9 +8248,7 @@ fixup_nsec3param(dns_db_t *db, dns_dbversion_t *ver, dns_nsec3chain_t *chain, ttl = soa.minimum; dns_rdata_reset(&rdata); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); result = dns_db_findrdataset(db, node, ver, dns_rdatatype_nsec3param, 0, 0, &rdataset, NULL); @@ -8426,9 +8388,7 @@ add: cleanup: dns_db_detachnode(&node); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } @@ -8573,9 +8533,7 @@ need_nsec_chain(dns_db_t *db, dns_dbversion_t *ver, *answer = !active; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_db_detachnode(&node); return result; } @@ -9604,9 +9562,7 @@ del_sig(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, */ *has_algp = (alg_found && !alg_missed); cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_rdatasetiter_destroy(&iterator); return result; } @@ -10603,9 +10559,7 @@ keyfetch_cleanup(dns_zonefetch_t *fetch) { dns_db_detach(&kfetch->db); - if (dns_rdataset_isassociated(&kfetch->keydataset)) { - dns_rdataset_disassociate(&kfetch->keydataset); - } + dns_rdataset_cleanup(&kfetch->keydataset); } /* @@ -16195,25 +16149,19 @@ sync_secure_db(dns_zone_t *seczone, dns_zone_t *raw, dns_db_t *secdb, secdb, node, secver, dns_rdatatype_dnskey, dns_rdatatype_none, 0, &rdataset, NULL); keyttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl; - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); result = dns_db_findrdataset( secdb, node, secver, dns_rdatatype_cdnskey, dns_rdatatype_none, 0, &rdataset, NULL); ckeyttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl; - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); result = dns_db_findrdataset( secdb, node, secver, dns_rdatatype_cds, dns_rdatatype_none, 0, &rdataset, NULL); cdsttl = (result == ISC_R_SUCCESS) ? rdataset.ttl : ttl; - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_db_detachnode(&node); } @@ -16822,12 +16770,8 @@ cleanup: if (db != NULL) { dns_db_detach(&db); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } - if (dns_rdataset_isassociated(&prdataset)) { - dns_rdataset_disassociate(&prdataset); - } + dns_rdataset_cleanup(&rdataset); + dns_rdataset_cleanup(&prdataset); return result; } @@ -19988,9 +19932,7 @@ clean_nsec3param(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, result = dns_db_findrdataset(db, node, ver, dns_rdatatype_dnskey, dns_rdatatype_none, 0, &rdataset, NULL); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (result != ISC_R_NOTFOUND) { goto cleanup; } @@ -22077,21 +22019,11 @@ cleanup: if (ver != NULL) { dns_db_closeversion(db, &ver, false); } - if (dns_rdataset_isassociated(&cdsset)) { - dns_rdataset_disassociate(&cdsset); - } - if (dns_rdataset_isassociated(&keyset)) { - dns_rdataset_disassociate(&keyset); - } - if (dns_rdataset_isassociated(&keysigs)) { - dns_rdataset_disassociate(&keysigs); - } - if (dns_rdataset_isassociated(&soasigs)) { - dns_rdataset_disassociate(&soasigs); - } - if (dns_rdataset_isassociated(&cdnskeyset)) { - dns_rdataset_disassociate(&cdnskeyset); - } + dns_rdataset_cleanup(&cdsset); + dns_rdataset_cleanup(&keyset); + dns_rdataset_cleanup(&keysigs); + dns_rdataset_cleanup(&soasigs); + dns_rdataset_cleanup(&cdnskeyset); if (node != NULL) { dns_db_detachnode(&node); } @@ -22400,15 +22332,9 @@ dns_zone_cdscheck(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version) { result = ISC_R_SUCCESS; cleanup: - if (dns_rdataset_isassociated(&cds)) { - dns_rdataset_disassociate(&cds); - } - if (dns_rdataset_isassociated(&dnskey)) { - dns_rdataset_disassociate(&dnskey); - } - if (dns_rdataset_isassociated(&cdnskey)) { - dns_rdataset_disassociate(&cdnskey); - } + dns_rdataset_cleanup(&cds); + dns_rdataset_cleanup(&dnskey); + dns_rdataset_cleanup(&cdnskey); dns_db_detachnode(&node); return result; } @@ -22751,9 +22677,7 @@ keydone(void *arg) { } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (db != NULL) { if (node != NULL) { dns_db_detachnode(&node); @@ -23103,12 +23027,8 @@ rss_post(void *arg) { } cleanup: - if (dns_rdataset_isassociated(&prdataset)) { - dns_rdataset_disassociate(&prdataset); - } - if (dns_rdataset_isassociated(&nrdataset)) { - dns_rdataset_disassociate(&nrdataset); - } + dns_rdataset_cleanup(&prdataset); + dns_rdataset_cleanup(&nrdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -23272,9 +23192,7 @@ setparam: } cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/lib/dns/zonefetch.c b/lib/dns/zonefetch.c index 6e9615f7a77..27319cc9eff 100644 --- a/lib/dns/zonefetch.c +++ b/lib/dns/zonefetch.c @@ -160,12 +160,8 @@ dns_zonefetch_done(void *arg) { cleanup: isc_refcount_decrement(dns__zone_irefs(zone)); - if (dns_rdataset_isassociated(rrset)) { - dns_rdataset_disassociate(rrset); - } - if (dns_rdataset_isassociated(sigset)) { - dns_rdataset_disassociate(sigset); - } + dns_rdataset_cleanup(rrset); + dns_rdataset_cleanup(sigset); fetch->fetchmethods.cleanup_fetch(fetch); diff --git a/lib/dns/zoneverify.c b/lib/dns/zoneverify.c index 5cde1aa4f08..e0090f17f75 100644 --- a/lib/dns/zoneverify.c +++ b/lib/dns/zoneverify.c @@ -159,9 +159,7 @@ has_dname(const vctx_t *vctx, dns_dbnode_t *node) { result = dns_db_findrdataset(vctx->db, node, vctx->ver, dns_rdatatype_dname, 0, 0, &dnameset, NULL); - if (dns_rdataset_isassociated(&dnameset)) { - dns_rdataset_disassociate(&dnameset); - } + dns_rdataset_cleanup(&dnameset); return result == ISC_R_SUCCESS; } @@ -291,9 +289,7 @@ verifynsec(const vctx_t *vctx, const dns_name_t *name, dns_dbnode_t *node, result = ISC_R_SUCCESS; done: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } @@ -331,9 +327,7 @@ check_no_rrsig(const vctx_t *vctx, const dns_rdataset_t *rdataset, } dns_rdataset_disassociate(&sigrdataset); } - if (dns_rdataset_isassociated(&sigrdataset)) { - dns_rdataset_disassociate(&sigrdataset); - } + dns_rdataset_cleanup(&sigrdataset); dns_rdatasetiter_destroy(&rdsiter); return ISC_R_SUCCESS; @@ -659,9 +653,7 @@ isoptout(const vctx_t *vctx, const dns_rdata_nsec3param_t *nsec3param, *optout = ((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0); done: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -754,9 +746,7 @@ verifynsec3(const vctx_t *vctx, const dns_name_t *name, result = ISC_R_SUCCESS; done: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -879,9 +869,7 @@ verifyset(vctx_t *vctx, dns_rdataset_t *rdataset, const dns_name_t *name, } done: - if (dns_rdataset_isassociated(&sigrdataset)) { - dns_rdataset_disassociate(&sigrdataset); - } + dns_rdataset_cleanup(&sigrdataset); dns_rdatasetiter_destroy(&rdsiter); return result; @@ -1011,9 +999,7 @@ check_no_nsec(const vctx_t *vctx, const dns_name_t *name, dns_dbnode_t *node) { nsec_exists = true; } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return nsec_exists ? ISC_R_FAILURE : ISC_R_SUCCESS; } @@ -1270,30 +1256,14 @@ vctx_init(vctx_t *vctx, isc_mem_t *mctx, dns_zone_t *zone, dns_db_t *db, static void vctx_destroy(vctx_t *vctx) { - if (dns_rdataset_isassociated(&vctx->keyset)) { - dns_rdataset_disassociate(&vctx->keyset); - } - if (dns_rdataset_isassociated(&vctx->keysigs)) { - dns_rdataset_disassociate(&vctx->keysigs); - } - if (dns_rdataset_isassociated(&vctx->soaset)) { - dns_rdataset_disassociate(&vctx->soaset); - } - if (dns_rdataset_isassociated(&vctx->soasigs)) { - dns_rdataset_disassociate(&vctx->soasigs); - } - if (dns_rdataset_isassociated(&vctx->nsecset)) { - dns_rdataset_disassociate(&vctx->nsecset); - } - if (dns_rdataset_isassociated(&vctx->nsecsigs)) { - dns_rdataset_disassociate(&vctx->nsecsigs); - } - if (dns_rdataset_isassociated(&vctx->nsec3paramset)) { - dns_rdataset_disassociate(&vctx->nsec3paramset); - } - if (dns_rdataset_isassociated(&vctx->nsec3paramsigs)) { - dns_rdataset_disassociate(&vctx->nsec3paramsigs); - } + dns_rdataset_cleanup(&vctx->keyset); + dns_rdataset_cleanup(&vctx->keysigs); + dns_rdataset_cleanup(&vctx->soaset); + dns_rdataset_cleanup(&vctx->soasigs); + dns_rdataset_cleanup(&vctx->nsecset); + dns_rdataset_cleanup(&vctx->nsecsigs); + dns_rdataset_cleanup(&vctx->nsec3paramset); + dns_rdataset_cleanup(&vctx->nsec3paramsigs); isc_heap_foreach(vctx->expected_chains, free_element_heap, vctx->mctx); isc_heap_destroy(&vctx->expected_chains); isc_heap_foreach(vctx->found_chains, free_element_heap, vctx->mctx); diff --git a/lib/ns/client.c b/lib/ns/client.c index d35891d45b1..703dc618230 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -2985,9 +2985,7 @@ ns_client_putrdataset(ns_client_t *client, dns_rdataset_t **rdatasetp) { rdataset = *rdatasetp; if (rdataset != NULL) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); dns_message_puttemprdataset(client->message, rdatasetp); } } diff --git a/lib/ns/query.c b/lib/ns/query.c index 929b2bbbcde..99c51599087 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -1679,15 +1679,9 @@ query_additionalauthfind(dns_db_t *db, dns_dbversion_t *version, client->query.dboptions, client->inner.now, &node, fname, &cm, &ci, rdataset, sigrdataset); if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); if (node != NULL) { dns_db_detachnode(&node); @@ -1911,12 +1905,8 @@ query_additional_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype, goto found; } - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (sigrdataset != NULL && dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -2021,16 +2011,12 @@ found: * XXXRTH This code could be more efficient. */ if (rdataset != NULL) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); } else { rdataset = ns_client_newrdataset(client); } if (sigrdataset != NULL) { - if (dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } else if (WANTDNSSEC(client)) { sigrdataset = ns_client_newrdataset(client); } @@ -2044,11 +2030,7 @@ found: goto addname; } else if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } else if (result == ISC_R_SUCCESS) { bool invalid = false; mname = NULL; @@ -2063,11 +2045,7 @@ found: } if (invalid && DNS_TRUST_PENDING(rdataset->trust)) { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } else if (!query_isduplicate(client, fname, dns_rdatatype_a, &mname)) { @@ -2093,11 +2071,7 @@ found: rdataset = ns_client_newrdataset(client); } else { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } } aaaa_lookup: @@ -2112,11 +2086,7 @@ found: goto addname; } else if (result == DNS_R_NCACHENXRRSET) { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } else if (result == ISC_R_SUCCESS) { bool invalid = false; mname = NULL; @@ -2133,11 +2103,7 @@ found: if (invalid && DNS_TRUST_PENDING(rdataset->trust)) { dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); } else if (!query_isduplicate(client, fname, dns_rdatatype_aaaa, &mname)) @@ -2583,9 +2549,7 @@ validate(ns_client_t *client, dns_db_t *db, dns_name_t *name, } dst_key_free(&key); } while (1); - if (dns_rdataset_isassociated(&keyrdataset)) { - dns_rdataset_disassociate(&keyrdataset); - } + dns_rdataset_cleanup(&keyrdataset); } return false; } @@ -2594,8 +2558,8 @@ static void fixrdataset(ns_client_t *client, dns_rdataset_t **rdataset) { if (*rdataset == NULL) { *rdataset = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(*rdataset)) { - dns_rdataset_disassociate(*rdataset); + } else { + dns_rdataset_cleanup(*rdataset); } } @@ -2990,8 +2954,8 @@ rpz_ready(ns_client_t *client, dns_rdataset_t **rdatasetp) { if (*rdatasetp == NULL) { *rdatasetp = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(*rdatasetp)) { - dns_rdataset_disassociate(*rdatasetp); + } else { + dns_rdataset_cleanup(*rdatasetp); } return ISC_R_SUCCESS; } @@ -3394,9 +3358,7 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype, * Ask again to get the right DNS_R_DNAME/NXRRSET/... * result if there is neither a CNAME nor target type. */ - if (dns_rdataset_isassociated(*rdatasetp)) { - dns_rdataset_disassociate(*rdatasetp); - } + dns_rdataset_cleanup(*rdatasetp); dns_db_detachnode(nodep); if (dns_rdatatype_issig(qtype)) { @@ -3963,11 +3925,7 @@ rpz_rewrite_ns_skip(ns_client_t *client, dns_name_t *nsname, rpz_log_fail_helper(client, level, nsname, DNS_RPZ_TYPE_NSIP, DNS_RPZ_TYPE_NSDNAME, str, result); } - if (st->r.ns_rdataset != NULL && - dns_rdataset_isassociated(st->r.ns_rdataset)) - { - dns_rdataset_disassociate(st->r.ns_rdataset); - } + dns_rdataset_cleanup(st->r.ns_rdataset); st->r.label--; } @@ -4631,9 +4589,7 @@ again: dns_name_issubdomain(&name, dns_db_origin(db))) { dns_rdataset_disassociate(rdataset); - if (dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(sigrdataset); skip++; dns_name_getlabelsequence(qname, skip, labels - skip, &name); @@ -4689,9 +4645,7 @@ dns64_ttl(dns_db_t *db, dns_dbversion_t *version) { ttl = ISC_MIN(rdataset.ttl, soa.minimum); cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -4842,17 +4796,11 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, qtype, DNS_DBFIND_NOZONECUT, client->inner.now, &node, found, &cm, &ci, &trdataset, NULL); if (result == DNS_R_NXRRSET || result == DNS_R_NCACHENXRRSET) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(&trdataset); goto nxrrset; } else if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -4862,9 +4810,7 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, CTRACE(ISC_LOG_DEBUG(3), "redirect: found data: done"); dns_name_copy(found, name); - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); if (dns_rdataset_isassociated(&trdataset)) { dns_rdataset_clone(&trdataset, rdataset); dns_rdataset_disassociate(&trdataset); @@ -4984,20 +4930,14 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, client->inner.now, &node, found, &cm, &ci, &trdataset, NULL); if (result == DNS_R_NXRRSET || result == DNS_R_NCACHENXRRSET) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(&trdataset); goto nxrrset; } else if (result == ISC_R_NOTFOUND || result == DNS_R_DELEGATION) { /* * Cleanup. */ - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -5018,9 +4958,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, } return ISC_R_NOTFOUND; } else if (result != ISC_R_SUCCESS) { - if (dns_rdataset_isassociated(&trdataset)) { - dns_rdataset_disassociate(&trdataset); - } + dns_rdataset_cleanup(&trdataset); if (node != NULL) { dns_db_detachnode(&node); } @@ -5042,9 +4980,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_name_copy(found, name); - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); if (dns_rdataset_isassociated(&trdataset)) { dns_rdataset_clone(&trdataset, rdataset); dns_rdataset_disassociate(&trdataset); @@ -5113,15 +5049,8 @@ qctx_init(ns_client_t *client, dns_fetchresponse_t **frespp, */ static void qctx_clean(query_ctx_t *qctx) { - if (qctx->rdataset != NULL && dns_rdataset_isassociated(qctx->rdataset)) - { - dns_rdataset_disassociate(qctx->rdataset); - } - if (qctx->sigrdataset != NULL && - dns_rdataset_isassociated(qctx->sigrdataset)) - { - dns_rdataset_disassociate(qctx->sigrdataset); - } + dns_rdataset_cleanup(qctx->rdataset); + dns_rdataset_cleanup(qctx->sigrdataset); if (qctx->db != NULL && qctx->node != NULL) { dns_db_detachnode(&qctx->node); } @@ -5929,11 +5858,7 @@ query_lookup(query_ctx_t *qctx) { */ if (qctx->dns64 && qctx->rpz) { dns_name_copy(qctx->client->query.qname, qctx->fname); - if (qctx->sigrdataset != NULL && - dns_rdataset_isassociated(qctx->sigrdataset)) - { - dns_rdataset_disassociate(qctx->sigrdataset); - } + dns_rdataset_cleanup(qctx->sigrdataset); } if (!qctx->is_zone) { @@ -7179,10 +7104,7 @@ query_checkrpz(query_ctx_t *qctx, isc_result_t result) { * the node by iterating later, * and set the TTL then. */ - if (dns_rdataset_isassociated(qctx->rdataset)) { - dns_rdataset_disassociate( - qctx->rdataset); - } + dns_rdataset_cleanup(qctx->rdataset); } else { /* * We will add this rdataset. @@ -7636,14 +7558,14 @@ query_addnoqnameproof(query_ctx_t *qctx) { if (neg == NULL) { neg = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(neg)) { - dns_rdataset_disassociate(neg); + } else { + dns_rdataset_cleanup(neg); } if (negsig == NULL) { negsig = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(negsig)) { - dns_rdataset_disassociate(negsig); + } else { + dns_rdataset_cleanup(negsig); } result = dns_rdataset_getclosest(qctx->noqname, fname, neg, negsig); @@ -8858,12 +8780,8 @@ addnsec3: dbuf = ns_client_getnamebuf(client); fname = ns_client_newname(client, dbuf, &b); dns_fixedname_init(&fixed); - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } - if (dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); - } + dns_rdataset_cleanup(rdataset); + dns_rdataset_cleanup(sigrdataset); name = dns_fixedname_name(&qctx->dsname); query_findclosestnsec3(name, qctx->db, qctx->version, client, rdataset, sigrdataset, fname, true, @@ -9970,12 +9888,8 @@ query_coveringnsec(query_ctx_t *qctx) { done = true; cleanup: - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } - if (dns_rdataset_isassociated(&sigrdataset)) { - dns_rdataset_disassociate(&sigrdataset); - } + dns_rdataset_cleanup(&rdataset); + dns_rdataset_cleanup(&sigrdataset); if (soardataset != NULL) { ns_client_putrdataset(qctx->client, &soardataset); } @@ -10396,9 +10310,7 @@ query_addcname(query_ctx_t *qctx, dns_trust_t trust, dns_ttl_t ttl) { query_addrrset(qctx, &aname, &rdataset, NULL, NULL, DNS_SECTION_ANSWER); if (rdataset != NULL) { - if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); - } + dns_rdataset_cleanup(rdataset); dns_message_puttemprdataset(client->message, &rdataset); } if (aname != NULL) { @@ -11039,14 +10951,14 @@ again: if (rdataset == NULL) { rdataset = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); + } else { + dns_rdataset_cleanup(rdataset); } if (sigrdataset == NULL) { sigrdataset = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); + } else { + dns_rdataset_cleanup(sigrdataset); } /* @@ -11090,14 +11002,14 @@ again: if (rdataset == NULL) { rdataset = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(rdataset)) { - dns_rdataset_disassociate(rdataset); + } else { + dns_rdataset_cleanup(rdataset); } if (sigrdataset == NULL) { sigrdataset = ns_client_newrdataset(client); - } else if (dns_rdataset_isassociated(sigrdataset)) { - dns_rdataset_disassociate(sigrdataset); + } else { + dns_rdataset_cleanup(sigrdataset); } /* diff --git a/lib/ns/update.c b/lib/ns/update.c index d01489beaf7..425169d8725 100644 --- a/lib/ns/update.c +++ b/lib/ns/update.c @@ -2224,9 +2224,7 @@ cleanup: if (node != NULL) { dns_db_detachnode(&node); } - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); return result; } diff --git a/tests/dns/db_test.c b/tests/dns/db_test.c index d1faaf555c3..59635d4fcc2 100644 --- a/tests/dns/db_test.c +++ b/tests/dns/db_test.c @@ -376,9 +376,7 @@ ISC_LOOP_TEST_IMPL(version) { foundname, &rdataset, NULL); assert_int_equal(result, DNS_R_NXDOMAIN); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); if (node != NULL) { dns_db_detachnode(&node); } diff --git a/tests/dns/dbversion_test.c b/tests/dns/dbversion_test.c index 1a50335930f..a4f57ec6e52 100644 --- a/tests/dns/dbversion_test.c +++ b/tests/dns/dbversion_test.c @@ -181,9 +181,7 @@ ISC_RUN_TEST_IMPL(find) { */ assert_true(res == DNS_R_NXRRSET || res == DNS_R_NXDOMAIN); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_rdataset_init(&rdataset); check_assertion((void)dns_db_find(db1, dns_rootname, v2, @@ -236,9 +234,7 @@ ISC_RUN_TEST_IMPL(findrdataset) { &rdataset, NULL); assert_int_equal(res, ISC_R_NOTFOUND); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_rdataset_init(&rdataset); check_assertion(dns_db_findrdataset(db1, node, v2, dns_rdatatype_soa, 0, @@ -305,9 +301,7 @@ ISC_RUN_TEST_IMPL(subtract) { res = dns_db_subtractrdataset(db1, node, v1, &rdataset, 0, NULL); assert_int_equal(res, DNS_R_UNCHANGED); - if (dns_rdataset_isassociated(&rdataset)) { - dns_rdataset_disassociate(&rdataset); - } + dns_rdataset_cleanup(&rdataset); dns_rdataset_init(&rdataset); dns_rdatalist_tordataset(&rdatalist, &rdataset);