diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-02-12 08:52:07 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-02-12 08:52:07 (GMT) |
commit | 1d19f97eedb69096933917e35e18c49003bd9e39 (patch) | |
tree | a42d401e29eae1dfac7e89978325a52fa9f64715 /Modules | |
parent | ee09d7c098ae4e52a9110ea0e1b55de3996c59f5 (diff) | |
download | cpython-1d19f97eedb69096933917e35e18c49003bd9e39.zip cpython-1d19f97eedb69096933917e35e18c49003bd9e39.tar.gz cpython-1d19f97eedb69096933917e35e18c49003bd9e39.tar.bz2 |
Issue #17671: Fixed a crash when use non-initialized io.BufferedRWPair.
Based on patch by Stephen Tu.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_io/bufferedio.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index 411755c..758edf4 100644 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@ -2129,9 +2129,14 @@ bufferedrwpair_dealloc(rwpair *self) static PyObject * _forward_call(buffered *self, const char *name, PyObject *args) { - PyObject *func = PyObject_GetAttrString((PyObject *)self, name); - PyObject *ret; + PyObject *func, *ret; + if (self == NULL) { + PyErr_SetString(PyExc_ValueError, + "I/O operation on uninitialized object"); + return NULL; + } + func = PyObject_GetAttrString((PyObject *)self, name); if (func == NULL) { PyErr_SetString(PyExc_AttributeError, name); return NULL; |