Skip to content

test/sslapitest.c fails due to memory leak in test_session_with_both_cache() #4127

@DDvO

Description

@DDvO

When built with enable-crypto-mdebug like in https://travis-ci.org/openssl/openssl/builds/262739932?utm_source=github_status&utm_medium=notification
test/sslapitest.c fails due to a memory leak, which I pinned down to be in test_session_with_both_cache().

BTW, chasing the memory leak I found some minor issues in test/testutil/driver.c, which can be cured as follows:


diff --git a/test/testutil/driver.c b/test/testutil/driver.c
index cf4296a23f..620b1ddf3c 100644
--- a/test/testutil/driver.c
+++ b/test/testutil/driver.c
@@ -40,7 +40,7 @@ static int seed = 0;
  */
 static int num_test_cases = 0;

-void add_test(const char *test_case_name, int (*test_fn) ())
+void add_test(const char *test_case_name, int (*test_fn) (void))
 {
     assert(num_tests != OSSL_NELEM(all_tests));
     all_tests[num_tests].test_case_name = test_case_name;
@@ -105,7 +105,7 @@ void setup_test_framework()
     if (test_seed != NULL) {
         seed = atoi(test_seed);
         if (seed <= 0)
-            seed = time(NULL);
+            seed = (int)time(NULL);
         test_printf_stdout("%*s# RAND SEED %d\n", subtest_level(), "", seed);
         test_flush_stdout();
         srand(seed);
@@ -121,6 +121,7 @@ void setup_test_framework()

 int pulldown_test_framework(int ret)
 {
+    set_test_title(NULL);
 #ifndef OPENSSL_NO_CRYPTO_MDEBUG
     if (should_report_leaks()
         && CRYPTO_mem_leaks_cb(openssl_error_cb, NULL) <= 0)
@@ -142,7 +143,8 @@ static char *test_title = NULL;

 void set_test_title(const char *title)
 {
-    free(test_title);
+    if (test_title)
+        free(test_title);
     test_title = title == NULL ? NULL : strdup(title);
 }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions