From: Mark Andrews Date: Wed, 26 Feb 2003 03:06:46 +0000 (+0000) Subject: 1433. [bug] named could trigger a REQUIRE failure if it could X-Git-Tag: v9.2.3rc1~104^2~97 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=9368d7df838f58cd32922b526775ca730bc633cf;p=thirdparty%2Fbind9.git 1433. [bug] named could trigger a REQUIRE failure if it could not get a file descriptor when attempting to write a master file. [RT #4347] developer: marka reviewer: explorer --- diff --git a/CHANGES b/CHANGES index f8a0d763f63..d7a184c50f5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +1433. [bug] named could trigger a REQUIRE failure if it could + not get a file descriptor when attempting to write + a master file. [RT #4347] + 1432. [func] The advertised EDNS UDP buffer size can now be set via named.conf (edns-udp-size). diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 4f50e3328c0..219961fde8c 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.c,v 1.382 2003/02/07 01:54:56 marka Exp $ */ +/* $Id: zone.c,v 1.383 2003/02/26 03:06:46 marka Exp $ */ #include @@ -2261,17 +2261,17 @@ dump_done(void *arg, isc_result_t result) { ENTER; - /* - * We don't own these, zone->dctx must stay valid. - */ - db = dns_dumpctx_db(zone->dctx); - version = dns_dumpctx_version(zone->dctx); - if (result == ISC_R_SUCCESS && zone->journal != NULL && zone->journalsize != -1) { isc_uint32_t serial; isc_result_t tresult; + /* + * We don't own these, zone->dctx must stay valid. + */ + db = dns_dumpctx_db(zone->dctx); + version = dns_dumpctx_version(zone->dctx); + tresult = dns_db_getsoaserial(db, version, &serial); if (tresult == ISC_R_SUCCESS) { tresult = dns_journal_compact(zone->mctx, zone->journal, @@ -2311,7 +2311,8 @@ dump_done(void *arg, isc_result_t result) { } else if (result == ISC_R_SUCCESS) DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_FLUSH); - dns_dumpctx_detach(&zone->dctx); + if (zone->dctx != NULL) + dns_dumpctx_detach(&zone->dctx); UNLOCK_ZONE(zone); if (again) (void)zone_dump(zone, ISC_FALSE);