diff options
author | David Hankins <dhankins@isc.org> | 2010-05-24 23:47:42 +0000 |
---|---|---|
committer | David Hankins <dhankins@isc.org> | 2010-05-24 23:47:42 +0000 |
commit | 8a513c436ba497094752a6013be509a9ccc3734e (patch) | |
tree | abdf462b6c89749e6456a1bf0a767e59e2b76c69 /common/dns.c | |
parent | 1943bbf803f5a46f3f7e118785709fd82575e41e (diff) | |
download | isc-dhcp-8a513c436ba497094752a6013be509a9ccc3734e.tar.gz |
- A memory leak in ddns processing was closed. [ISC-Bugs #21377]
Diffstat (limited to 'common/dns.c')
-rw-r--r-- | common/dns.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/common/dns.c b/common/dns.c index c7c84134..5c2e5b33 100644 --- a/common/dns.c +++ b/common/dns.c @@ -462,6 +462,11 @@ ddns_cb_free(dhcp_ddns_cb_t *ddns_cb, const char *file, int line) forget_zone((struct dns_zone **)&ddns_cb->zone); } + /* Should be freed by now, check just in case. */ + if (ddns_cb->transaction != NULL) + log_error("Impossible memory leak at %s:%d (attempt to free " + "DDNS Control Block before transaction).", MDL); + dfree(ddns_cb, file, line); } @@ -1241,7 +1246,7 @@ void ddns_interlude(isc_task_t *taskp, } #endif /* This transaction is complete, clear the value */ - ddns_cb->transaction = NULL; + dns_client_destroyupdatetrans(&ddns_cb->transaction); /* If we cancelled or tried to cancel the operation we just * need to clean up. */ |