From: Matthijs Mekking Date: Wed, 12 Dec 2018 13:06:10 +0000 (+0100) Subject: Don't free key in compute_tag in case of failure X-Git-Tag: v9.15.0~141^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=235a64a5a4c0143b183bd55f6ed756741d4d7880;p=thirdparty%2Fbind9.git Don't free key in compute_tag in case of failure If `dns_dnssec_keyfromrdata` failed we don't need to call `dst_key_free` because no `dstkey` was created. Doing so nevertheless will result in an assertion failure. This can happen if the key uses an unsupported algorithm. --- diff --git a/lib/dns/zone.c b/lib/dns/zone.c index a4e0f42e44f..fd18e512730 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -3931,9 +3931,10 @@ compute_tag(dns_name_t *name, dns_rdata_dnskey_t *dnskey, isc_mem_t *mctx, dns_rdatatype_dnskey, dnskey, &buffer); result = dns_dnssec_keyfromrdata(name, &rdata, mctx, &dstkey); - if (result == ISC_R_SUCCESS) + if (result == ISC_R_SUCCESS) { *tag = dst_key_id(dstkey); - dst_key_free(&dstkey); + dst_key_free(&dstkey); + } return (result); }