summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-05-31 13:09:28 (GMT)
committerGitHub <noreply@github.com>2018-05-31 13:09:28 (GMT)
commit58d1683255abb0df4fc70960da6121aeaa41e1d1 (patch)
treef2cfc80547018a700beef7b6a39d3acca9d98bbb
parent941ec210aaef517cf818b043ec28345962f78465 (diff)
downloadcpython-58d1683255abb0df4fc70960da6121aeaa41e1d1.zip
cpython-58d1683255abb0df4fc70960da6121aeaa41e1d1.tar.gz
cpython-58d1683255abb0df4fc70960da6121aeaa41e1d1.tar.bz2
bpo-33706: Fix pymain_parse_cmdline_impl() (GH-7283)
Fix a crash in Python initialization when parsing the command line options. Fix memcpy() size parameter: previously, we read one wchar_t after the end of _PyOS_optarg. Moreover, don't copy the trailingg NUL character: we write it manually anyway. Thanks Christoph Gohlke for the bug report and the fix!
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2018-05-31-14-50-04.bpo-33706.ztlH04.rst2
-rw-r--r--Modules/main.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-05-31-14-50-04.bpo-33706.ztlH04.rst b/Misc/NEWS.d/next/Core and Builtins/2018-05-31-14-50-04.bpo-33706.ztlH04.rst
new file mode 100644
index 0000000..d3b8477
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2018-05-31-14-50-04.bpo-33706.ztlH04.rst
@@ -0,0 +1,2 @@
+Fix a crash in Python initialization when parsing the command line options.
+Thanks Christoph Gohlke for the bug report and the fix!
diff --git a/Modules/main.c b/Modules/main.c
index 9cbb3f1..286ad41 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -761,7 +761,7 @@ pymain_parse_cmdline_impl(_PyMain *pymain, _Py_CommandLineDetails *cmdline)
pymain->err = _Py_INIT_NO_MEMORY();
return -1;
}
- memcpy(command, _PyOS_optarg, len * sizeof(wchar_t));
+ memcpy(command, _PyOS_optarg, (len - 2) * sizeof(wchar_t));
command[len - 2] = '\n';
command[len - 1] = 0;
pymain->command = command;