From: Dr. Stephen Henson Date: Mon, 21 Mar 2011 14:40:57 +0000 (+0000) Subject: Free DRBG context in self tests. X-Git-Tag: OpenSSL-fips-2_0-rc1~651 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=beb895083c4794c6134e05dc0fbf0a1a6b919b8e;p=oweals%2Fopenssl.git Free DRBG context in self tests. --- diff --git a/fips/rand/fips_drbg_lib.c b/fips/rand/fips_drbg_lib.c index 94bc36a31f..a015da1e41 100644 --- a/fips/rand/fips_drbg_lib.c +++ b/fips/rand/fips_drbg_lib.c @@ -112,7 +112,8 @@ DRBG_CTX *FIPS_drbg_new(int type, unsigned int flags) void FIPS_drbg_free(DRBG_CTX *dctx) { - dctx->uninstantiate(dctx); + if (dctx->uninstantiate) + dctx->uninstantiate(dctx); OPENSSL_cleanse(dctx, sizeof(DRBG_CTX)); OPENSSL_free(dctx); } @@ -388,8 +389,9 @@ int FIPS_drbg_uninstantiate(DRBG_CTX *dctx) { int rv; if (!dctx->uninstantiate) - return 1; - rv = dctx->uninstantiate(dctx); + rv = 1; + else + rv = dctx->uninstantiate(dctx); /* Although we'd like to cleanse here we can't because we have to * test the uninstantiate really zeroes the data. */ diff --git a/fips/rand/fips_drbg_selftest.c b/fips/rand/fips_drbg_selftest.c index f580eafb4a..af21971ba0 100644 --- a/fips/rand/fips_drbg_selftest.c +++ b/fips/rand/fips_drbg_selftest.c @@ -1011,6 +1011,7 @@ int FIPS_selftest_drbg(void) if (!fips_drbg_health_check(dctx, td)) break; } + FIPS_drbg_free(dctx); if (td->nid == 0) return 1; return 0;