From: Eric N. Vander Weele Date: Tue, 27 Jun 2017 01:35:20 +0000 (-0400) Subject: bpo-30769: Fix reference leak introduced in 77703942c59 (#2416) X-Git-Tag: v3.7.0a1~513 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a7874c73c0c729bbec2fd4b077bd0eec276cfff4;p=thirdparty%2FPython%2Fcpython.git bpo-30769: Fix reference leak introduced in 77703942c59 (#2416) New error condition paths were introduced, which did not decrement `key2` and `val2` objects. Therefore, decrement references before jumping to the error label. Signed-off-by: Eric N. Vander Weele --- diff --git a/Misc/ACKS b/Misc/ACKS index 89cd1fa10a07..a6d1e0ffaf4a 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1611,6 +1611,7 @@ Andi Vajda Case Van Horsen John Mark Vandenberg Kyle VanderBeek +Eric N. Vander Weele Andrew Vant Atul Varma Dmitry Vasiliev diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 79efb4c11bb9..1c75eae1ca6c 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4900,6 +4900,8 @@ parse_envlist(PyObject* env, Py_ssize_t *envc_ptr) PyUnicode_FindChar(key2, '=', 1, PyUnicode_GET_LENGTH(key2), 1) != -1) { PyErr_SetString(PyExc_ValueError, "illegal environment variable name"); + Py_DECREF(key2); + Py_DECREF(val2); goto error; } keyval = PyUnicode_FromFormat("%U=%U", key2, val2); @@ -4914,6 +4916,8 @@ parse_envlist(PyObject* env, Py_ssize_t *envc_ptr) strchr(PyBytes_AS_STRING(key2) + 1, '=') != NULL) { PyErr_SetString(PyExc_ValueError, "illegal environment variable name"); + Py_DECREF(key2); + Py_DECREF(val2); goto error; } keyval = PyBytes_FromFormat("%s=%s", PyBytes_AS_STRING(key2),