From 984969be5600244b443c59287457a5b78e811b77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Fri, 2 Dec 2022 01:25:50 +0100 Subject: [PATCH] user32: Avoid freeing invalid pointers in WIN_CreateWindowEx. --- dlls/user32/win.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/user32/win.c b/dlls/user32/win.c index a6f43c188c4..d8869b2b9db 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -278,7 +278,7 @@ static BOOL is_default_coord( int x ) */ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, BOOL unicode ) { - UNICODE_STRING class, window_name; + UNICODE_STRING class, window_name = {0}; HWND hwnd, top_child = 0; MDICREATESTRUCTW mdi_cs; WNDCLASSEXW info; @@ -401,7 +401,7 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, cs->x, cs->y, cs->cx, cs->cy, cs->hwndParent, menu, module, cs->lpCreateParams, 0, NULL, 0, !unicode ); if (!hwnd && menu && menu != cs->hMenu) NtUserDestroyMenu( menu ); - if (!unicode) RtlFreeUnicodeString( &window_name ); + if (!unicode && window_name.Buffer != name_buf) RtlFreeUnicodeString( &window_name ); return hwnd; }