[3.6] bpo-30769: Fix reference leak introduced in 77703942c5 (GH-2416) (#2425)

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 <ericvw@gmail.com>
(cherry picked from commit a7874c73c0)
This commit is contained in:
Emily Morehouse 2017-06-26 22:59:25 -06:00 committed by Serhiy Storchaka
parent 8047f02a4b
commit 2d348f7a72
2 changed files with 5 additions and 0 deletions

View File

@ -1590,6 +1590,7 @@ Andi Vajda
Case Van Horsen Case Van Horsen
John Mark Vandenberg John Mark Vandenberg
Kyle VanderBeek Kyle VanderBeek
Eric N. Vander Weele
Andrew Vant Andrew Vant
Atul Varma Atul Varma
Dmitry Vasiliev Dmitry Vasiliev

View File

@ -4823,6 +4823,8 @@ parse_envlist(PyObject* env, Py_ssize_t *envc_ptr)
PyUnicode_FindChar(key2, '=', 1, PyUnicode_GET_LENGTH(key2), 1) != -1) PyUnicode_FindChar(key2, '=', 1, PyUnicode_GET_LENGTH(key2), 1) != -1)
{ {
PyErr_SetString(PyExc_ValueError, "illegal environment variable name"); PyErr_SetString(PyExc_ValueError, "illegal environment variable name");
Py_DECREF(key2);
Py_DECREF(val2);
goto error; goto error;
} }
keyval = PyUnicode_FromFormat("%U=%U", key2, val2); keyval = PyUnicode_FromFormat("%U=%U", key2, val2);
@ -4837,6 +4839,8 @@ parse_envlist(PyObject* env, Py_ssize_t *envc_ptr)
strchr(PyBytes_AS_STRING(key2) + 1, '=') != NULL) strchr(PyBytes_AS_STRING(key2) + 1, '=') != NULL)
{ {
PyErr_SetString(PyExc_ValueError, "illegal environment variable name"); PyErr_SetString(PyExc_ValueError, "illegal environment variable name");
Py_DECREF(key2);
Py_DECREF(val2);
goto error; goto error;
} }
keyval = PyBytes_FromFormat("%s=%s", PyBytes_AS_STRING(key2), keyval = PyBytes_FromFormat("%s=%s", PyBytes_AS_STRING(key2),