From: J. Nick Koston Date: Sun, 23 Jul 2023 04:07:14 +0000 (-0500) Subject: gh-82500: Fix asyncio sendfile overflow on 32bit (#107056) X-Git-Tag: v3.13.0a1~1272 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9eeb4b485f4f9e13e5cb638e43a0baecb3ff4e86;p=thirdparty%2FPython%2Fcpython.git gh-82500: Fix asyncio sendfile overflow on 32bit (#107056) --- diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 17fb4d5f7646..a2680865ed96 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -394,6 +394,9 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop): fut.set_result(total_sent) return + # On 32-bit architectures truncate to 1GiB to avoid OverflowError + blocksize = min(blocksize, sys.maxsize//2 + 1) + try: sent = os.sendfile(fd, fileno, offset, blocksize) except (BlockingIOError, InterruptedError): diff --git a/Misc/NEWS.d/next/Library/2023-07-22-16-44-58.gh-issue-82500.cQYoPj.rst b/Misc/NEWS.d/next/Library/2023-07-22-16-44-58.gh-issue-82500.cQYoPj.rst new file mode 100644 index 000000000000..065394fd6ee7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-07-22-16-44-58.gh-issue-82500.cQYoPj.rst @@ -0,0 +1 @@ +Fix overflow on 32-bit systems with :mod:`asyncio` :func:`os.sendfile` implemention.