Unverified Kaydet (Commit) c48ff73d authored tarafından Victor Stinner's avatar Victor Stinner Kaydeden (comit) GitHub

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: 's avatarJeremy Kloth <jeremy.kloth@gmail.com>
üst 28f468cb
...@@ -55,8 +55,6 @@ error: ...@@ -55,8 +55,6 @@ error:
static int static int
win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
{ {
Py_ssize_t chunk;
if (hCryptProv == 0) if (hCryptProv == 0)
{ {
if (win32_urandom_init(raise) == -1) { if (win32_urandom_init(raise) == -1) {
...@@ -66,8 +64,8 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) ...@@ -66,8 +64,8 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
while (size > 0) while (size > 0)
{ {
chunk = size > INT_MAX ? INT_MAX : size; DWORD chunk = (DWORD)Py_MIN(size, PY_DWORD_MAX);
if (!CryptGenRandom(hCryptProv, (DWORD)chunk, buffer)) if (!CryptGenRandom(hCryptProv, chunk, buffer))
{ {
/* CryptGenRandom() failed */ /* CryptGenRandom() failed */
if (raise) { if (raise) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment