]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix memory leak in helper_add_hsdir_to_networkstatus().
authorAlexander Færøy <ahf@torproject.org>
Sat, 23 Jun 2018 11:05:41 +0000 (13:05 +0200)
committerAlexander Færøy <ahf@torproject.org>
Sat, 23 Jun 2018 11:07:56 +0000 (13:07 +0200)
This patch fixes a memory leak in helper_add_hsdir_to_networkstatus()
where the rs object might not get properly freed.

See: Coverity CID 1437427.

src/test/test_hs_common.c

index 21daa58abd38cb7c49fe44341463aec419a7cca4..3ae623ed0ac4778eaa308689b032858f6840a33e 100644 (file)
@@ -284,6 +284,7 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
   routerinfo_t *ri = tor_malloc_zero(sizeof(routerinfo_t));
   uint8_t identity[DIGEST_LEN];
   tor_addr_t ipv4_addr;
+  node_t *node = NULL;
 
   memset(identity, identity_idx, sizeof(identity));
 
@@ -302,7 +303,8 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
   memset(&ri->cache_info.signing_key_cert->signing_key,
          identity_idx, ED25519_PUBKEY_LEN);
   tt_assert(nodelist_set_routerinfo(ri, NULL));
-  node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
+
+  node = node_get_mutable_by_id(ri->cache_info.identity_digest);
   tt_assert(node);
   node->rs = rs;
   /* We need this to exist for node_has_descriptor() to return true. */
@@ -314,6 +316,9 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
   smartlist_add(ns->routerstatus_list, rs);
 
  done:
+  if (node == NULL)
+    routerstatus_free(rs);
+
   routerinfo_free(ri);
 }