From: Mark Andrews Date: Sun, 2 Dec 2007 20:27:35 +0000 (+0000) Subject: 2270. [bug] dns_db_closeversion() version->writer could be reset X-Git-Tag: v9.5.0~293 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=d7e8610d31d83ff863e8b2dc05c238376c35e949;p=thirdparty%2Fbind9.git 2270. [bug] dns_db_closeversion() version->writer could be reset before it is tested. [RT #17290] --- diff --git a/CHANGES b/CHANGES index 97ddd4ded90..0bea73d4cc6 100644 --- 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 diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index f6b06dabd3c..6ecc2eec302 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -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) {