summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-10-13 13:00:46 +0200
committerRichard Levitte <levitte@openssl.org>2019-10-17 09:14:01 +0200
commit6a36f209bcfbc958e30d544c3031ed002dbfe582 (patch)
treef09868b868aaaf2862369c514c86dac854a3110b /crypto
parent[KDF] Add feedback-mode and CMAC support to KBKDF (diff)
downloadopenssl-6a36f209bcfbc958e30d544c3031ed002dbfe582.tar.xz
openssl-6a36f209bcfbc958e30d544c3031ed002dbfe582.zip
EVP_{CIPHER,MD}_CTX_ctrl(): make extra sure to return 0 or 1
The previous fix was incomplete. Fixes #10106 Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/10163)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/evp/digest.c2
-rw-r--r--crypto/evp/evp_enc.c10
2 files changed, 6 insertions, 6 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c
index c2a6e83ad5..e59f082818 100644
--- a/crypto/evp/digest.c
+++ b/crypto/evp/digest.c
@@ -680,7 +680,7 @@ int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)
p2, p1);
break;
default:
- return EVP_CTRL_RET_UNSUPPORTED;
+ goto conclude;
}
if (set_params)
diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c
index 18adc5b586..3f0e5a7e4a 100644
--- a/crypto/evp/evp_enc.c
+++ b/crypto/evp/evp_enc.c
@@ -1092,7 +1092,7 @@ int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
case EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS: /* Used by DASYNC */
case EVP_CTRL_INIT: /* TODO(3.0) Purely legacy, no provider counterpart */
default:
- return EVP_CTRL_RET_UNSUPPORTED;
+ goto end;
case EVP_CTRL_GET_IV:
set_params = 0;
params[0] = OSSL_PARAM_construct_octet_string(OSSL_CIPHER_PARAM_IV,
@@ -1134,12 +1134,12 @@ int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
ptr, sz);
ret = evp_do_ciph_ctx_setparams(ctx->cipher, ctx->provctx, params);
if (ret <= 0)
- return ret;
+ goto end;
params[0] =
OSSL_PARAM_construct_size_t(OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD, &sz);
ret = evp_do_ciph_ctx_getparams(ctx->cipher, ctx->provctx, params);
if (ret <= 0)
- return 0;
+ goto end;
return sz;
#ifndef OPENSSL_NO_RC2
case EVP_CTRL_GET_RC2_KEY_BITS:
@@ -1154,7 +1154,7 @@ int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
ret = evp_do_ciph_ctx_setparams(ctx->cipher, ctx->provctx, params);
else
ret = evp_do_ciph_ctx_getparams(ctx->cipher, ctx->provctx, params);
- goto conclude;
+ goto end;
/* TODO(3.0): Remove legacy code below */
legacy:
@@ -1165,7 +1165,7 @@ legacy:
ret = ctx->cipher->ctrl(ctx, type, arg, ptr);
- conclude:
+ end:
if (ret == EVP_CTRL_RET_UNSUPPORTED) {
EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL,
EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED);