summaryrefslogtreecommitdiffstats
path: root/providers
diff options
context:
space:
mode:
authorJiasheng Jiang <jiasheng@purdue.edu>2024-03-22 22:12:50 +0000
committerTomas Mraz <tomas@openssl.org>2024-04-09 20:45:26 +0200
commitf4174b6db41650363e41af42e82de9cc7ef09a5e (patch)
treeae685045780cabb0cc4a0e9b29c3bcced5a72990 /providers
parentdf0ee35b53a6cde959c119a165814d88e4492bb1 (diff)
signature/dsa_sig.c: Add checks for the EVP_MD_get_size()
Add checks for the EVP_MD_get_size() to avoid integer overflow and then explicitly cast from int to size_t. Fixes: 45a845e40b ("Add EVP_DigestSign/EVP_DigestVerify support for DSA") Signed-off-by: Jiasheng Jiang <jiasheng@purdue.edu> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/23948)
Diffstat (limited to 'providers')
-rw-r--r--providers/implementations/signature/dsa_sig.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/providers/implementations/signature/dsa_sig.c b/providers/implementations/signature/dsa_sig.c
index b89a0f6836..12cbdb4356 100644
--- a/providers/implementations/signature/dsa_sig.c
+++ b/providers/implementations/signature/dsa_sig.c
@@ -93,8 +93,14 @@ typedef struct {
static size_t dsa_get_md_size(const PROV_DSA_CTX *pdsactx)
{
- if (pdsactx->md != NULL)
- return EVP_MD_get_size(pdsactx->md);
+ int md_size;
+
+ if (pdsactx->md != NULL) {
+ md_size = EVP_MD_get_size(pdsactx->md);
+ if (md_size <= 0)
+ return 0;
+ return (size_t)md_size;
+ }
return 0;
}