]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix some memory leaks in the unit tests
authorNick Mathewson <nickm@torproject.org>
Tue, 15 Dec 2015 19:00:08 +0000 (14:00 -0500)
committerNick Mathewson <nickm@torproject.org>
Tue, 15 Dec 2015 19:00:08 +0000 (14:00 -0500)
src/test/test_connection.c
src/test/test_dns.c
src/test/test_tortls.c
src/test/testing_common.c

index 7e466a97e9ef6ec37eb91280f863772f662c4c28..f6e08fdf1f613a1baed07813ffb85a98a160fbec 100644 (file)
@@ -501,21 +501,26 @@ test_conn_get_rend(void *arg)
   ;
 }
 
-#define sl_is_conn_assert(sl, conn) \
-  do { \
-    tt_assert(smartlist_len((sl)) == 1); \
-    tt_assert(smartlist_get((sl), 0) == (conn)); \
+#define sl_is_conn_assert(sl_input, conn) \
+  do {                                               \
+    the_sl = (sl_input);                             \
+    tt_assert(smartlist_len((the_sl)) == 1);         \
+    tt_assert(smartlist_get((the_sl), 0) == (conn)); \
+    smartlist_free(the_sl); the_sl = NULL;           \
   } while (0)
 
-#define sl_no_conn_assert(sl) \
-  do { \
-    tt_assert(smartlist_len((sl)) == 0); \
+#define sl_no_conn_assert(sl_input)          \
+  do {                                       \
+    the_sl = (sl_input);                     \
+    tt_assert(smartlist_len((the_sl)) == 0); \
+    smartlist_free(the_sl); the_sl = NULL;   \
   } while (0)
 
 static void
 test_conn_get_rsrc(void *arg)
 {
   dir_connection_t *conn = DOWNCAST(dir_connection_t, arg);
+  smartlist_t *the_sl = NULL;
   tt_assert(conn);
   assert_connection_ok(&conn->base_, time(NULL));
 
@@ -630,7 +635,7 @@ test_conn_get_rsrc(void *arg)
             == 0);
 
  done:
-  ;
+  smartlist_free(the_sl);
 }
 
 static void
index b40a4825a61176b6ee7ec7d8bbaaa7ff8fd4274f..b781d6da53646a7c673c6fbb0e32f12998958307 100644 (file)
@@ -579,6 +579,7 @@ NS(test_main)(void *arg)
   tor_free(TO_CONN(exitconn)->address);
   tor_free(cache_entry->pending_connections);
   tor_free(cache_entry);
+  tor_free(exitconn);
   return;
 }
 
@@ -739,6 +740,7 @@ NS(test_main)(void *arg)
   tor_free(TO_CONN(exitconn)->address);
   tor_free(cache_entry->pending_connections);
   tor_free(cache_entry);
+  tor_free(exitconn);
   return;
 }
 
index b4a3435cfa8dd48612bacdee1ac4c5f6d505dd4f..8602d9ef15d4dd8cee0fd2c04f0eb995b727c22b 100644 (file)
@@ -145,6 +145,7 @@ test_tortls_tor_tls_new(void *data)
   tt_want(tls);
   tor_tls_free(tls); tls = NULL;
 
+  SSL_CTX_free(client_tls_context->ctx);
   client_tls_context->ctx = NULL;
   tls = tor_tls_new(-1, 0);
   tt_assert(!tls);
@@ -1140,6 +1141,7 @@ test_tortls_check_lifetime(void *ignored)
   tor_free(tls->ssl->session);
   tor_free(tls->ssl);
   tor_free(tls);
+  X509_free(validCert);
 }
 #endif
 
@@ -1465,6 +1467,7 @@ test_tortls_try_to_extract_certs_from_tls(void *ignored)
   tt_assert(id_cert);
 
  done:
+  sk_X509_free(sess->cert_chain);
   tor_free(sess);
   tor_free(tls->ssl->session);
   tor_free(tls->ssl);
@@ -2166,6 +2169,7 @@ test_tortls_write(void *ignored)
 
  done:
   teardown_capture_of_logs(previous_log);
+  BIO_free(tls->ssl->rbio);
   tor_free(tls->ssl);
   tor_free(tls);
   tor_free(method);
index 2ea158fddd384b70061f132e3e5343753a6e4a9d..e20e9e6095542692c020a06f2b7e91b74ac46754 100644 (file)
@@ -297,6 +297,7 @@ main(int c, const char **v)
   tor_free_all(0);
   dmalloc_log_unfreed();
 #endif
+  crypto_global_cleanup();
 
   if (have_failed)
     return 1;