mirror of https://github.com/openssl/openssl.git
evp: fix improper use of negative value issues
Coverity issues 1485662, 1485663 & 1485664. Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15635)
This commit is contained in:
parent
b0a0ab07b4
commit
042f8f70cb
|
|
@ -2516,9 +2516,14 @@ static int aes_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len)
|
const unsigned char *in, size_t len)
|
||||||
{
|
{
|
||||||
unsigned int num = EVP_CIPHER_CTX_get_num(ctx);
|
int n = EVP_CIPHER_CTX_get_num(ctx);
|
||||||
|
unsigned int num;
|
||||||
EVP_AES_KEY *dat = EVP_C_DATA(EVP_AES_KEY,ctx);
|
EVP_AES_KEY *dat = EVP_C_DATA(EVP_AES_KEY,ctx);
|
||||||
|
|
||||||
|
if (n < 0)
|
||||||
|
return 0;
|
||||||
|
num = (unsigned int)n;
|
||||||
|
|
||||||
if (dat->stream.ctr)
|
if (dat->stream.ctr)
|
||||||
CRYPTO_ctr128_encrypt_ctr32(in, out, len, &dat->ks,
|
CRYPTO_ctr128_encrypt_ctr32(in, out, len, &dat->ks,
|
||||||
ctx->iv,
|
ctx->iv,
|
||||||
|
|
|
||||||
|
|
@ -175,9 +175,14 @@ const EVP_CIPHER *EVP_aria_##keylen##_##mode(void) \
|
||||||
static int aria_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int aria_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len)
|
const unsigned char *in, size_t len)
|
||||||
{
|
{
|
||||||
unsigned int num = EVP_CIPHER_CTX_get_num(ctx);
|
int n = EVP_CIPHER_CTX_get_num(ctx);
|
||||||
|
unsigned int num;
|
||||||
EVP_ARIA_KEY *dat = EVP_C_DATA(EVP_ARIA_KEY, ctx);
|
EVP_ARIA_KEY *dat = EVP_C_DATA(EVP_ARIA_KEY, ctx);
|
||||||
|
|
||||||
|
if (n < 0)
|
||||||
|
return 0;
|
||||||
|
num = (unsigned int)n;
|
||||||
|
|
||||||
CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, ctx->iv,
|
CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, ctx->iv,
|
||||||
EVP_CIPHER_CTX_buf_noconst(ctx), &num,
|
EVP_CIPHER_CTX_buf_noconst(ctx), &num,
|
||||||
(block128_f) ossl_aria_encrypt);
|
(block128_f) ossl_aria_encrypt);
|
||||||
|
|
|
||||||
|
|
@ -74,9 +74,14 @@ IMPLEMENT_BLOCK_CIPHER(sm4, ks, sm4, EVP_SM4_KEY, NID_sm4,
|
||||||
static int sm4_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
static int sm4_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||||
const unsigned char *in, size_t len)
|
const unsigned char *in, size_t len)
|
||||||
{
|
{
|
||||||
unsigned int num = EVP_CIPHER_CTX_get_num(ctx);
|
int n = EVP_CIPHER_CTX_get_num(ctx);
|
||||||
|
unsigned int num;
|
||||||
EVP_SM4_KEY *dat = EVP_C_DATA(EVP_SM4_KEY, ctx);
|
EVP_SM4_KEY *dat = EVP_C_DATA(EVP_SM4_KEY, ctx);
|
||||||
|
|
||||||
|
if (n < 0)
|
||||||
|
return 0;
|
||||||
|
num = (unsigned int)n;
|
||||||
|
|
||||||
CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, ctx->iv,
|
CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, ctx->iv,
|
||||||
EVP_CIPHER_CTX_buf_noconst(ctx), &num,
|
EVP_CIPHER_CTX_buf_noconst(ctx), &num,
|
||||||
(block128_f)ossl_sm4_encrypt);
|
(block128_f)ossl_sm4_encrypt);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue