From ec04e866343d40a1e3e8e5db79557e279a2dd0d8 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sun, 10 Jan 2016 23:29:46 +0000 Subject: [PATCH] Update leak test to check return values. Reviewed-by: Viktor Dukhovni --- test/memleaktest.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/test/memleaktest.c b/test/memleaktest.c index cdb61a3608..f8945904ac 100644 --- a/test/memleaktest.c +++ b/test/memleaktest.c @@ -56,23 +56,13 @@ #include #include #include -#include - -#ifndef OPENSSL_NO_CRYPTO_MDEBUG -static sigjmp_buf env; - -static void handler(int sig) -{ - siglongjmp(env, 1); -} -#endif int main(int argc, char **argv) { #ifndef OPENSSL_NO_CRYPTO_MDEBUG char *p; char *lost; - int aborted = 0; + int noleak; p = getenv("OPENSSL_DEBUG_MEMORY"); if (p != NULL && strcmp(p, "on") == 0) @@ -85,18 +75,16 @@ int main(int argc, char **argv) return 1; } - signal(SIGABRT, handler); - if (argv[1] && strcmp(argv[1], "freeit") == 0) { OPENSSL_free(lost); lost = NULL; } - if (sigsetjmp(env, 0) == 0) - CRYPTO_mem_leaks_fp(stderr); - else - aborted = 1; - return ((lost != NULL) ^ (aborted == 1)); + noleak = CRYPTO_mem_leaks_fp(stderr); + /* If -1 return value something bad happened */ + if (noleak == -1) + return 1; + return ((lost != NULL) ^ (noleak == 0)); #else return 0; #endif -- 2.25.1