summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-06-29 08:53:22 (GMT)
committerGitHub <noreply@github.com>2017-06-29 08:53:22 (GMT)
commitb78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b (patch)
tree4ed9067f86617ef80a567da50255c491905425ac /Modules
parent38d6a40898940d2c62c637fcc8acce05e75de5c2 (diff)
downloadcpython-b78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b.zip
cpython-b78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b.tar.gz
cpython-b78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b.tar.bz2
bpo-30602: Fix refleak in os.spawnv() (#2212) (#2486)
When os.spawnv() fails while handling arguments, free correctly argvlist: pass lastarg+1 rather than lastarg to free_string_array() to also free the first item. (cherry picked from commit 8acb4cf2b3436652568d7a70228b166316181466)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/posixmodule.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 4607b18..c205dd9 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5106,7 +5106,7 @@ os_spawnv_impl(PyObject *module, int mode, path_t *path, PyObject *argv)
return NULL;
}
if (i == 0 && !argvlist[0][0]) {
- free_string_array(argvlist, i);
+ free_string_array(argvlist, i + 1);
PyErr_SetString(
PyExc_ValueError,
"spawnv() arg 2 first element cannot be empty");