From: Mark Andrews Date: Thu, 2 Oct 2014 21:50:09 +0000 (+1000) Subject: 3966. [bug] Missing dns_db_closeversion call in receive_secure_db. X-Git-Tag: v9.11.0a1~1368 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=9c0589bc8b1401e02c9b557737cb756e86b094ff;p=thirdparty%2Fbind9.git 3966. [bug] Missing dns_db_closeversion call in receive_secure_db. [RT #35746] --- diff --git a/CHANGES b/CHANGES index e4216353710..4f9cb4b28e9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3966. [bug] Missing dns_db_closeversion call in receive_secure_db. + [RT #35746] + 3965. [func] Log outgoing packets and improve packet logging to support logging the remote address. [RT #36624] diff --git a/bin/named/server.c b/bin/named/server.c index 87896940aaa..68a39b973a4 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -2319,6 +2319,9 @@ create_empty_zone(dns_zone_t *zone, dns_name_t *name, dns_view_t *view, dns_db_closeversion(db, &version, ISC_FALSE); if (db != NULL) dns_db_detach(&db); + + INSIST(version == NULL); + return (result); } diff --git a/bin/named/update.c b/bin/named/update.c index 66a0fe16608..8c2910a63d8 100644 --- a/bin/named/update.c +++ b/bin/named/update.c @@ -3296,6 +3296,8 @@ update_action(isc_task_t *task, isc_event_t *event) { uev->ev_type = DNS_EVENT_UPDATEDONE; uev->ev_action = updatedone_action; isc_task_send(client->task, &event); + + INSIST(ver == NULL); INSIST(event == NULL); } diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 18db36822fe..8ccb6a9ade3 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -707,6 +707,8 @@ configure_staticstub(const cfg_obj_t *zconfig, dns_zone_t *zone, } } + INSIST(dbversion == NULL); + return (result); } diff --git a/lib/dns/journal.c b/lib/dns/journal.c index 8ad1d386ce2..30fbfffd30f 100644 --- a/lib/dns/journal.c +++ b/lib/dns/journal.c @@ -1392,6 +1392,8 @@ roll_forward(dns_journal_t *j, dns_db_t *db, unsigned int options) { dns_diff_clear(&diff); + INSIST(ver == NULL); + return (result); } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 117cdbd6f15..ac13de15a2b 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -3895,6 +3895,8 @@ failure: if (ver != NULL) dns_db_closeversion(db, &ver, ISC_TF(result == ISC_R_SUCCESS)); + INSIST(ver == NULL); + return (result); } @@ -4057,6 +4059,8 @@ sync_keyzone(dns_zone_t *zone, dns_db_t *db) { dns_db_closeversion(db, &ver, commit); dns_diff_clear(&diff); + INSIST(ver == NULL); + return (result); } @@ -6340,6 +6344,8 @@ zone_resigninc(dns_zone_t *zone) { isc_interval_set(&ival, 300, 0); isc_time_nowplusinterval(&zone->resigntime, &ival); } + + INSIST(version == NULL); } static isc_result_t @@ -7823,6 +7829,8 @@ zone_nsec3chain(dns_zone_t *zone) { } else isc_time_settoepoch(&zone->nsec3chaintime); UNLOCK_ZONE(zone); + + INSIST(version == NULL); } static isc_result_t @@ -8370,6 +8378,8 @@ zone_sign(dns_zone_t *zone) { isc_time_nowplusinterval(&zone->signingtime, &i); } else isc_time_settoepoch(&zone->signingtime); + + INSIST(version == NULL); } static isc_result_t @@ -9070,7 +9080,7 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { zone_needdump(zone, 30); } - failure: + failure: dns_diff_clear(&diff); if (ver != NULL) @@ -9101,6 +9111,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { UNLOCK_ZONE(zone); if (free_needed) zone_free(zone); + + INSIST(ver == NULL); } /* @@ -9273,6 +9285,8 @@ zone_refreshkeys(dns_zone_t *zone) { dns_db_closeversion(db, &ver, commit); } dns_db_detach(&db); + + INSIST(ver == NULL); } static void @@ -13630,6 +13644,9 @@ receive_secure_serial(isc_task_t *task, isc_event_t *event) { dns_journal_destroy(&rjournal); dns_diff_clear(&diff); dns_zone_idetach(&zone); + + INSIST(oldver == NULL); + INSIST(newver == NULL); } static isc_result_t @@ -14065,6 +14082,8 @@ receive_secure_db(isc_task_t *task, isc_event_t *event) { if (db != NULL) { if (node != NULL) dns_db_detachnode(db, &node); + if (version != NULL) + dns_db_closeversion(db, &version, ISC_FALSE); dns_db_detach(&db); } if (rawnode != NULL) @@ -14073,6 +14092,8 @@ receive_secure_db(isc_task_t *task, isc_event_t *event) { if (dbiterator != NULL) dns_dbiterator_destroy(&dbiterator); dns_zone_idetach(&zone); + + INSIST(version == NULL); } static isc_result_t @@ -17398,6 +17419,8 @@ zone_rekey(dns_zone_t *zone) { dns_db_detachnode(db, &node); if (db != NULL) dns_db_detach(&db); + + INSIST(ver == NULL); return; failure: @@ -17767,6 +17790,9 @@ keydone(isc_task_t *task, isc_event_t *event) { dns_diff_clear(&diff); isc_event_free(&event); dns_zone_idetach(&zone); + + INSIST(oldver == NULL); + INSIST(newver == NULL); } isc_result_t @@ -18002,6 +18028,9 @@ setnsec3param(isc_task_t *task, isc_event_t *event) { dns_diff_clear(&diff); isc_event_free(&event); dns_zone_idetach(&zone); + + INSIST(oldver == NULL); + INSIST(newver == NULL); } isc_result_t