diff options
author | Brett Cannon <brett@python.org> | 2012-06-25 20:25:28 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-06-25 20:25:28 (GMT) |
commit | 0b1b9ce494ee91ed525a83b802e15cd9a03922d5 (patch) | |
tree | 024e6b565241fbd6bebb7f7ca28abdad694d7a29 | |
parent | 8a250fac15ecb2604461ea5753638269e342eb91 (diff) | |
download | cpython-0b1b9ce494ee91ed525a83b802e15cd9a03922d5.zip cpython-0b1b9ce494ee91ed525a83b802e15cd9a03922d5.tar.gz cpython-0b1b9ce494ee91ed525a83b802e15cd9a03922d5.tar.bz2 |
If main() is called and an argument cannot be decoded, make sure to
free the copy of the command-line.
Found using Clang's static analyzer.
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/python.c | 1 |
2 files changed, 4 insertions, 0 deletions
@@ -10,6 +10,9 @@ What's New in Python 3.3.0 Beta 1? Core and Builtins ----------------- +- Fix a (most likely) very rare memory leak when calling main() and not being + able to decode a command-line argument. + - Issue #14815: Use Py_ssize_t instead of long for the object hash, to preserve all 64 bits of hash on Win64. diff --git a/Modules/python.c b/Modules/python.c index cf9383f..c70bf37 100644 --- a/Modules/python.c +++ b/Modules/python.c @@ -51,6 +51,7 @@ main(int argc, char **argv) argv_copy[i] = _Py_char2wchar(argv[i], NULL); #endif if (!argv_copy[i]) { + free(oldloc); fprintf(stderr, "Fatal Python error: " "unable to decode the command line argument #%i\n", i + 1); |