]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4843. [bug] dnssec-signzone free hashlist on exit. [RT #46791]
authorMark Andrews <marka@isc.org>
Thu, 7 Dec 2017 08:29:21 +0000 (19:29 +1100)
committerMark Andrews <marka@isc.org>
Thu, 7 Dec 2017 08:30:10 +0000 (19:30 +1100)
(cherry picked from commit 8444b4856a608fe36530c8828231cd1a8c982fe3)

CHANGES
bin/dnssec/dnssec-signzone.c

diff --git a/CHANGES b/CHANGES
index 691a484f0d79473e7ee0add84b3149ec20a93e1d..cd93c54339620216656a53b9df7da25a22742f7f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+4843.  [bug]           dnssec-signzone free hashlist on exit. [RT #46791]
+
 4842.  [bug]           Conditionally compile opensslecdsa_link.c to avoid
                        warnings about unused function. [RT #46790]
 
index eadc069c98380659aa3a889c9f69aa68fc549735..dce6adf69da2253bbce136d1b5a70198ff27815f 100644 (file)
@@ -716,6 +716,17 @@ hashlist_init(hashlist_t *l, unsigned int nodes, unsigned int length) {
        }
 }
 
+static void
+hashlist_free(hashlist_t *l) {
+       if (l->hashbuf) {
+               free(l->hashbuf);
+               l->hashbuf = NULL;
+               l->entries = 0;
+               l->length = 0;
+               l->size = 0;
+       }
+}
+
 static void
 hashlist_add(hashlist_t *l, const unsigned char *hash, size_t len)
 {
@@ -3831,6 +3842,9 @@ main(int argc, char *argv[]) {
        dns_db_closeversion(gdb, &gversion, ISC_FALSE);
        dns_db_detach(&gdb);
 
+       if (IS_NSEC3)
+               hashlist_free(&hashlist);
+
        while (!ISC_LIST_EMPTY(keylist)) {
                key = ISC_LIST_HEAD(keylist);
                ISC_LIST_UNLINK(keylist, key, link);