summaryrefslogtreecommitdiffstats
path: root/crypto/evp/digest.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-10-06 10:45:17 +0200
committerRichard Levitte <levitte@openssl.org>2019-10-06 12:09:03 +0200
commit552be00d429dc3d6c95bb2d9573b09e67485afb3 (patch)
tree44331814557c94965139f5ad8b6f971f94d45bc4 /crypto/evp/digest.c
parent7cfc0a555c85220ecfd6ed038a7b859668595b72 (diff)
EVP_{CIPHER,MD}_CTX_ctrl(): make sure to return 0 or 1
Even thought the underlying calls might return something other than 0 or 1, EVP_CIPHER_CTX_ctrl() and EVP_MD_CTX_ctrl() were made to only return those values regardless. That behaviour was recently lost, so we need to restore it. Fixes #10106 Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/10108)
Diffstat (limited to 'crypto/evp/digest.c')
-rw-r--r--crypto/evp/digest.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c
index 4f6b68c667..fa1dfa7303 100644
--- a/crypto/evp/digest.c
+++ b/crypto/evp/digest.c
@@ -665,7 +665,7 @@ int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)
ret = EVP_MD_CTX_set_params(ctx, params);
else
ret = EVP_MD_CTX_get_params(ctx, params);
- return ret;
+ goto conclude;
/* TODO(3.0): Remove legacy code below */
@@ -676,6 +676,7 @@ int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)
}
ret = ctx->digest->md_ctrl(ctx, cmd, p1, p2);
+ conclude:
if (ret <= 0)
return 0;
return ret;