bpo-30769: Fix reference leak introduced in 77703942c5 (#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 <ericvw@gmail.com>
This commit is contained in:
Eric N. Vander Weele 2017-06-26 21:35:20 -04:00 committed by Victor Stinner
parent 48b5c422ff
commit a7874c73c0
2 changed files with 5 additions and 0 deletions

View file

@ -1611,6 +1611,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

@ -4900,6 +4900,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);
@ -4914,6 +4916,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),