mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
Handle dns_rdata_fromstruct failure dns_keytable_deletekey
dns_rdata_fromstruct in dns_keytable_deletekey can potentially fail with ISC_R_NOSPACE. Handle the error condition.
This commit is contained in:
committed by
Petr Špaček
parent
e68fecbdaa
commit
b5df9b8591
@@ -460,10 +460,6 @@ dns_keytable_deletekey(dns_keytable_t *keytable, const dns_name_t *keyname,
|
||||
REQUIRE(VALID_KEYTABLE(keytable));
|
||||
REQUIRE(dnskey != NULL);
|
||||
|
||||
isc_buffer_init(&b, data, sizeof(data));
|
||||
dns_rdata_fromstruct(&rdata, dnskey->common.rdclass,
|
||||
dns_rdatatype_dnskey, dnskey, &b);
|
||||
|
||||
RWLOCK(&keytable->rwlock, isc_rwlocktype_write);
|
||||
result = dns_rbt_findnode(keytable->table, keyname, NULL, &node, NULL,
|
||||
DNS_RBTFIND_NOOPTIONS, NULL, NULL);
|
||||
@@ -490,6 +486,13 @@ dns_keytable_deletekey(dns_keytable_t *keytable, const dns_name_t *keyname,
|
||||
}
|
||||
RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
|
||||
|
||||
isc_buffer_init(&b, data, sizeof(data));
|
||||
result = dns_rdata_fromstruct(&rdata, dnskey->common.rdclass,
|
||||
dns_rdatatype_dnskey, dnskey, &b);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
result = dns_ds_fromkeyrdata(keyname, &rdata, DNS_DSDIGEST_SHA256,
|
||||
digest, &ds);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
|
Reference in New Issue
Block a user