[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] Fix resource leak in parse_consensus_request()



commit bbeba2412e58501da4097409258d329ca97edb2e
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Tue May 16 10:47:41 2017 -0400

    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.
---
 src/or/consdiffmgr.c | 1 +
 src/or/directory.c   | 6 ++++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c
index a8df077..2af1047 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 d954c06..ef74c0f 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 {

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits