Kaydet (Commit) 50bd5c11 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

wsprintf is broken by design and never writes more than 1024 characters

Change-Id: I791e55bb5d98ee82c01271dcebafa7c4672cd424
üst 99d3733c
...@@ -192,10 +192,12 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) { ...@@ -192,10 +192,12 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
wchar_t * value = new wchar_t[ std::size_t len = (urepathEnd - urepath) + MY_LENGTH(L";") +
(urepathEnd - urepath) + MY_LENGTH(L";") + (pathEnd - path) + (pathEnd - path) + (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1;
(n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow //TODO: overflow
wsprintfW(value, L"%s;%s%s%s", urepath, path, n == 0 ? L"" : L";", orig); wchar_t * value = new wchar_t[len];
_snwprintf(
value, len, L"%s;%s%s%s", urepath, path, n == 0 ? L"" : L";", orig);
if (!SetEnvironmentVariableW(L"PATH", value)) { if (!SetEnvironmentVariableW(L"PATH", value)) {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
...@@ -218,21 +220,21 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) { ...@@ -218,21 +220,21 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) {
} }
} }
#ifdef __MINGW32__ #ifdef __MINGW32__
value = new wchar_t[ len = (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
(pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
MY_LENGTH(L";") + (pythonpath4End - pythonpath4) + MY_LENGTH(L";") + (pythonpath4End - pythonpath4) +
MY_LENGTH(L";") + (pythonpath3End - pythonpath3) + MY_LENGTH(L";") + (pythonpath3End - pythonpath3) +
(n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1; //TODO: overflow
wsprintfW( value = new wchar_t[len];
value, L"%s;%s;%s;%s%s%s", path, pythonpath2, pythonpath4, pythonpath3, _snwprintf(
n == 0 ? L"" : L";", orig); value, len, L"%s;%s;%s;%s%s%s", path, pythonpath2, pythonpath4,
pythonpath3, n == 0 ? L"" : L";", orig);
#else #else
value = new wchar_t[ len = (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
(pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
MY_LENGTH(L";") + (pythonpath3End - pythonpath3) + MY_LENGTH(L";") + (pythonpath3End - pythonpath3) +
(n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1; //TODO: overflow
wsprintfW( value = new wchar_t[len];
value, L"%s;%s;%s%s%s", path, pythonpath2, pythonpath3, _snwprintf(
value, len, L"%s;%s;%s%s%s", path, pythonpath2, pythonpath3,
n == 0 ? L"" : L";", orig); n == 0 ? L"" : L";", orig);
#endif #endif
if (!SetEnvironmentVariableW(L"PYTHONPATH", value)) { if (!SetEnvironmentVariableW(L"PYTHONPATH", value)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment