From 874fa8c1f9039449e61fc0448886b64ed725b233 Mon Sep 17 00:00:00 2001 From: John Safranek Date: Fri, 6 Mar 2015 09:51:29 -0800 Subject: [PATCH] fix freeing a failed RNG --- wolfcrypt/src/random.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 2bfe93ac8..1c45b0f04 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -507,13 +507,16 @@ int wc_FreeRng(RNG* rng) int ret = BAD_FUNC_ARG; if (rng != NULL) { - if (Hash_DRBG_Uninstantiate(rng->drbg) == DRBG_SUCCESS) - ret = 0; - else - ret = RNG_FAILURE_E; + if (rng->drbg != NULL) { + if (Hash_DRBG_Uninstantiate(rng->drbg) == DRBG_SUCCESS) + ret = 0; + else + ret = RNG_FAILURE_E; + + XFREE(rng->drbg, NULL, DYNAMIC_TYPE_RNG); + rng->drbg = NULL; + } - XFREE(rng->drbg, NULL, DYNAMIC_TYPE_RNG); - rng->drbg = NULL; rng->status = DRBG_NOT_INIT; }