diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2018-06-30 17:57:50 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-06-30 17:57:50 (GMT) |
| commit | fdb5a50ef34f7951c3b01eb77b1359725a9ad670 (patch) | |
| tree | 772e7c9d7632341fcf835dbbe84fbc4736ec9466 /Modules/_io/stringio.c | |
| parent | 0cdf5f42898350261c5ff65d96334e736130780f (diff) | |
| download | cpython-fdb5a50ef34f7951c3b01eb77b1359725a9ad670.zip cpython-fdb5a50ef34f7951c3b01eb77b1359725a9ad670.tar.gz cpython-fdb5a50ef34f7951c3b01eb77b1359725a9ad670.tar.bz2 | |
bpo-25862: Fix several bugs in the _io module. (GH-8026)
They can be exposed when some C API calls fail due to lack of
memory.
* Failed Py_BuildValue() could cause an assertion error in the
following TextIOWrapper.tell().
* input_chunk could be decrefed twice in TextIOWrapper.seek()
after failed Py_BuildValue().
* initvalue could leak in StringIO.__getstate__() after failed
PyDict_Copy().
Diffstat (limited to 'Modules/_io/stringio.c')
| -rw-r--r-- | Modules/_io/stringio.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c index f280b30..5a03715 100644 --- a/Modules/_io/stringio.c +++ b/Modules/_io/stringio.c @@ -826,8 +826,10 @@ stringio_getstate(stringio *self, PyObject *Py_UNUSED(ignored)) } else { dict = PyDict_Copy(self->dict); - if (dict == NULL) + if (dict == NULL) { + Py_DECREF(initvalue); return NULL; + } } state = Py_BuildValue("(OOnN)", initvalue, |
