From 96c17c5ecb012028ad9d66f93a252994c6ed035c Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 27 Feb 2014 16:55:46 +1100 Subject: [PATCH] 3761. [bug] Address dangling reference bug in dns_keytable_add. [RT #35471] --- CHANGES | 3 +++ lib/dns/keytable.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index f949607c23..41c7d8e51b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3761. [bug] Address dangling reference bug in dns_keytable_add. + [RT #35471] + 3760. [bug] Improve SIT with native PKCS#11 and on Windows. [RT #35433] diff --git a/lib/dns/keytable.c b/lib/dns/keytable.c index c49847f326..8c57d632cd 100644 --- a/lib/dns/keytable.c +++ b/lib/dns/keytable.c @@ -174,6 +174,7 @@ insert(dns_keytable_t *keytable, isc_boolean_t managed, for (k = node->data; k != NULL; k = k->next) { if (k->key == NULL) { k->key = *keyp; + *keyp = NULL; /* transfer ownership */ break; } if (dst_key_compare(k->key, *keyp) == ISC_TRUE) @@ -182,7 +183,7 @@ insert(dns_keytable_t *keytable, isc_boolean_t managed, if (k == NULL) result = ISC_R_SUCCESS; - else + else if (*keyp != NULL) dst_key_free(keyp); }