summaryrefslogtreecommitdiff
path: root/Python/frozenmain.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2015-02-14 15:16:32 -0500
committerBenjamin Peterson <benjamin@python.org>2015-02-14 15:16:32 -0500
commit2476b98acfe303ecc3ed9b38107f75e05dab95c5 (patch)
tree47150ebb6c961be1722563921ad5362d8cee07a5 /Python/frozenmain.c
parent366c570d1f48df0f06707e34472b626bc97f03e3 (diff)
downloadcpython-git-2476b98acfe303ecc3ed9b38107f75e05dab95c5.tar.gz
avoid reading unallocated memory when argc == 0 (closes #22633)
Diffstat (limited to 'Python/frozenmain.c')
-rw-r--r--Python/frozenmain.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index 55d05fc26f..b05c94a7e1 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();