The branch master has been updated via 74bfb980377f43367035959a2c0afb5ec501c033 (commit) via bdd92f4d9bce6c62e553f89a2556c6881fc6d5dd (commit) via 1829ff4b5e7f1d1570ea9b9e4660a1a673e5da67 (commit) via 3e0076c213ec2d1149a9a89f9bc141d1a1a44630 (commit) from c9d6fdd6f79c1725215347ad8409b1e60eaccf0c (commit)
- Log ----------------------------------------------------------------- commit 74bfb980377f43367035959a2c0afb5ec501c033 Author: Matt Caswell <m...@openssl.org> Date: Tue Jun 26 15:21:09 2018 +0100 Remove a memset Also avoids calling EVP_MD_size() and a missing negative result check. Issue found by Coverity. Reviewed-by: Andy Polyakov <ap...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6592) commit bdd92f4d9bce6c62e553f89a2556c6881fc6d5dd Author: Matt Caswell <m...@openssl.org> Date: Tue Jun 26 15:12:56 2018 +0100 Check a return value for success in ec_field_size() Reviewed-by: Andy Polyakov <ap...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6592) commit 1829ff4b5e7f1d1570ea9b9e4660a1a673e5da67 Author: Matt Caswell <m...@openssl.org> Date: Tue Jun 26 15:10:56 2018 +0100 Fix some Coverity issues in sm2_encrypt() Check for a negative EVP_MD_size(). Don't dereference group until we've checked if it is NULL. Reviewed-by: Andy Polyakov <ap...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6592) commit 3e0076c213ec2d1149a9a89f9bc141d1a1a44630 Author: Matt Caswell <m...@openssl.org> Date: Tue Jun 26 15:03:05 2018 +0100 Check md_size isn't negative before we use it Issue found by Coverity Reviewed-by: Andy Polyakov <ap...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6592) ----------------------------------------------------------------------- Summary of changes: crypto/sm2/sm2_crypt.c | 22 ++++++++++++---------- crypto/sm2/sm2_sign.c | 11 ++++++----- crypto/sm2/sm2_za.c | 2 -- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/crypto/sm2/sm2_crypt.c b/crypto/sm2/sm2_crypt.c index 0fe1dd8..aedf905 100644 --- a/crypto/sm2/sm2_crypt.c +++ b/crypto/sm2/sm2_crypt.c @@ -48,7 +48,8 @@ static size_t ec_field_size(const EC_GROUP *group) if (p == NULL || a == NULL || b == NULL) goto done; - EC_GROUP_get_curve_GFp(group, p, a, b, NULL); + if (!EC_GROUP_get_curve_GFp(group, p, a, b, NULL)) + goto done; field_size = (BN_num_bits(p) + 7) / 8; done: @@ -121,19 +122,20 @@ int sm2_encrypt(const EC_KEY *key, uint8_t *msg_mask = NULL; uint8_t *x2y2 = NULL; uint8_t *C3 = NULL; - const size_t field_size = ec_field_size(group); - const size_t C3_size = EVP_MD_size(digest); + size_t field_size; + const int C3_size = EVP_MD_size(digest); /* NULL these before any "goto done" */ ctext_struct.C2 = NULL; ctext_struct.C3 = NULL; - if (hash == NULL - || group == NULL - || order == NULL - || P == NULL - || field_size == 0 - || C3_size == 0) { + if (hash == NULL || C3_size <= 0) { + SM2err(SM2_F_SM2_ENCRYPT, ERR_R_INTERNAL_ERROR); + goto done; + } + + field_size = ec_field_size(group); + if (field_size == 0) { SM2err(SM2_F_SM2_ENCRYPT, ERR_R_INTERNAL_ERROR); goto done; } @@ -273,7 +275,7 @@ int sm2_decrypt(const EC_KEY *key, int msg_len = 0; EVP_MD_CTX *hash = NULL; - if (field_size == 0 || hash_size == 0) + if (field_size == 0 || hash_size <= 0) goto done; memset(ptext_buf, 0xFF, *ptext_len); diff --git a/crypto/sm2/sm2_sign.c b/crypto/sm2/sm2_sign.c index 14576ca..adde952 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; } diff --git a/crypto/sm2/sm2_za.c b/crypto/sm2/sm2_za.c index 94d0dac..8f45082 100644 --- a/crypto/sm2/sm2_za.c +++ b/crypto/sm2/sm2_za.c @@ -59,8 +59,6 @@ int sm2_compute_userid_digest(uint8_t *out, goto done; } - memset(out, 0, EVP_MD_size(digest)); - if (!EVP_DigestInit(hash, digest)) { SM2err(SM2_F_SM2_COMPUTE_USERID_DIGEST, ERR_R_EVP_LIB); goto done; _____ openssl-commits mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits