From: Shane Lontis Date: Tue, 9 Mar 2021 04:46:05 +0000 (+1000) Subject: Add ossl_is_partially_overlapping symbol X-Git-Tag: openssl-3.0.0-alpha14~225 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d7776892f571cb438563d65d5d252e0245cd57e;p=thirdparty%2Fopenssl.git Add ossl_is_partially_overlapping symbol Partial fix for #12964 Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/14473) --- diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c index d812b2ade8e..05c1ee787c0 100644 --- a/crypto/evp/e_aes.c +++ b/crypto/evp/e_aes.c @@ -3567,7 +3567,7 @@ static int aes_wrap_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, /* If not padding input must be multiple of 8 */ if (!pad && inlen & 0x7) return -1; - if (is_partially_overlapping(out, in, inlen)) { + if (ossl_is_partially_overlapping(out, in, inlen)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } @@ -3871,7 +3871,7 @@ static int aes_ocb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, buf = octx->data_buf; buf_len = &(octx->data_buf_len); - if (is_partially_overlapping(out + *buf_len, in, len)) { + if (ossl_is_partially_overlapping(out + *buf_len, in, len)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } diff --git a/crypto/evp/e_des3.c b/crypto/evp/e_des3.c index 9d143d3bd54..f85d520eb6f 100644 --- a/crypto/evp/e_des3.c +++ b/crypto/evp/e_des3.c @@ -397,7 +397,7 @@ static int des_ede3_wrap_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, if (inl >= EVP_MAXCHUNK || inl % 8) return -1; - if (is_partially_overlapping(out, in, inl)) { + if (ossl_is_partially_overlapping(out, in, inl)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index eb174c2d9f6..c3d2b97594a 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -476,7 +476,7 @@ int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, # define PTRDIFF_T size_t #endif -int is_partially_overlapping(const void *ptr1, const void *ptr2, int len) +int ossl_is_partially_overlapping(const void *ptr1, const void *ptr2, int len) { PTRDIFF_T diff = (PTRDIFF_T)ptr1-(PTRDIFF_T)ptr2; /* @@ -503,7 +503,7 @@ static int evp_EncryptDecryptUpdate(EVP_CIPHER_CTX *ctx, if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) { /* If block size > 1 then the cipher will have to do this check */ - if (bl == 1 && is_partially_overlapping(out, in, cmpl)) { + if (bl == 1 && ossl_is_partially_overlapping(out, in, cmpl)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } @@ -520,7 +520,7 @@ static int evp_EncryptDecryptUpdate(EVP_CIPHER_CTX *ctx, *outl = 0; return inl == 0; } - if (is_partially_overlapping(out + ctx->buf_len, in, cmpl)) { + if (ossl_is_partially_overlapping(out + ctx->buf_len, in, cmpl)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } @@ -785,7 +785,7 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, cmpl = (cmpl + 7) / 8; if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) { - if (b == 1 && is_partially_overlapping(out, in, cmpl)) { + if (b == 1 && ossl_is_partially_overlapping(out, in, cmpl)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } @@ -812,7 +812,7 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, if (ctx->final_used) { /* see comment about PTRDIFF_T comparison above */ if (((PTRDIFF_T)out == (PTRDIFF_T)in) - || is_partially_overlapping(out, in, b)) { + || ossl_is_partially_overlapping(out, in, b)) { ERR_raise(ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING); return 0; } diff --git a/crypto/evp/evp_local.h b/crypto/evp/evp_local.h index 92a96f433e8..0db84a3d84c 100644 --- a/crypto/evp/evp_local.h +++ b/crypto/evp/evp_local.h @@ -227,7 +227,7 @@ struct evp_Encode_Ctx_st { typedef struct evp_pbe_st EVP_PBE_CTL; DEFINE_STACK_OF(EVP_PBE_CTL) -int is_partially_overlapping(const void *ptr1, const void *ptr2, int len); +int ossl_is_partially_overlapping(const void *ptr1, const void *ptr2, int len); #include #include