]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2589. [bug] dns_db_unregister() failed to clear '*dbimp'.
authorMark Andrews <marka@isc.org>
Wed, 29 Apr 2009 22:19:05 +0000 (22:19 +0000)
committerMark Andrews <marka@isc.org>
Wed, 29 Apr 2009 22:19:05 +0000 (22:19 +0000)
                        [RT #19626]

CHANGES
lib/dns/db.c

diff --git a/CHANGES b/CHANGES
index 9ed829ce0bb520864ce1112316c937a89cda6ec0..f81e52848c5d953527c9848cecd1f8c3253fd36a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2589.  [bug]           dns_db_unregister() failed to clear '*dbimp'.
+                       [RT #19626]
+
 2586.  [bug]           Missing cleanup of SIG rdataset in searching a DLZ DB
                        or SDB. [RT #19577]
 
index 32ff6aebb7bd979a96cb327d5393757fdd098944..3c5e4c923bd9a9555a149658f1f72b08407ad7fe 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: db.c,v 1.74.18.6 2005/10/13 02:12:24 marka Exp $ */
+/* $Id: db.c,v 1.74.18.7 2009/04/29 22:19:05 marka Exp $ */
 
 /*! \file */
 
@@ -800,12 +800,14 @@ dns_db_unregister(dns_dbimplementation_t **dbimp) {
        RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
 
        imp = *dbimp;
+       *dbimp = NULL;
        RWLOCK(&implock, isc_rwlocktype_write);
        ISC_LIST_UNLINK(implementations, imp, link);
        mctx = imp->mctx;
        isc_mem_put(mctx, imp, sizeof(dns_dbimplementation_t));
        isc_mem_detach(&mctx);
        RWUNLOCK(&implock, isc_rwlocktype_write);
+       ENSURE(*dbimp == NULL);
 }
 
 isc_result_t