From 0904ef38591e59f19d0c146c14d0b1eedaa26c29 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Fri, 31 May 2013 12:31:01 +1000 Subject: [PATCH] address memory in dns_view_getsecroots failure (cherry picked from commit c611465739500968dd757ccb5a8abc13b4fcf56b) --- lib/dns/validator.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/dns/validator.c b/lib/dns/validator.c index d6f881343f..e9eb9b3259 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -3753,8 +3753,7 @@ dns_validator_create(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, val->keytable = NULL; result = dns_view_getsecroots(val->view, &val->keytable); if (result != ISC_R_SUCCESS) - return (result); - + goto cleanup_mutex; val->keynode = NULL; val->key = NULL; val->siginfo = NULL; @@ -3787,6 +3786,9 @@ dns_validator_create(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, return (ISC_R_SUCCESS); + cleanup_mutex: + DESTROYLOCK(&val->lock); + cleanup_event: isc_task_detach(&tclone); isc_event_free(ISC_EVENT_PTR(&event));