diff options
author | Neil Horman <nhorman@openssl.org> | 2023-12-09 13:40:01 -0500 |
---|---|---|
committer | Neil Horman <nhorman@openssl.org> | 2024-01-25 08:27:53 -0500 |
commit | 6f22bcd631ab622c2436bc5b299ba2677c388375 (patch) | |
tree | e62244a2a0e8f491ab3e3b582928dbc6383f7abf /providers | |
parent | ff78d94b131d7bb3b761509d3ce0dd864b1420e3 (diff) |
Add appropriate NULL checks in EVP_CIPHER api
The EVP_CIPHER api currently assumes that calls made into several APIs
have already initalized the cipher in a given context via a call to
EVP_CipherInit[_ex[2]]. If that hasnt been done, instead of an error,
the result is typically a SIGSEGV.
Correct that by adding missing NULL checks in the apropriate apis prior
to using ctx->cipher
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22995)
Diffstat (limited to 'providers')
-rw-r--r-- | providers/implementations/kdfs/krb5kdf.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/providers/implementations/kdfs/krb5kdf.c b/providers/implementations/kdfs/krb5kdf.c index b6cf0e3a2b..19dcd83835 100644 --- a/providers/implementations/kdfs/krb5kdf.c +++ b/providers/implementations/kdfs/krb5kdf.c @@ -416,6 +416,12 @@ static int KRB5KDF(const EVP_CIPHER *cipher, ENGINE *engine, /* Initialize input block */ blocksize = EVP_CIPHER_CTX_get_block_size(ctx); + if (blocksize == 0) { + ERR_raise(ERR_LIB_PROV, PROV_R_MISSING_CIPHER); + ret = 0; + goto out; + } + if (constant_len > blocksize) { ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_CONSTANT_LENGTH); ret = 0; |