gh-114685: Check flags in PyObject_GetBuffer() (GH-114707)

PyObject_GetBuffer() now raises a SystemError if called with
PyBUF_READ or PyBUF_WRITE as flags. These flags should
only be used with the PyMemoryView_* C API.
This commit is contained in:
Serhiy Storchaka 2024-01-31 13:11:35 +02:00 committed by GitHub
parent 7a93db4425
commit b7688ef71e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 2 deletions

View file

@ -4585,6 +4585,12 @@ class TestPythonBufferProtocol(unittest.TestCase):
buf.__release_buffer__(mv)
self.assertEqual(buf.references, 0)
@unittest.skipIf(_testcapi is None, "requires _testcapi")
def test_c_buffer_invalid_flags(self):
buf = _testcapi.testBuf()
self.assertRaises(SystemError, buf.__buffer__, PyBUF_READ)
self.assertRaises(SystemError, buf.__buffer__, PyBUF_WRITE)
def test_inheritance(self):
class A(bytearray):
def __buffer__(self, flags):