summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmily Morehouse <emily@cuttlesoft.com>2017-06-26 22:59:25 -0600
committerSerhiy Storchaka <storchaka@gmail.com>2017-06-27 07:59:25 +0300
commit2d348f7a723db839aa18ce8213b8663ccb0a3d35 (patch)
treea4a72a15945ca5666def24c95f5ecaff9fad72b3
parent8047f02a4b0db81cb023df1f5ce4cc1c42d17821 (diff)
downloadcpython-git-2d348f7a723db839aa18ce8213b8663ccb0a3d35.tar.gz
[3.6] bpo-30769: Fix reference leak introduced in 77703942c59 (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 a7874c73c0c729bbec2fd4b077bd0eec276cfff4)
-rw-r--r--Misc/ACKS1
-rw-r--r--Modules/posixmodule.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/Misc/ACKS b/Misc/ACKS
index c68f9eb9f1..b8ae14be69 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1590,6 +1590,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 033789099c..bf8254311e 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4823,6 +4823,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);
@@ -4837,6 +4839,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),