]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-24658: os.read() reuses _PY_READ_MAX (GH-10657)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 22 Nov 2018 14:25:25 +0000 (06:25 -0800)
committerGitHub <noreply@github.com>
Thu, 22 Nov 2018 14:25:25 +0000 (06:25 -0800)
os_read_impl() now also truncates the size to _PY_READ_MAX
on macOS, to avoid to allocate a larger buffer even if _Py_read() is
limited to _PY_READ_MAX bytes (ex: INT_MAX on macOS).
(cherry picked from commit 9a0d7a7648547ffb77144bf2480155f6d7940dea)

Co-authored-by: Victor Stinner <vstinner@redhat.com>
Modules/posixmodule.c

index f5642d267299242e3b63aca273b9342f1d3688e2..b7091ca4c2346fe28ad122ca204b28dd8a9130f8 100644 (file)
@@ -7912,11 +7912,7 @@ os_read_impl(PyObject *module, int fd, Py_ssize_t length)
         return posix_error();
     }
 
-#ifdef MS_WINDOWS
-    /* On Windows, the count parameter of read() is an int */
-    if (length > INT_MAX)
-        length = INT_MAX;
-#endif
+    length = Py_MIN(length, _PY_READ_MAX);
 
     buffer = PyBytes_FromStringAndSize((char *)NULL, length);
     if (buffer == NULL)