From: Neal Norwitz Date: Sun, 6 Jun 2004 20:40:27 +0000 (+0000) Subject: Plug a few memory leaks in utime(). path is allocated from within X-Git-Tag: v2.4a1~238 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9665271f92a5aa7fcd02eda4b6e67f2b23941cb3;p=python Plug a few memory leaks in utime(). path is allocated from within PyArg_ParseTuple() since the format is "et" This change should be reviewed carefully. Bugfix candidate. --- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 42bc767ea4..599d88a380 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -2049,15 +2049,20 @@ posix_utime(PyObject *self, PyObject *args) else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) { PyErr_SetString(PyExc_TypeError, "utime() arg 2 must be a tuple (atime, mtime)"); + PyMem_Free(path); return NULL; } else { if (extract_time(PyTuple_GET_ITEM(arg, 0), - &atime, &ausec) == -1) + &atime, &ausec) == -1) { + PyMem_Free(path); return NULL; + } if (extract_time(PyTuple_GET_ITEM(arg, 1), - &mtime, &musec) == -1) + &mtime, &musec) == -1) { + PyMem_Free(path); return NULL; + } ATIME = atime; MTIME = mtime; #ifdef HAVE_UTIMES @@ -2082,11 +2087,14 @@ posix_utime(PyObject *self, PyObject *args) } if (res < 0) { #ifdef Py_WIN_WIDE_FILENAMES - if (have_unicode_filename) + if (have_unicode_filename) { + PyMem_Free(path); return posix_error_with_unicode_filename(wpath); + } #endif /* Py_WIN_WIDE_FILENAMES */ - return posix_error_with_filename(path); + return posix_error_with_allocated_filename(path); } + PyMem_Free(path); Py_INCREF(Py_None); return Py_None; #undef UTIME_ARG