mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Fix memory leaks: uninstantiate DRBG during health checks. Cleanup md_ctx
when performing ECDSA selftest.
This commit is contained in:
parent
e2abfd58cc
commit
49cb5e0b40
@ -157,6 +157,7 @@ static ERR_STRING_DATA FIPS_str_reasons[]=
|
|||||||
{ERR_REASON(FIPS_R_SELFTEST_FAILURE) ,"selftest failure"},
|
{ERR_REASON(FIPS_R_SELFTEST_FAILURE) ,"selftest failure"},
|
||||||
{ERR_REASON(FIPS_R_STRENGTH_ERROR_UNDETECTED),"strength error undetected"},
|
{ERR_REASON(FIPS_R_STRENGTH_ERROR_UNDETECTED),"strength error undetected"},
|
||||||
{ERR_REASON(FIPS_R_TEST_FAILURE) ,"test failure"},
|
{ERR_REASON(FIPS_R_TEST_FAILURE) ,"test failure"},
|
||||||
|
{ERR_REASON(FIPS_R_UNINSTANTIATE_ERROR) ,"uninstantiate error"},
|
||||||
{ERR_REASON(FIPS_R_UNINSTANTIATE_ZEROISE_ERROR),"uninstantiate zeroise error"},
|
{ERR_REASON(FIPS_R_UNINSTANTIATE_ZEROISE_ERROR),"uninstantiate zeroise error"},
|
||||||
{ERR_REASON(FIPS_R_UNSUPPORTED_DRBG_TYPE),"unsupported drbg type"},
|
{ERR_REASON(FIPS_R_UNSUPPORTED_DRBG_TYPE),"unsupported drbg type"},
|
||||||
{ERR_REASON(FIPS_R_UNSUPPORTED_PLATFORM) ,"unsupported platform"},
|
{ERR_REASON(FIPS_R_UNSUPPORTED_PLATFORM) ,"unsupported platform"},
|
||||||
|
@ -151,6 +151,8 @@ int FIPS_selftest_ecdsa()
|
|||||||
|
|
||||||
err:
|
err:
|
||||||
|
|
||||||
|
FIPS_md_ctx_cleanup(&mctx);
|
||||||
|
|
||||||
if (x)
|
if (x)
|
||||||
BN_clear_free(x);
|
BN_clear_free(x);
|
||||||
if (y)
|
if (y)
|
||||||
|
@ -280,6 +280,7 @@ void ERR_load_FIPS_strings(void);
|
|||||||
#define FIPS_R_SELFTEST_FAILURE 135
|
#define FIPS_R_SELFTEST_FAILURE 135
|
||||||
#define FIPS_R_STRENGTH_ERROR_UNDETECTED 136
|
#define FIPS_R_STRENGTH_ERROR_UNDETECTED 136
|
||||||
#define FIPS_R_TEST_FAILURE 137
|
#define FIPS_R_TEST_FAILURE 137
|
||||||
|
#define FIPS_R_UNINSTANTIATE_ERROR 141
|
||||||
#define FIPS_R_UNINSTANTIATE_ZEROISE_ERROR 138
|
#define FIPS_R_UNINSTANTIATE_ZEROISE_ERROR 138
|
||||||
#define FIPS_R_UNSUPPORTED_DRBG_TYPE 139
|
#define FIPS_R_UNSUPPORTED_DRBG_TYPE 139
|
||||||
#define FIPS_R_UNSUPPORTED_PLATFORM 140
|
#define FIPS_R_UNSUPPORTED_PLATFORM 140
|
||||||
|
@ -859,6 +859,13 @@ static int fips_drbg_health_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dctx->flags &= ~DRBG_FLAG_NOERR;
|
||||||
|
if (!FIPS_drbg_uninstantiate(dctx))
|
||||||
|
{
|
||||||
|
FIPSerr(FIPS_F_FIPS_DRBG_HEALTH_CHECK, FIPS_R_UNINSTANTIATE_ERROR);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
/* Instantiate with valid data. NB: errors now reported again */
|
/* Instantiate with valid data. NB: errors now reported again */
|
||||||
if (!FIPS_drbg_init(dctx, td->nid, td->flags))
|
if (!FIPS_drbg_init(dctx, td->nid, td->flags))
|
||||||
goto err;
|
goto err;
|
||||||
@ -911,6 +918,14 @@ static int fips_drbg_health_check(DRBG_CTX *dctx, DRBG_SELFTEST_DATA *td)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dctx->flags &= ~DRBG_FLAG_NOERR;
|
||||||
|
|
||||||
|
if (!FIPS_drbg_uninstantiate(dctx))
|
||||||
|
{
|
||||||
|
FIPSerr(FIPS_F_FIPS_DRBG_HEALTH_CHECK, FIPS_R_UNINSTANTIATE_ERROR);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Instantiate again with valid data */
|
/* Instantiate again with valid data */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user