Add missing mem leak test activation and checks
authorFdaSilvaYY <fdasilvayy@gmail.com>
Fri, 18 Mar 2016 22:17:39 +0000 (23:17 +0100)
committerRich Salz <rsalz@openssl.org>
Wed, 6 Apr 2016 10:17:21 +0000 (06:17 -0400)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
test/bntest.c
test/ct_test.c
test/dhtest.c

index e58d94d1170e787ce94eb4b52a1759fef364c9f7..1ba903254b9e7e1d60611b4fb1de8adc817feea4 100644 (file)
@@ -154,6 +154,9 @@ int main(int argc, char *argv[])
     BIO *out;
     char *outfile = NULL;
 
+    CRYPTO_set_mem_debug(1);
+    CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
+
     results = 0;
 
     RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime may fail */
@@ -353,12 +356,20 @@ int main(int argc, char *argv[])
     BN_CTX_free(ctx);
     BIO_free(out);
 
+    ERR_print_errors_fp(stderr);
+
+#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+    if (CRYPTO_mem_leaks_fp(stderr) <= 0)
+        EXIT(1);
+#endif
     EXIT(0);
  err:
     BIO_puts(out, "1\n");       /* make sure the Perl script fed by bc
                                  * notices the failure, see test_bn in
                                  * test/Makefile.ssl */
     (void)BIO_flush(out);
+    BN_CTX_free(ctx);
+    BIO_free(out);
 
     ERR_print_errors_fp(stderr);
     EXIT(1);
index ce417ab9bd51a4bec7ec87720be4ecb8d9600a55..5446f9d0da06d5d3e6915fb093ca551aecd57bb9 100644 (file)
@@ -565,6 +565,11 @@ int main(int argc, char *argv[])
     int result = 0;
     char *tmp_env = NULL;
 
+    tmp_env = getenv("OPENSSL_DEBUG_MEMORY");
+    if (tmp_env != NULL && strcmp(tmp_env, "on") == 0)
+        CRYPTO_set_mem_debug(1);
+    CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
+
     tmp_env = getenv("CT_DIR");
     ct_dir = OPENSSL_strdup(tmp_env != NULL ? tmp_env : "ct");
     tmp_env = getenv("CERTS_DIR");
@@ -584,6 +589,11 @@ int main(int argc, char *argv[])
     OPENSSL_free(ct_dir);
     OPENSSL_free(certs_dir);
 
+#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+    if (CRYPTO_mem_leaks_fp(stderr) <= 0)
+        result = 1;
+#endif
+
     return result;
 }
 
index 5940aa78b2efea674e804104a81ddd9d2ba5cd7b..8fad6da4fd19e51b91dae6f889b84ea41b022c22 100644 (file)
@@ -194,6 +194,7 @@ int main(int argc, char *argv[])
     if (!run_rfc5114_tests())
         ret = 1;
  err:
+    (void)BIO_flush(out);
     ERR_print_errors_fp(stderr);
 
     OPENSSL_free(abuf);
@@ -202,6 +203,12 @@ int main(int argc, char *argv[])
     DH_free(a);
     BN_GENCB_free(_cb);
     BIO_free(out);
+
+#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+    if (CRYPTO_mem_leaks_fp(stderr) <= 0)
+        ret = 1;
+#endif
+
     EXIT(ret);
 }