aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-05-16 10:47:41 -0400
committerNick Mathewson <nickm@torproject.org>2017-05-16 10:47:41 -0400
commitbbeba2412e58501da4097409258d329ca97edb2e (patch)
treed45ad1954b147970e013119156ea54bd269e9565 /src
parent2ca827104db2425bdb7f854c7b20d102706d559a (diff)
downloadtor-bbeba2412e58501da4097409258d329ca97edb2e.tar.gz
tor-bbeba2412e58501da4097409258d329ca97edb2e.zip
Fix resource leak in parse_consensus_request()
We were allocating diff_hash_in_url on some URLs, but not freeing it. Fixes CID 1409669. Bug not in any released Tor.
Diffstat (limited to 'src')
-rw-r--r--src/or/consdiffmgr.c1
-rw-r--r--src/or/directory.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c
index a8df077001..2af104733b 100644
--- a/src/or/consdiffmgr.c
+++ b/src/or/consdiffmgr.c
@@ -566,6 +566,7 @@ consdiffmgr_find_consensus(struct consensus_cache_entry_t **entry_out,
consensus_flavor_t flavor,
compress_method_t method)
{
+ tor_assert(entry_out);
tor_assert((int)flavor < N_CONSENSUS_FLAVORS);
int pos = consensus_compression_method_pos(method);
diff --git a/src/or/directory.c b/src/or/directory.c
index d954c06262..ef74c0fed4 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -3929,8 +3929,10 @@ parse_consensus_request(parsed_consensus_request_t *out,
uint8_t diff_from[DIGEST256_LEN];
out->diff_from_digests = smartlist_new();
out->diff_only = 1;
- if (!parse_one_diff_hash(diff_from, diff_hash_in_url, "URL",
- "rejecting")) {
+ int ok = !parse_one_diff_hash(diff_from, diff_hash_in_url, "URL",
+ "rejecting");
+ tor_free(diff_hash_in_url);
+ if (ok) {
smartlist_add(out->diff_from_digests,
tor_memdup(diff_from, DIGEST256_LEN));
} else {