Browse Source

Fix some memory leaks in the unit tests

Nick Mathewson 8 years ago
parent
commit
a56fb58d6e
4 changed files with 20 additions and 8 deletions
  1. 13 8
      src/test/test_connection.c
  2. 2 0
      src/test/test_dns.c
  3. 4 0
      src/test/test_tortls.c
  4. 1 0
      src/test/testing_common.c

+ 13 - 8
src/test/test_connection.c

@@ -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

+ 2 - 0
src/test/test_dns.c

@@ -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;
 }
 

+ 4 - 0
src/test/test_tortls.c

@@ -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);

+ 1 - 0
src/test/testing_common.c

@@ -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;