From c48ff73dd60bec5dcbe64bedeff91e6db26d98bc Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 22 Nov 2018 14:43:07 +0100 Subject: bpo-18407: win32_urandom() uses PY_DWORD_MAX (GH-10656) CryptGenRandom() maximum size is PY_DWORD_MAX, not INT_MAX. Use DWORD type for the 'chunk' variable Co-Authored-By: Jeremy Kloth --- Python/bootstrap_hash.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c index 793c646..eb848c8 100644 --- a/Python/bootstrap_hash.c +++ b/Python/bootstrap_hash.c @@ -55,8 +55,6 @@ error: static int win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) { - Py_ssize_t chunk; - if (hCryptProv == 0) { if (win32_urandom_init(raise) == -1) { @@ -66,8 +64,8 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) while (size > 0) { - chunk = size > INT_MAX ? INT_MAX : size; - if (!CryptGenRandom(hCryptProv, (DWORD)chunk, buffer)) + DWORD chunk = (DWORD)Py_MIN(size, PY_DWORD_MAX); + if (!CryptGenRandom(hCryptProv, chunk, buffer)) { /* CryptGenRandom() failed */ if (raise) { -- cgit v0.12