]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2270. [bug] dns_db_closeversion() version->writer could be reset
authorMark Andrews <marka@isc.org>
Sun, 2 Dec 2007 20:27:35 +0000 (20:27 +0000)
committerMark Andrews <marka@isc.org>
Sun, 2 Dec 2007 20:27:35 +0000 (20:27 +0000)
                        before it is tested. [RT #17290]

CHANGES
lib/dns/rbtdb.c

diff --git a/CHANGES b/CHANGES
index 97ddd4ded9053d41fbff625042ee20d52821c889..0bea73d4cc60a507241f6fb824fe38fdd0930f0b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2270.  [bug]           dns_db_closeversion() version->writer could be reset
+                       before it is tested. [RT #17290]
+
 2269.  [contrib]       dbus memory leaks and missing va_end calls. [RT #17232]
 
 2268.  [bug]           0.IN-ADDR.ARPA was missing from the empty zones
index f6b06dabd3c90ae5ab2b68c2abef1af144ea6c71..6ecc2eec302b0b19de184b866f16b1d2d05bf5d5 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: rbtdb.c,v 1.247 2007/10/19 17:15:53 explorer Exp $ */
+/* $Id: rbtdb.c,v 1.248 2007/12/02 20:27:35 marka Exp $ */
 
 /*! \file */
 
@@ -1751,6 +1751,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
         rbtdb_serial_t serial, least_serial;
         dns_rbtnode_t *rbtnode;
         unsigned int refs;
+       isc_boolean_t writer;
 
         REQUIRE(VALID_RBTDB(rbtdb));
         version = (rbtdb_version_t *)*versionp;
@@ -1770,6 +1771,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
 
         RBTDB_LOCK(&rbtdb->lock, isc_rwlocktype_write);
         serial = version->serial;
+        writer = version->writer;
         if (version->writer) {
                 if (commit) {
                         unsigned cur_ref;
@@ -1902,7 +1904,7 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
         /*
          * Update the zone's secure status.
          */
-        if (version->writer && commit && !IS_CACHE(rbtdb))
+        if (writer && commit && !IS_CACHE(rbtdb))
                 rbtdb->secure = iszonesecure(db, rbtdb->origin_node);
 
         if (cleanup_version != NULL) {