mirror of
https://github.com/openssl/openssl.git
synced 2025-01-30 14:01:55 +08:00
evp_test: Add the missing check after calling OPENSSL_strdup and sk_OPENSSL_STRING_new_null
Since the memory allocation may fail, the 'mac_name' and 'controls' could be NULL. And the 'mac_name' will be printed in mac_test_run_mac() without check. Also the result of 'params_n + sk_OPENSSL_STRING_num(expected->controls)' in mac_test_run_mac() will be 'params_n - 1' if allocation fails , which does not make sense. Therefore, it should be better to check them in order to guarantee the complete success of initiation. If fails, we also need to free the 'mdat' to avoid the memory leak. Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17628)
This commit is contained in:
parent
07c5465e98
commit
b2f90e93a0
@ -1201,9 +1201,18 @@ static int mac_test_init(EVP_TEST *t, const char *alg)
|
||||
return 0;
|
||||
|
||||
mdat->type = type;
|
||||
mdat->mac_name = OPENSSL_strdup(alg);
|
||||
if (!TEST_ptr(mdat->mac_name = OPENSSL_strdup(alg))) {
|
||||
OPENSSL_free(mdat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
mdat->mac = mac;
|
||||
mdat->controls = sk_OPENSSL_STRING_new_null();
|
||||
if (!TEST_ptr(mdat->controls = sk_OPENSSL_STRING_new_null())) {
|
||||
OPENSSL_free(mdat->mac_name);
|
||||
OPENSSL_free(mdat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
mdat->output_size = mdat->block_size = -1;
|
||||
t->data = mdat;
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user