gh-114685: Check flags in PyObject_GetBuffer() (GH-114707) · python/cpython@b7688ef · GitHub
Skip to content

Commit b7688ef

Browse files
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.
1 parent 7a93db4 commit b7688ef

4 files changed

Lines changed: 19 additions & 2 deletions

File tree

Lib/test/test_buffer.py

Lines changed: 6 additions & 0 deletions
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
:c:func:`PyObject_GetBuffer` now raises a :exc:`SystemError` if called with
2+
:c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE` as flags. These flags should
3+
only be used with the ``PyMemoryView_*`` C API.

Modules/_testcapi/buffer.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ static int
5454
testbuf_getbuf(testBufObject *self, Py_buffer *view, int flags)
5555
{
5656
int buf = PyObject_GetBuffer(self->obj, view, flags);
57-
Py_SETREF(view->obj, Py_NewRef(self));
58-
self->references++;
57+
if (buf == 0) {
58+
Py_SETREF(view->obj, Py_NewRef(self));
59+
self->references++;
60+
}
5961
return buf;
6062
}
6163

Objects/abstract.c

Lines changed: 6 additions & 0 deletions

0 commit comments

Comments
 (0)