From: Nick Mathewson Date: Wed, 21 Oct 2015 14:52:57 +0000 (-0400) Subject: Fix memory leak in rend_cache_failure_entry_free() X-Git-Tag: tor-0.2.8.1-alpha~286^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aa96abe66b7ac507e927d4cfe37d78eaf754179e;p=thirdparty%2Ftor.git Fix memory leak in rend_cache_failure_entry_free() Bug 17402. --- diff --git a/changes/bug17402 b/changes/bug17402 new file mode 100644 index 0000000000..4760e00b04 --- /dev/null +++ b/changes/bug17402 @@ -0,0 +1,3 @@ + o Major bugfixes (memory leak): + - Fix a memory leak in rend_cache_failure_entry_free(). + Fixes bug 17402; bugfix on 0.2.7.3-rc. diff --git a/src/or/rendcache.c b/src/or/rendcache.c index 4a12b08c1c..93f4440193 100644 --- a/src/or/rendcache.c +++ b/src/or/rendcache.c @@ -122,6 +122,12 @@ rend_cache_failure_intro_entry_free(rend_cache_failure_intro_t *entry) tor_free(entry); } +static void +rend_cache_failure_intro_entry_free_(void *entry) +{ + rend_cache_failure_intro_entry_free_(entry); +} + /** Allocate a rend cache failure intro object and return it. failure * is set into the object. This function can not fail. */ static rend_cache_failure_intro_t * @@ -142,11 +148,9 @@ rend_cache_failure_entry_free(rend_cache_failure_t *entry) } /* Free and remove every intro failure object. */ - DIGESTMAP_FOREACH_MODIFY(entry->intro_failures, key, - rend_cache_failure_intro_t *, e) { - rend_cache_failure_intro_entry_free(e); - MAP_DEL_CURRENT(key); - } DIGESTMAP_FOREACH_END; + digestmap_free(entry->intro_failures, + rend_cache_failure_intro_entry_free_); + tor_free(entry); }