Module: wine Branch: master Commit: 0516d969ebffa93f1317a9dbf6e4c1a1af457a59 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0516d969ebffa93f1317a9dbf6...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Wed Apr 8 16:08:08 2015 +1000
wineconsole: Do not truncate argument strings larger than 256 bytes.
---
programs/wineconsole/wineconsole.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/programs/wineconsole/wineconsole.c b/programs/wineconsole/wineconsole.c index 3c2faf5..ed5f816 100644 --- a/programs/wineconsole/wineconsole.c +++ b/programs/wineconsole/wineconsole.c @@ -830,13 +830,24 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, INT nCmdSh break; case from_process_name: { - WCHAR buffer[256]; + int len; + WCHAR *buffer;
- MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, buffer, sizeof(buffer) / sizeof(buffer[0])); + len = MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, NULL, 0); + + buffer = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!buffer) + return 0; + + MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, buffer, len);
if (!(data = WINECON_Init(hInst, GetCurrentProcessId(), buffer, wci.backend, nCmdShow))) + { + HeapFree(GetProcessHeap(), 0, buffer); return 0; + } ret = WINECON_Spawn(data, buffer); + HeapFree(GetProcessHeap(), 0, buffer); if (!ret) { WINECON_Delete(data);