diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-11-22 13:43:07 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-22 13:43:07 (GMT) |
commit | c48ff73dd60bec5dcbe64bedeff91e6db26d98bc (patch) | |
tree | 4f8c01541d1bfb792f3d3c3c8e5f6d3c7c55bc21 /Python/bootstrap_hash.c | |
parent | 28f468cb19e3097079b7ce7850e6048de99022fa (diff) | |
download | cpython-c48ff73dd60bec5dcbe64bedeff91e6db26d98bc.zip cpython-c48ff73dd60bec5dcbe64bedeff91e6db26d98bc.tar.gz cpython-c48ff73dd60bec5dcbe64bedeff91e6db26d98bc.tar.bz2 |
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 <jeremy.kloth@gmail.com>
Diffstat (limited to 'Python/bootstrap_hash.c')
-rw-r--r-- | Python/bootstrap_hash.c | 6 |
1 files 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) { |