From: Antoine Pitrou Date: Sun, 1 Apr 2012 14:05:46 +0000 (+0200) Subject: Issue #13019: Fix potential reference leaks in bytearray.extend(). X-Git-Tag: v3.3.0a3~343^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58bb82e7b4b50fa5efaefc1196bd927992fbe783;p=python Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch by Suman Saha. --- diff --git a/Misc/NEWS b/Misc/NEWS index 32c0b9edc4..4bf3a916b6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.2.4 Core and Builtins ----------------- +- Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch + by Suman Saha. + - Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as the module name that was not interned. diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 4202ff28e4..55b4df638a 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -2234,8 +2234,10 @@ bytearray_extend(PyByteArrayObject *self, PyObject *arg) } bytearray_obj = PyByteArray_FromStringAndSize(NULL, buf_size); - if (bytearray_obj == NULL) + if (bytearray_obj == NULL) { + Py_DECREF(it); return NULL; + } buf = PyByteArray_AS_STRING(bytearray_obj); while ((item = PyIter_Next(it)) != NULL) { @@ -2268,8 +2270,10 @@ bytearray_extend(PyByteArrayObject *self, PyObject *arg) return NULL; } - if (bytearray_setslice(self, Py_SIZE(self), Py_SIZE(self), bytearray_obj) == -1) + if (bytearray_setslice(self, Py_SIZE(self), Py_SIZE(self), bytearray_obj) == -1) { + Py_DECREF(bytearray_obj); return NULL; + } Py_DECREF(bytearray_obj); Py_RETURN_NONE;