diff options
author | Matt Caswell <matt@openssl.org> | 2018-06-26 15:03:05 +0100 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2018-07-07 14:00:10 +0100 |
commit | 3e0076c213ec2d1149a9a89f9bc141d1a1a44630 (patch) | |
tree | f9cffa9e2dbf090f55308c5a8f7bd52407408afc /crypto/sm2/sm2_sign.c | |
parent | c9d6fdd6f79c1725215347ad8409b1e60eaccf0c (diff) |
Check md_size isn't negative before we use it
Issue found by Coverity
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6592)
Diffstat (limited to 'crypto/sm2/sm2_sign.c')
-rw-r--r-- | crypto/sm2/sm2_sign.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crypto/sm2/sm2_sign.c b/crypto/sm2/sm2_sign.c index 14576ca840..adde9520ce 100644 --- a/crypto/sm2/sm2_sign.c +++ b/crypto/sm2/sm2_sign.c @@ -25,16 +25,17 @@ static BIGNUM *sm2_compute_msg_hash(const EVP_MD *digest, { EVP_MD_CTX *hash = EVP_MD_CTX_new(); const int md_size = EVP_MD_size(digest); - uint8_t *za = OPENSSL_zalloc(md_size); + uint8_t *za = NULL; BIGNUM *e = NULL; - if (hash == NULL || za == NULL) { - SM2err(SM2_F_SM2_COMPUTE_MSG_HASH, ERR_R_MALLOC_FAILURE); + if (md_size < 0) { + SM2err(SM2_F_SM2_COMPUTE_MSG_HASH, SM2_R_INVALID_DIGEST); goto done; } - if (md_size < 0) { - SM2err(SM2_F_SM2_COMPUTE_MSG_HASH, SM2_R_INVALID_DIGEST); + za = OPENSSL_zalloc(md_size); + if (hash == NULL || za == NULL) { + SM2err(SM2_F_SM2_COMPUTE_MSG_HASH, ERR_R_MALLOC_FAILURE); goto done; } |