[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - pyuno/zipcore
Stephan Bergmann
sbergman at redhat.com
Wed Dec 4 07:46:06 PST 2013
pyuno/zipcore/python.cxx | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
New commits:
commit a8c7e6355542e5afee5975a093f5d5e0bc418e39
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Nov 29 17:26:54 2013 +0100
wsprintf is broken by design and never writes more than 1024 characters
Change-Id: I791e55bb5d98ee82c01271dcebafa7c4672cd424
(cherry picked from commit 50bd5c11f551f5274be9a4411c5ddcbd32bd9a03)
diff --git a/pyuno/zipcore/python.cxx b/pyuno/zipcore/python.cxx
index 9ef7183..517a6ae 100644
--- a/pyuno/zipcore/python.cxx
+++ b/pyuno/zipcore/python.cxx
@@ -192,10 +192,12 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) {
exit(EXIT_FAILURE);
}
}
- wchar_t * value = new wchar_t[
- (urepathEnd - urepath) + MY_LENGTH(L";") + (pathEnd - path) +
- (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow
- wsprintfW(value, L"%s;%s%s%s", urepath, path, n == 0 ? L"" : L";", orig);
+ std::size_t len = (urepathEnd - urepath) + MY_LENGTH(L";") +
+ (pathEnd - path) + (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1;
+ //TODO: overflow
+ 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)) {
exit(EXIT_FAILURE);
}
@@ -218,21 +220,21 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) {
}
}
#ifdef __MINGW32__
- value = new wchar_t[
- (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
+ len = (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
MY_LENGTH(L";") + (pythonpath4End - pythonpath4) +
MY_LENGTH(L";") + (pythonpath3End - pythonpath3) +
- (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow
- wsprintfW(
- value, L"%s;%s;%s;%s%s%s", path, pythonpath2, pythonpath4, pythonpath3,
- n == 0 ? L"" : L";", orig);
+ (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1; //TODO: overflow
+ value = new wchar_t[len];
+ _snwprintf(
+ value, len, L"%s;%s;%s;%s%s%s", path, pythonpath2, pythonpath4,
+ pythonpath3, n == 0 ? L"" : L";", orig);
#else
- value = new wchar_t[
- (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
+ len = (pathEnd - path) + MY_LENGTH(L";") + (pythonpath2End - pythonpath2) +
MY_LENGTH(L";") + (pythonpath3End - pythonpath3) +
- (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1]; //TODO: overflow
- wsprintfW(
- value, L"%s;%s;%s%s%s", path, pythonpath2, pythonpath3,
+ (n == 0 ? 0 : MY_LENGTH(L";") + (n - 1)) + 1; //TODO: overflow
+ value = new wchar_t[len];
+ _snwprintf(
+ value, len, L"%s;%s;%s%s%s", path, pythonpath2, pythonpath3,
n == 0 ? L"" : L";", orig);
#endif
if (!SetEnvironmentVariableW(L"PYTHONPATH", value)) {
More information about the Libreoffice-commits
mailing list