]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix to clean memory leak of respip_addr.lock when ip_tree deleted.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 12 Feb 2020 10:49:26 +0000 (11:49 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 12 Feb 2020 10:49:26 +0000 (11:49 +0100)
doc/Changelog
respip/respip.c

index dfa0ff001eb878412e11e87d005fea11d5cdf52f..0a7807ca127e873f6f400a9a1a738db70856342b 100644 (file)
@@ -2,6 +2,7 @@
        - Fix with libnettle make test with dsa disabled.
        - Fix contrib/fastrpz.patch to apply cleanly.  Fix for serve-stale
          fixes, but it does not compile, conflicts with new rpz code.
+       - Fix to clean memory leak of respip_addr.lock when ip_tree deleted.
 
 10 February 2020: George
        - Document 'ub_result.was_ratelimited' in libunbound.
index e47171f851be47d59ff874f257a78eb7d3992e6f..e9b7d5dbf9d9c248cee6572fd074bc91d2091e8e 100644 (file)
@@ -69,12 +69,21 @@ respip_set_create(void)
        return set;
 }
 
+/** helper traverse to delete resp_addr nodes */
+static void
+resp_addr_del(rbnode_type* n, void* ATTR_UNUSED(arg))
+{
+       struct resp_addr* r = (struct resp_addr*)n->key;
+       lock_rw_destroy(&r->lock);
+}
+
 void
 respip_set_delete(struct respip_set* set)
 {
        if(!set)
                return;
        lock_rw_destroy(&set->lock);
+       traverse_postorder(&set->ip_tree, resp_addr_del, NULL);
        regional_destroy(set->region);
        free(set);
 }