From b78fbaaeab9df8cfbbdae3d5faf2d1537d73e43b Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 29 Jun 2017 10:53:22 +0200 Subject: [PATCH] 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) --- Modules/posixmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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"); -- 2.50.0