goto fail; \
}
+isc_bufferlist_t cleanup_list = ISC_LIST_INITIALIZER;
+
static void
usage(int ret) {
fprintf(stderr, "Usage:\n");
dns_dnsseckey_destroy(mctx, &key);
}
dns_kasp_detach(&kasp);
+
+ isc_buffer_t *cbuf = ISC_LIST_HEAD(cleanup_list);
+ while (cbuf != NULL) {
+ isc_buffer_t *nbuf = ISC_LIST_NEXT(cbuf, link);
+ ISC_LIST_UNLINK(cleanup_list, cbuf, link);
+ isc_buffer_free(&cbuf);
+ cbuf = nbuf;
+ }
}
static void
char timestr[26]; /* Minimal buf as per ctime_r() spec. */
dns_rdatalist_t *rdatalist = NULL;
dns_rdataset_t rdataset = DNS_RDATASET_INIT;
- isc_bufferlist_t cleanup = ISC_LIST_INITIALIZER;
- isc_buffer_t *cbuf = NULL;
isc_result_t ret = ISC_R_SUCCESS;
isc_stdtime_t next_bundle = next_inception;
dns_rdata_fromregion(rdata, dns_rdataclass_in,
dns_rdatatype_dnskey, &r);
ISC_LIST_APPEND(rdatalist->rdata, rdata, link);
- ISC_LIST_APPEND(cleanup, newbuf, link);
+ ISC_LIST_APPEND(cleanup_list, newbuf, link);
isc_buffer_clear(newbuf);
}
/* Error if no key pair found. */
/* Cleanup */
freerrset(&rdataset);
- cbuf = ISC_LIST_HEAD(cleanup);
- while (cbuf != NULL) {
- isc_buffer_t *nbuf = ISC_LIST_NEXT(cbuf, link);
- ISC_LIST_UNLINK(cleanup, cbuf, link);
- isc_buffer_free(&cbuf);
- cbuf = nbuf;
- }
-
if (ret != ISC_R_SUCCESS) {
fatal("failed to print %s/%s %s key pair found for bundle %s",
namestr, algstr, rolestr, timestr);
dns_rdataset_t *rrset, dns_dnsseckeylist_t *keys) {
dns_rdatalist_t *rrsiglist = NULL;
dns_rdataset_t rrsigset = DNS_RDATASET_INIT;
- isc_bufferlist_t cleanup = ISC_LIST_INITIALIZER;
- isc_buffer_t *cbuf = NULL;
isc_result_t ret;
UNUSED(ksr);
dns_rdata_fromregion(rrsig, dns_rdataclass_in,
dns_rdatatype_rrsig, &rs);
ISC_LIST_APPEND(rrsiglist->rdata, rrsig, link);
- ISC_LIST_APPEND(cleanup, newbuf, link);
+ ISC_LIST_APPEND(cleanup_list, newbuf, link);
isc_buffer_clear(newbuf);
}
dns_rdatalist_tordataset(rrsiglist, &rrsigset);
print_rdata(&rrsigset);
freerrset(&rrsigset);
-
- cbuf = ISC_LIST_HEAD(cleanup);
- while (cbuf != NULL) {
- isc_buffer_t *nbuf = ISC_LIST_NEXT(cbuf, link);
- ISC_LIST_UNLINK(cleanup, cbuf, link);
- isc_buffer_free(&cbuf);
- cbuf = nbuf;
- }
}
static void
dns_rdataset_t *cdnskeyset, dns_rdataset_t *cdsset) {
dns_rdatalist_t *cdnskeylist = isc_mem_get(mctx, sizeof(*cdnskeylist));
dns_rdatalist_t *cdslist = isc_mem_get(mctx, sizeof(*cdslist));
- isc_bufferlist_t cleanup = ISC_LIST_INITIALIZER;
- isc_buffer_t *cbuf = NULL;
isc_result_t ret = ISC_R_SUCCESS;
dns_kasp_digestlist_t digests = dns_kasp_digests(kasp);
if (dns_kasp_cdnskey(kasp)) {
ISC_LIST_APPEND(cdnskeylist->rdata, rdata, link);
}
- ISC_LIST_APPEND(cleanup, newbuf, link);
+ ISC_LIST_APPEND(cleanup_list, newbuf, link);
isc_buffer_clear(newbuf);
for (dns_kasp_digest_t *alg = ISC_LIST_HEAD(digests);
alg != NULL; alg = ISC_LIST_NEXT(alg, link))
{
+ isc_buffer_t *newbuf2 = NULL;
dns_rdata_t *rdata2 = NULL;
dns_rdata_t cds = DNS_RDATA_INIT;
rdata2 = isc_mem_get(mctx, sizeof(*rdata2));
dns_rdata_init(rdata2);
- newbuf = NULL;
CHECK(dns_ds_buildrdata(name, rdata, alg->digest,
cdsbuf, &cds));
cds.type = dns_rdatatype_cds;
dns_rdata_toregion(&cds, &rcds);
- isc_buffer_allocate(mctx, &newbuf, rcds.length);
- isc_buffer_putmem(newbuf, rcds.base, rcds.length);
- isc_buffer_usedregion(newbuf, &rcds);
+ isc_buffer_allocate(mctx, &newbuf2, rcds.length);
+ isc_buffer_putmem(newbuf2, rcds.base, rcds.length);
+ isc_buffer_usedregion(newbuf2, &rcds);
dns_rdata_fromregion(rdata2, dns_rdataclass_in,
dns_rdatatype_cds, &rcds);
ISC_LIST_APPEND(cdslist->rdata, rdata2, link);
- ISC_LIST_APPEND(cleanup, newbuf, link);
- isc_buffer_clear(newbuf);
+ ISC_LIST_APPEND(cleanup_list, newbuf2, link);
+ isc_buffer_clear(newbuf2);
+ }
+
+ if (!dns_kasp_cdnskey(kasp)) {
+ isc_mem_put(mctx, rdata, sizeof(*rdata));
}
}
/* All good */
return;
fail:
- cbuf = ISC_LIST_HEAD(cleanup);
- while (cbuf != NULL) {
- isc_buffer_t *nbuf = ISC_LIST_NEXT(cbuf, link);
- ISC_LIST_UNLINK(cleanup, cbuf, link);
- isc_buffer_free(&cbuf);
- cbuf = nbuf;
- }
-
fatal("failed to create CDS/CDNSKEY");
}
dns_rdatalist_t *rdatalist = NULL;
dns_rdataset_t cdnskey = DNS_RDATASET_INIT;
dns_rdataset_t cds = DNS_RDATASET_INIT;
- isc_bufferlist_t cleanup_list = ISC_LIST_INITIALIZER;
- isc_buffer_t *cbuf = NULL;
isc_result_t ret;
isc_stdtime_t inception;
isc_lex_t *lex = NULL;
freerrset(&cds);
freerrset(&cdnskey);
- cbuf = ISC_LIST_HEAD(cleanup_list);
- while (cbuf != NULL) {
- isc_buffer_t *nbuf = ISC_LIST_NEXT(cbuf, link);
- ISC_LIST_UNLINK(cleanup_list, cbuf, link);
- isc_buffer_free(&cbuf);
- cbuf = nbuf;
- }
-
isc_lex_destroy(&lex);
cleanup(&keys, kasp);
}