diff options
author | Richard Levitte <levitte@openssl.org> | 2019-10-13 13:00:46 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-10-17 09:14:01 +0200 |
commit | 6a36f209bcfbc958e30d544c3031ed002dbfe582 (patch) | |
tree | f09868b868aaaf2862369c514c86dac854a3110b /crypto | |
parent | [KDF] Add feedback-mode and CMAC support to KBKDF (diff) | |
download | openssl-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.c | 2 | ||||
-rw-r--r-- | crypto/evp/evp_enc.c | 10 |
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); |