commit aa96abe66b7ac507e927d4cfe37d78eaf754179e Author: Nick Mathewson nickm@torproject.org Date: Wed Oct 21 10:52:57 2015 -0400
Fix memory leak in rend_cache_failure_entry_free()
Bug 17402. --- changes/bug17402 | 3 +++ src/or/rendcache.c | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/changes/bug17402 b/changes/bug17402 new file mode 100644 index 0000000..4760e00 --- /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 4a12b08..93f4440 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. <b>failure</b> * 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); }