diff options
author | Eric N. Vander Weele <ericvw@gmail.com> | 2017-06-27 01:35:20 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2017-06-27 01:35:20 (GMT) |
commit | a7874c73c0c729bbec2fd4b077bd0eec276cfff4 (patch) | |
tree | 10f4bd8853b79faf44e3bf2d0847dabff973d8f3 /Modules | |
parent | 48b5c422ffb03affb00c184b9a99e5537be92732 (diff) | |
download | cpython-a7874c73c0c729bbec2fd4b077bd0eec276cfff4.zip cpython-a7874c73c0c729bbec2fd4b077bd0eec276cfff4.tar.gz cpython-a7874c73c0c729bbec2fd4b077bd0eec276cfff4.tar.bz2 |
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 <ericvw@gmail.com>
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/posixmodule.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 79efb4c..1c75eae 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), |