diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-02-14 20:16:32 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-02-14 20:16:32 (GMT) |
commit | 2476b98acfe303ecc3ed9b38107f75e05dab95c5 (patch) | |
tree | 47150ebb6c961be1722563921ad5362d8cee07a5 | |
parent | 366c570d1f48df0f06707e34472b626bc97f03e3 (diff) | |
download | cpython-2476b98acfe303ecc3ed9b38107f75e05dab95c5.zip cpython-2476b98acfe303ecc3ed9b38107f75e05dab95c5.tar.gz cpython-2476b98acfe303ecc3ed9b38107f75e05dab95c5.tar.bz2 |
avoid reading unallocated memory when argc == 0 (closes #22633)
-rw-r--r-- | Python/frozenmain.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Python/frozenmain.c b/Python/frozenmain.c index 55d05fc..b05c94a 100644 --- a/Python/frozenmain.c +++ b/Python/frozenmain.c @@ -24,11 +24,13 @@ Py_FrozenMain(int argc, char **argv) /* We need a second copies, as Python might modify the first one. */ wchar_t **argv_copy2 = NULL; - argv_copy = PyMem_RawMalloc(sizeof(wchar_t*) * argc); - argv_copy2 = PyMem_RawMalloc(sizeof(wchar_t*) * argc); - if (!argv_copy || !argv_copy2) { - fprintf(stderr, "out of memory\n"); - goto error; + if (argc > 0) { + argv_copy = PyMem_RawMalloc(sizeof(wchar_t*) * argc); + argv_copy2 = PyMem_RawMalloc(sizeof(wchar_t*) * argc); + if (!argv_copy || !argv_copy2) { + fprintf(stderr, "out of memory\n"); + goto error; + } } Py_FrozenFlag = 1; /* Suppress errors from getpath.c */ @@ -68,7 +70,8 @@ Py_FrozenMain(int argc, char **argv) #ifdef MS_WINDOWS PyInitFrozenExtensions(); #endif /* MS_WINDOWS */ - Py_SetProgramName(argv_copy[0]); + if (argc >= 1) + Py_SetProgramName(argv_copy[0]); Py_Initialize(); #ifdef MS_WINDOWS PyWinFreeze_ExeInit(); |