]> granicus.if.org Git - python/commitdiff
bpo-30769: Fix reference leak introduced in 77703942c59 (#2416)
authorEric N. Vander Weele <ericvw@gmail.com>
Tue, 27 Jun 2017 01:35:20 +0000 (21:35 -0400)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 27 Jun 2017 01:35:20 +0000 (03:35 +0200)
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>
Misc/ACKS
Modules/posixmodule.c

index 89cd1fa10a0757ce1de798e4f29979898ac341c5..a6d1e0ffaf4a103c5d72a3f95e0ca7583468d745 100644 (file)
--- 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
index 79efb4c11bb919ef6d506078bdecd26ba00a3691..1c75eae1ca6c05b521e9c3f8cd3d2b24718f25a2 100644 (file)
@@ -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),