Module: wine Branch: master Commit: e58052d8361fde59fd5d4a1d9386265e1099f633 URL: https://gitlab.winehq.org/wine/wine/-/commit/e58052d8361fde59fd5d4a1d9386265...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Wed Oct 19 23:33:34 2022 +1100
kernelbase: Avoid memory leaks in GetConsoleTitleW().
---
dlls/kernelbase/console.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index e3b0ebead9e..7cd87f53b3c 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -1057,16 +1057,17 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleTitleW( LPWSTR title, DWORD size ) if (!(params = HeapAlloc( GetProcessHeap(), 0, max_size ))) return 0;
- if (!console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_GET_TITLE, - NULL, 0, params, max_size, &size )) - return 0; - - if (size < sizeof(*params)) return 0; + if (console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, IOCTL_CONDRV_GET_TITLE, + NULL, 0, params, max_size, &size ) && + size >= sizeof(*params)) + { + size -= sizeof(*params); + memcpy( title, params->buffer, size ); + title[ size / sizeof(WCHAR) ] = 0; + size = params->title_len; + } + else size = 0;
- size -= sizeof(*params); - memcpy( title, params->buffer, size ); - title[ size / sizeof(WCHAR) ] = 0; - size = params->title_len; HeapFree( GetProcessHeap(), 0, params ); return size; }