diff options
author | Victor Stinner <vstinner@python.org> | 2024-11-19 08:13:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-19 08:13:20 (GMT) |
commit | 84f07c3a4cbcfe488ccfb4030571be0bc4de7e45 (patch) | |
tree | 6561e024036dfab43523d077571784f905952911 /Lib/test/test_buffer.py | |
parent | b3687ad454c4ac54c8599a10f3ace8a13ca48915 (diff) | |
download | cpython-84f07c3a4cbcfe488ccfb4030571be0bc4de7e45.zip cpython-84f07c3a4cbcfe488ccfb4030571be0bc4de7e45.tar.gz cpython-84f07c3a4cbcfe488ccfb4030571be0bc4de7e45.tar.bz2 |
gh-126594: Fix typeobject.c wrap_buffer() cast (#126754)
Reject flags smaller than INT_MIN.
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Diffstat (limited to 'Lib/test/test_buffer.py')
-rw-r--r-- | Lib/test/test_buffer.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_buffer.py b/Lib/test/test_buffer.py index cb38a69..332e49c 100644 --- a/Lib/test/test_buffer.py +++ b/Lib/test/test_buffer.py @@ -4446,6 +4446,21 @@ class TestBufferProtocol(unittest.TestCase): self.assertEqual(_testcapi.PyBuffer_SizeFromFormat(format), struct.calcsize(format)) + @support.cpython_only + def test_flags_overflow(self): + # gh-126594: Check for integer overlow on large flags + try: + from _testcapi import INT_MIN, INT_MAX + except ImportError: + INT_MIN = -(2 ** 31) + INT_MAX = 2 ** 31 - 1 + + obj = b'abc' + for flags in (INT_MIN - 1, INT_MAX + 1): + with self.subTest(flags=flags): + with self.assertRaises(OverflowError): + obj.__buffer__(flags) + class TestPythonBufferProtocol(unittest.TestCase): def test_basic(self): |