diff --git a/ctaocrypt/benchmark/benchmark.c b/ctaocrypt/benchmark/benchmark.c index 05e7b685f..8af9aa52b 100644 --- a/ctaocrypt/benchmark/benchmark.c +++ b/ctaocrypt/benchmark/benchmark.c @@ -250,6 +250,9 @@ int benchmark_test(void *args) #ifdef HAVE_ECC bench_eccKeyGen(); bench_eccKeyAgree(); + #if defined(FP_ECC) + ecc_fp_free(); + #endif #endif return 0; diff --git a/examples/echoserver/echoserver.c b/examples/echoserver/echoserver.c index 422186873..e942233e3 100644 --- a/examples/echoserver/echoserver.c +++ b/examples/echoserver/echoserver.c @@ -24,6 +24,9 @@ #endif #include +#ifdef HAVE_ECC + #include /* ecc_fp_free */ +#endif #if defined(CYASSL_MDK_ARM) #include @@ -328,6 +331,11 @@ THREAD_RETURN CYASSL_THREAD echoserver_test(void* args) ((func_args*)args)->return_code = 0; +#if defined(NO_MAIN_DRIVER) && defined(HAVE_ECC) && defined(FP_ECC) \ + && defined(HAVE_THREAD_LS) + ecc_fp_free(); /* free per thread cache */ +#endif + #ifdef CYASSL_TIRTOS fdCloseSession(Task_self()); #endif diff --git a/examples/server/server.c b/examples/server/server.c index b2be8018e..128d1a02e 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -24,6 +24,9 @@ #endif #include +#ifdef HAVE_ECC + #include /* ecc_fp_free */ +#endif #if !defined(CYASSL_TRACK_MEMORY) && !defined(NO_MAIN_DRIVER) /* in case memory tracker wants stats */ @@ -536,10 +539,16 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) CloseSocket(clientfd); ((func_args*)args)->return_code = 0; + +#if defined(NO_MAIN_DRIVER) && defined(HAVE_ECC) && defined(FP_ECC) \ + && defined(HAVE_THREAD_LS) + ecc_fp_free(); /* free per thread cache */ +#endif + #ifdef USE_CYASSL_MEMORY if (trackMemory) ShowMemoryTracker(); -#endif /* USE_CYASSL_MEMORY */ +#endif #ifdef CYASSL_TIRTOS fdCloseSession(Task_self()); diff --git a/tests/api.c b/tests/api.c index 2ae789035..eff33c45f 100644 --- a/tests/api.c +++ b/tests/api.c @@ -28,6 +28,9 @@ #endif #include +#ifdef HAVE_ECC + #include /* ecc_fp_free */ +#endif #include #include @@ -402,6 +405,11 @@ done: fdCloseSession(Task_self()); #endif +#if defined(NO_MAIN_DRIVER) && defined(HAVE_ECC) && defined(FP_ECC) \ + && defined(HAVE_THREAD_LS) + ecc_fp_free(); /* free per thread cache */ +#endif + #ifndef CYASSL_TIRTOS return 0; #endif @@ -590,6 +598,12 @@ static THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args) #ifdef CYASSL_TIRTOS fdCloseSession(Task_self()); #endif + +#if defined(NO_MAIN_DRIVER) && defined(HAVE_ECC) && defined(FP_ECC) \ + && defined(HAVE_THREAD_LS) + ecc_fp_free(); /* free per thread cache */ +#endif + #ifndef CYASSL_TIRTOS return 0; #endif diff --git a/tests/suites.c b/tests/suites.c index 61dc50544..43213adb1 100644 --- a/tests/suites.c +++ b/tests/suites.c @@ -460,6 +460,7 @@ int SuiteTest(void) printf(" End Cipher Suite Tests\n"); CyaSSL_CTX_free(cipherSuiteCtx); + CyaSSL_Cleanup(); return args.return_code; }