mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
Fix error handling in CRYPTO_get_ex_new_index
If an out of memory error happens when the index zero is reserved in a newly created ip->meth stack object, that reservation is not done in a second attempt, which makes various X_set_ex_data overwrite the value of X_set_app_data. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22149)
This commit is contained in:
parent
8c040c086c
commit
d4f22a915a
@ -171,6 +171,8 @@ int ossl_crypto_get_ex_new_index_ex(OSSL_LIB_CTX *ctx, int class_index,
|
||||
* "app_data" routines use ex_data index zero. See RT 3710. */
|
||||
if (ip->meth == NULL
|
||||
|| !sk_EX_CALLBACK_push(ip->meth, NULL)) {
|
||||
sk_EX_CALLBACK_free(ip->meth);
|
||||
ip->meth = NULL;
|
||||
ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB);
|
||||
goto err;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user