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