From: Christian Heimes Date: Sat, 29 Jun 2013 19:17:34 +0000 (+0200) Subject: Fix ref leak in error case of unicode rindex and rfind X-Git-Tag: v3.4.0a1~362 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea71a525c34784d188252947f497ed251f9d4d5c;p=python Fix ref leak in error case of unicode rindex and rfind CID 983320: Resource leak (RESOURCE_LEAK) CID 983321: Resource leak (RESOURCE_LEAK) leaked_storage: Variable substring going out of scope leaks the storage it points to. --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 30a925c341..fe0337fc46 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -12248,10 +12248,14 @@ unicode_rfind(PyObject *self, PyObject *args) &start, &end)) return NULL; - if (PyUnicode_READY(self) == -1) + if (PyUnicode_READY(self) == -1) { + Py_DECREF(substring); return NULL; - if (PyUnicode_READY(substring) == -1) + } + if (PyUnicode_READY(substring) == -1) { + Py_DECREF(substring); return NULL; + } result = any_find_slice(-1, self, substring, start, end); @@ -12280,10 +12284,14 @@ unicode_rindex(PyObject *self, PyObject *args) &start, &end)) return NULL; - if (PyUnicode_READY(self) == -1) + if (PyUnicode_READY(self) == -1) { + Py_DECREF(substring); return NULL; - if (PyUnicode_READY(substring) == -1) + } + if (PyUnicode_READY(substring) == -1) { + Py_DECREF(substring); return NULL; + } result = any_find_slice(-1, self, substring, start, end);