Browse Source

Merge branch 'maint-0.3.4'

Nick Mathewson 5 years ago
parent
commit
7a47379f25

+ 3 - 0
changes/ticket26467

@@ -0,0 +1,3 @@
+  o Minor bugfixes (memory, correctness):
+    - Fix a number of small memory leaks identified by coverity. Fixes
+      bug 26467; bugfix on numerous Tor versions.

+ 1 - 0
src/or/directory.c

@@ -3703,6 +3703,7 @@ client_likes_consensus(const struct consensus_cache_entry_t *ent,
   int have = 0;
 
   if (consensus_cache_entry_get_voter_id_digests(ent, voters) != 0) {
+    smartlist_free(voters);
     return 1; // We don't know the voters; assume the client won't mind. */
   }
 

+ 1 - 0
src/or/hs_descriptor.c

@@ -1129,6 +1129,7 @@ decode_link_specifiers(const char *encoded)
              sizeof(hs_spec->u.ed25519_id));
       break;
     default:
+      tor_free(hs_spec);
       goto err;
     }
 

+ 6 - 0
src/test/hs_test_helpers.c

@@ -86,6 +86,9 @@ hs_helper_build_intro_point(const ed25519_keypair_t *signing_kp, time_t now,
 
   intro_point = ip;
  done:
+  if (intro_point == NULL)
+    tor_free(ip);
+
   return intro_point;
 }
 
@@ -143,6 +146,9 @@ hs_helper_build_hs_desc_impl(unsigned int no_ip,
 
   descp = desc;
  done:
+  if (descp == NULL)
+    tor_free(desc);
+
   return descp;
 }
 

+ 2 - 0
src/test/test_channelpadding.c

@@ -774,6 +774,8 @@ test_channelpadding_consensus(void *arg)
   tt_i64_op(val, OP_LE, 24*60*60*2);
 
  done:
+  tor_free(relay);
+
   free_mock_consensus();
   free_fake_channeltls((channel_tls_t*)chan);
   smartlist_free(connection_array);

+ 5 - 6
src/test/test_hs_descriptor.c

@@ -176,6 +176,9 @@ test_link_specifier(void *arg)
   ssize_t ret;
   hs_desc_link_specifier_t spec;
   smartlist_t *link_specifiers = smartlist_new();
+  char buf[256];
+  char *b64 = NULL;
+  link_specifier_t *ls = NULL;
 
   (void) arg;
 
@@ -185,9 +188,7 @@ test_link_specifier(void *arg)
 
   /* Test IPv4 for starter. */
   {
-    char *b64, buf[256];
     uint32_t ipv4;
-    link_specifier_t *ls;
 
     spec.type = LS_IPV4;
     ret = tor_addr_parse(&spec.u.ap.addr, "1.2.3.4");
@@ -214,9 +215,7 @@ test_link_specifier(void *arg)
 
   /* Test IPv6. */
   {
-    char *b64, buf[256];
     uint8_t ipv6[16];
-    link_specifier_t *ls;
 
     spec.type = LS_IPV6;
     ret = tor_addr_parse(&spec.u.ap.addr, "[1:2:3:4::]");
@@ -246,9 +245,7 @@ test_link_specifier(void *arg)
 
   /* Test legacy. */
   {
-    char *b64, buf[256];
     uint8_t *id;
-    link_specifier_t *ls;
 
     spec.type = LS_LEGACY_ID;
     memset(spec.u.legacy_id, 'Y', sizeof(spec.u.legacy_id));
@@ -274,6 +271,8 @@ test_link_specifier(void *arg)
   }
 
  done:
+  link_specifier_free(ls);
+  tor_free(b64);
   smartlist_free(link_specifiers);
 }