diff options
author | Richard Levitte <levitte@openssl.org> | 2019-10-06 10:45:17 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-10-06 12:09:03 +0200 |
commit | 552be00d429dc3d6c95bb2d9573b09e67485afb3 (patch) | |
tree | 44331814557c94965139f5ad8b6f971f94d45bc4 /crypto/evp/digest.c | |
parent | 7cfc0a555c85220ecfd6ed038a7b859668595b72 (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.c | 3 |
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; |