diff options
author | Stefan Krah <skrah@bytereef.org> | 2012-03-26 13:05:22 (GMT) |
---|---|---|
committer | Stefan Krah <skrah@bytereef.org> | 2012-03-26 13:05:22 (GMT) |
commit | 0f6ce8d9dfaaeca036a085ef8de252efa8a2beea (patch) | |
tree | 244e0397b038b853d71c995eb42e959294e74894 /Modules/python.c | |
parent | 533281dd4f979cf65d250e56a09ea94c364084dd (diff) | |
download | cpython-0f6ce8d9dfaaeca036a085ef8de252efa8a2beea.zip cpython-0f6ce8d9dfaaeca036a085ef8de252efa8a2beea.tar.gz cpython-0f6ce8d9dfaaeca036a085ef8de252efa8a2beea.tar.bz2 |
Issue #3367: NULL-terminate argv[] copies to prevent an invalid access
in sys_update_path().
Diffstat (limited to 'Modules/python.c')
-rw-r--r-- | Modules/python.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Modules/python.c b/Modules/python.c index 935908a..cf9383f 100644 --- a/Modules/python.c +++ b/Modules/python.c @@ -22,9 +22,9 @@ extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size); int main(int argc, char **argv) { - wchar_t **argv_copy = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*argc); + wchar_t **argv_copy = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*(argc+1)); /* We need a second copies, as Python might modify the first one. */ - wchar_t **argv_copy2 = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*argc); + wchar_t **argv_copy2 = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*(argc+1)); int i, res; char *oldloc; /* 754 requires that FP exceptions run in "no stop" mode by default, @@ -58,6 +58,8 @@ main(int argc, char **argv) } argv_copy2[i] = argv_copy[i]; } + argv_copy2[argc] = argv_copy[argc] = NULL; + setlocale(LC_ALL, oldloc); free(oldloc); res = Py_Main(argc, argv_copy); |