diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-10-21 10:27:19 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-10-21 10:27:19 -0400 |
commit | 03eb999d42a582bece2063fc06f34fad72e05be5 (patch) | |
tree | 30a844dd1ffe2e92cd6389d22d06c22280a6fb38 | |
parent | 5b2070198a9fa7d19f50ba165dc6ff274ffe073a (diff) | |
download | tor-03eb999d42a582bece2063fc06f34fad72e05be5.tar.gz tor-03eb999d42a582bece2063fc06f34fad72e05be5.zip |
Fix an (unreachable) memory leak in rendcache.c
The 0.2.8 unit tests provoke this leak, though I don't think it can
happen IRL.
-rw-r--r-- | src/or/rendcache.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/or/rendcache.c b/src/or/rendcache.c index df4f517807..4a12b08c1c 100644 --- a/src/or/rendcache.c +++ b/src/or/rendcache.c @@ -353,7 +353,7 @@ cache_failure_intro_add(const uint8_t *identity, const char *service_id, rend_intro_point_failure_t failure) { rend_cache_failure_t *fail_entry; - rend_cache_failure_intro_t *entry; + rend_cache_failure_intro_t *entry, *old_entry; /* Make sure we have a failure object for this service ID and if not, * create it with this new intro failure entry. */ @@ -364,7 +364,10 @@ cache_failure_intro_add(const uint8_t *identity, const char *service_id, strmap_set_lc(rend_cache_failure, service_id, fail_entry); } entry = rend_cache_failure_intro_entry_new(failure); - digestmap_set(fail_entry->intro_failures, (char *) identity, entry); + old_entry = digestmap_set(fail_entry->intro_failures, + (char *) identity, entry); + /* This _should_ be NULL, but in case it isn't, free it. */ + rend_cache_failure_intro_entry_free(old_entry); } /** Using a parsed descriptor <b>desc</b>, check if the introduction points |