From: Richard Levitte Date: Thu, 10 Oct 2019 16:14:33 +0000 (+0200) Subject: Providers: fix OSSL_FUNC_CIPHER_CIPHER functions X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ff33581c67928d2c21f1e853bca3a561335d4c3e;p=oweals%2Fopenssl.git Providers: fix OSSL_FUNC_CIPHER_CIPHER functions This involves gcm_cipher() (providers/common/ciphers/cipher_gcm.c), ccm_cipher() (providers/common/ciphers/cipher_ccm.c), and tdes_wrap_cipher() (providers/common/ciphers/cipher_tdes_wrap.c) These are generic implementations of the OSSL_FUNC_CIPHER_CIPHER function, which returned -1 on error when they should return 0. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/10137) --- diff --git a/providers/common/ciphers/cipher_ccm.c b/providers/common/ciphers/cipher_ccm.c index 904af3a5e0..021a004276 100644 --- a/providers/common/ciphers/cipher_ccm.c +++ b/providers/common/ciphers/cipher_ccm.c @@ -278,11 +278,11 @@ int ccm_cipher(void *vctx, if (outsize < inl) { ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL); - return -1; + return 0; } if (ccm_cipher_internal(ctx, out, outl, in, inl) <= 0) - return -1; + return 0; *outl = inl; return 1; diff --git a/providers/common/ciphers/cipher_gcm.c b/providers/common/ciphers/cipher_gcm.c index 580928fdde..d7c67e8b6b 100644 --- a/providers/common/ciphers/cipher_gcm.c +++ b/providers/common/ciphers/cipher_gcm.c @@ -263,11 +263,11 @@ int gcm_cipher(void *vctx, if (outsize < inl) { ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL); - return -1; + return 0; } if (gcm_cipher_internal(ctx, out, outl, in, inl) <= 0) - return -1; + return 0; *outl = inl; return 1; diff --git a/providers/implementations/ciphers/cipher_tdes_wrap.c b/providers/implementations/ciphers/cipher_tdes_wrap.c index 75cc25df06..b26f2cb403 100644 --- a/providers/implementations/ciphers/cipher_tdes_wrap.c +++ b/providers/implementations/ciphers/cipher_tdes_wrap.c @@ -131,7 +131,7 @@ static int tdes_wrap_cipher(void *vctx, *outl = 0; if (outsize < inl) { PROVerr(0, PROV_R_OUTPUT_BUFFER_TOO_SMALL); - return -1; + return 0; } ret = tdes_wrap_cipher_internal(ctx, out, in, inl);