From 81bde388e4303c463549c53773e8a0dfb00c3e53 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Mon, 30 Jan 2023 13:44:47 +1100 Subject: [PATCH] dnssec-cds failed to cleanup on non error paths dnssec-cds failed to cleanup on non error paths which meant that the OpenSSL libraries could not cleanup properly. --- bin/dnssec/dnssec-cds.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bin/dnssec/dnssec-cds.c b/bin/dnssec/dnssec-cds.c index 86271fcbc02..73a5c1c6253 100644 --- a/bin/dnssec/dnssec-cds.c +++ b/bin/dnssec/dnssec-cds.c @@ -125,10 +125,14 @@ typedef isc_result_t ds_maker_func_t(isc_buffer_t *buf, dns_rdata_t *ds, dns_dsdigest_t dt, dns_rdata_t *crdata); -static dns_rdataset_t cdnskey_set, cdnskey_sig; -static dns_rdataset_t cds_set, cds_sig; -static dns_rdataset_t dnskey_set, dnskey_sig; -static dns_rdataset_t old_ds_set, new_ds_set; +static dns_rdataset_t cdnskey_set = DNS_RDATASET_INIT; +static dns_rdataset_t cdnskey_sig = DNS_RDATASET_INIT; +static dns_rdataset_t cds_set = DNS_RDATASET_INIT; +static dns_rdataset_t cds_sig = DNS_RDATASET_INIT; +static dns_rdataset_t dnskey_set = DNS_RDATASET_INIT; +static dns_rdataset_t dnskey_sig = DNS_RDATASET_INIT; +static dns_rdataset_t old_ds_set = DNS_RDATASET_INIT; +static dns_rdataset_t new_ds_set = DNS_RDATASET_INIT; static keyinfo_t *old_key_tbl, *new_key_tbl; @@ -1242,7 +1246,7 @@ main(int argc, char *argv[]) { vbprintf(1, "%s has neither CDS nor CDNSKEY records\n", namestr); write_parent_set(ds_path, inplace, nsupdate, &old_ds_set); - exit(0); + goto cleanup; } /* @@ -1308,6 +1312,7 @@ main(int argc, char *argv[]) { write_parent_set(ds_path, inplace, nsupdate, &new_ds_set); +cleanup: free_all_sets(); cleanup_logging(&lctx); dst_lib_destroy(); -- 2.47.3