From: Victor Stinner Date: Thu, 29 Jun 2017 08:53:22 +0000 (+0200) Subject: bpo-30602: Fix refleak in os.spawnv() (#2212) (#2486) X-Git-Tag: v3.6.3rc1~284 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b;p=python 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) --- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 4607b181c6..c205dd9b05 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");