From: Victor Stinner Date: Thu, 22 Nov 2018 13:43:07 +0000 (+0100) Subject: bpo-18407: win32_urandom() uses PY_DWORD_MAX (GH-10656) X-Git-Tag: v3.8.0a1~454 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c48ff73dd60bec5dcbe64bedeff91e6db26d98bc;p=thirdparty%2FPython%2Fcpython.git 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 --- diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c index 793c646f12ba..eb848c8ff6e3 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) {