aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Schaumann <[email protected]>2026-05-18 23:42:25 +0200
committerEugene Syromiatnikov <[email protected]>2026-10-09 21:32:23 +0200
commit2eb54ba743e7e5233f75b54ed99eb71407679d5a (patch)
tree4e18baaf9a638cd0f0bfba325cb51c1f0bf6c16b
parentrsa_multiprime_keygen(): Fix leak of tmp if stack insertion fails (diff)
downloadopenssl-2eb54ba743e7e5233f75b54ed99eb71407679d5a.tar.gz
openssl-2eb54ba743e7e5233f75b54ed99eb71407679d5a.zip
EVP_MD_demo.c, tls13secretstest.c: avoid signed-to-unsigned integer conversion
Should EVP_MD_size() return -1, the size_t len variable would wrap, causing any subsequent error checks to not trigger. Change to type int (which is what EVP_MD_size() returns). While this is just in test/demo code, that's the kind of code that people might copy and reuse elsewhere, and that AI vuln scanners trigger on, so might as well try to eliminate that noise. Fixes: 7a7fbeb924a0 "fix all the warnings in our demos and make them enableable" Fixes: 134bfe56c4fe "Add a test for the TLS1.3 secret generation" Reviewed-by: Paul Dale <[email protected]> Reviewed-by: Nikola Pajkovsky <[email protected]> Reviewed-by: Eugene Syromiatnikov <[email protected]> Merge-date: Fri Oct 9 19:19:13 2026 Merged-from: https://github.com/openssl/openssl/pull/31222 (cherry picked from commit 9f561c1c232786f8406173f4d09ccc49a33f8883)
-rw-r--r--demos/digest/EVP_MD_demo.c6
-rw-r--r--test/tls13secretstest.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/demos/digest/EVP_MD_demo.c b/demos/digest/EVP_MD_demo.c
index a32794fe582..eb4954e951f 100644
--- a/demos/digest/EVP_MD_demo.c
+++ b/demos/digest/EVP_MD_demo.c
@@ -78,6 +78,7 @@ static int demonstrate_digest(void)
const char *option_properties = NULL;
EVP_MD *message_digest = NULL;
EVP_MD_CTX *digest_context = NULL;
+ int sz = 0;
unsigned int digest_length;
unsigned char *digest_value = NULL;
unsigned int j;
@@ -100,11 +101,12 @@ static int demonstrate_digest(void)
goto cleanup;
}
/* Determine the length of the fetched digest type */
- digest_length = EVP_MD_get_size(message_digest);
- if (digest_length <= 0) {
+ sz = EVP_MD_get_size(message_digest);
+ if (sz <= 0) {
fprintf(stderr, "EVP_MD_get_size returned invalid size.\n");
goto cleanup;
}
+ digest_length = (unsigned int)sz;
digest_value = OPENSSL_malloc(digest_length);
if (digest_value == NULL) {
diff --git a/test/tls13secretstest.c b/test/tls13secretstest.c
index d5622f7cdfe..b4b4fc8bb35 100644
--- a/test/tls13secretstest.c
+++ b/test/tls13secretstest.c
@@ -290,6 +290,7 @@ static int test_handshake_secrets(void)
SSL *ssl = NULL;
SSL_CONNECTION *s;
int ret = 0;
+ int sz;
size_t hashsize;
unsigned char out_master_secret[EVP_MAX_MD_SIZE];
size_t master_secret_length;
@@ -328,7 +329,10 @@ static int test_handshake_secrets(void)
handshake_secret, sizeof(handshake_secret)))
goto err;
- hashsize = EVP_MD_get_size(ssl_handshake_md(s));
+ sz = EVP_MD_get_size(ssl_handshake_md(s));
+ if (sz < 0)
+ goto err;
+ hashsize = (size_t)sz;
if (!TEST_size_t_eq(sizeof(client_hts), hashsize))
goto err;
if (!TEST_size_t_eq(sizeof(client_hts_key), KEYLEN))