Update leak test to check return values.
[openssl.git] / test / memleaktest.c
index cccbcf6625b55ba306f4a3380a0ed65bc7b25a79..f8945904ac24b51a39b0cb7ef1238321226d4e45 100644 (file)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-#ifdef CRYPTO_MDEBUG
+#ifndef OPENSSL_NO_CRYPTO_MDEBUG
     char *p;
     char *lost;
     char *p;
     char *lost;
+    int noleak;
 
     p = getenv("OPENSSL_DEBUG_MEMORY");
     if (p != NULL && strcmp(p, "on") == 0)
 
     p = getenv("OPENSSL_DEBUG_MEMORY");
     if (p != NULL && strcmp(p, "on") == 0)
@@ -74,15 +75,17 @@ int main(int argc, char **argv)
         return 1;
     }
 
         return 1;
     }
 
-    if (argv[1] && strcmp(argv[1], "freeit") == 0)
+    if (argv[1] && strcmp(argv[1], "freeit") == 0) {
         OPENSSL_free(lost);
         OPENSSL_free(lost);
+        lost = NULL;
+    }
 
 
-    CRYPTO_mem_leaks_fp(stderr);
-    return 0;
+    noleak = CRYPTO_mem_leaks_fp(stderr);
+    /* If -1 return value something bad happened */
+    if (noleak == -1)
+        return 1;
+    return ((lost != NULL) ^ (noleak == 0));
 #else
 #else
-    if (argv[1] && strcmp(argv[1], "freeit") == 0)
-        return 0;
-    fprintf(stderr, "Leak simulated\n");
-    return 1;
+    return 0;
 #endif
 }
 #endif
 }