mirror of
https://github.com/openssl/openssl.git
synced 2025-02-23 14:42:15 +08:00
Fix Coverity 1503096: out-of-bounds access
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/17898)
This commit is contained in:
parent
766a7d4676
commit
d1592f21c0
@ -357,8 +357,10 @@ static int evp_cipher_init_internal(EVP_CIPHER_CTX *ctx,
|
||||
|
||||
case EVP_CIPH_CBC_MODE:
|
||||
n = EVP_CIPHER_CTX_get_iv_length(ctx);
|
||||
if (!ossl_assert(n >= 0 && n <= (int)sizeof(ctx->iv)))
|
||||
return 0;
|
||||
if (n < 0 || n > (int)sizeof(ctx->iv)) {
|
||||
ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
|
||||
return 0;
|
||||
}
|
||||
if (iv != NULL)
|
||||
memcpy(ctx->oiv, iv, n);
|
||||
memcpy(ctx->iv, ctx->oiv, n);
|
||||
@ -368,8 +370,11 @@ static int evp_cipher_init_internal(EVP_CIPHER_CTX *ctx,
|
||||
ctx->num = 0;
|
||||
/* Don't reuse IV for CTR mode */
|
||||
if (iv != NULL) {
|
||||
if ((n = EVP_CIPHER_CTX_get_iv_length(ctx)) <= 0)
|
||||
n = EVP_CIPHER_CTX_get_iv_length(ctx);
|
||||
if (n <= 0 || n > (int)sizeof(ctx->iv)) {
|
||||
ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
|
||||
return 0;
|
||||
}
|
||||
memcpy(ctx->iv, iv, n);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user