]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
rand: fix memory overrun bug
authorPauli <ppzgs1@gmail.com>
Wed, 4 Jun 2025 23:57:00 +0000 (09:57 +1000)
committerTomas Mraz <tomas@openssl.org>
Mon, 9 Jun 2025 07:56:13 +0000 (09:56 +0200)
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/27767)

providers/implementations/rands/test_rng.c

index 4e7fed0fc7b1f8894e3abb5c7eefd037eb170848..d974537ca5d87a6058f642dc252ec8229e405df6 100644 (file)
@@ -125,16 +125,18 @@ static int test_rng_reseed(ossl_unused void *vtest,
 static size_t test_rng_nonce(void *vtest, unsigned char *out,
                              unsigned int strength,
                              ossl_unused size_t min_noncelen,
-                             ossl_unused size_t max_noncelen)
+                             size_t max_noncelen)
 {
     PROV_TEST_RNG *t = (PROV_TEST_RNG *)vtest;
+    size_t i;
 
     if (t->nonce == NULL || strength > t->strength)
         return 0;
 
+    i = t->nonce_len > max_noncelen ? max_noncelen : t->nonce_len;
     if (out != NULL)
-        memcpy(out, t->nonce, t->nonce_len);
-    return t->nonce_len;
+        memcpy(out, t->nonce, i);
+    return i;
 }
 
 static int test_rng_get_ctx_params(void *vtest, OSSL_PARAM params[])