]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3966. [bug] Missing dns_db_closeversion call in receive_secure_db.
authorMark Andrews <marka@isc.org>
Thu, 2 Oct 2014 21:50:09 +0000 (07:50 +1000)
committerMark Andrews <marka@isc.org>
Thu, 2 Oct 2014 21:50:09 +0000 (07:50 +1000)
                        [RT #35746]

CHANGES
bin/named/server.c
bin/named/update.c
bin/named/zoneconf.c
lib/dns/journal.c
lib/dns/zone.c

diff --git a/CHANGES b/CHANGES
index e42163537101c2330510b59b3e796837746285de..4f9cb4b28e931a506ad2d6c9a5f8df916d9f1615 100644 (file)
--- 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]
 
index 87896940aaa1335f788a3ad162cfed9001137272..68a39b973a44c8fc7248ebaa2738a0fb5c7d21ef 100644 (file)
@@ -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);
 }
 
index 66a0fe166081eeaceb00adf4dc948a50d2085b96..8c2910a63d882758a920739d5eed319bdacf9e55 100644 (file)
@@ -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);
 }
 
index 18db36822fe1897e1e5082952ebc7fc5550ebd2c..8ccb6a9ade3ab23e2c0b1eaed8884f05c13faf8f 100644 (file)
@@ -707,6 +707,8 @@ configure_staticstub(const cfg_obj_t *zconfig, dns_zone_t *zone,
                }
        }
 
+       INSIST(dbversion == NULL);
+
        return (result);
 }
 
index 8ad1d386ce24aa95cb70718d4246a3a2d4fae3ee..30fbfffd30f6f5dd7e8117823a40bb425cdf645e 100644 (file)
@@ -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);
 }
 
index 117cdbd6f158304f750b6c024b361741cd6bdc7b..ac13de15a2b04b28461ded417a47fbeb1cd02e97 100644 (file)
@@ -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