From d6c2152ba925c6e6554161f037f538f574096284 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 29 Mar 2004 06:38:50 +0000 Subject: [PATCH] - Fixed handling of WM_GETICON message. - Don't allow destroying icons of foreign processes. svn path=/trunk/; revision=8917 --- reactos/lib/user32/windows/defwnd.c | 4 ++-- reactos/subsys/win32k/objects/cursoricon.c | 18 +++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/reactos/lib/user32/windows/defwnd.c b/reactos/lib/user32/windows/defwnd.c index 035fabbba3c..1ca78e99d13 100644 --- a/reactos/lib/user32/windows/defwnd.c +++ b/reactos/lib/user32/windows/defwnd.c @@ -1,4 +1,4 @@ -/* $Id: defwnd.c,v 1.124 2004/02/22 23:40:58 gvg Exp $ +/* $Id: defwnd.c,v 1.125 2004/03/29 06:38:50 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS user32.dll @@ -1384,7 +1384,7 @@ User32DefWindowProc(HWND hWnd, case WM_GETICON: { - INT Index = (wParam != 0) ? GCL_HICON : GCL_HICONSM; + INT Index = (wParam == ICON_BIG) ? GCL_HICON : GCL_HICONSM; return (GetClassLongW(hWnd, Index)); } diff --git a/reactos/subsys/win32k/objects/cursoricon.c b/reactos/subsys/win32k/objects/cursoricon.c index fd8c54e2034..d5fc5bf67be 100644 --- a/reactos/subsys/win32k/objects/cursoricon.c +++ b/reactos/subsys/win32k/objects/cursoricon.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: cursoricon.c,v 1.51 2004/03/15 20:21:51 navaraf Exp $ */ +/* $Id: cursoricon.c,v 1.52 2004/03/29 06:38:50 navaraf Exp $ */ #undef WIN32_LEAN_AND_MEAN @@ -368,7 +368,12 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinStaObject, HANDLE Handle, BOOL Rem return FALSE; } - if(WinStaObject->SystemCursor.CurrentCursorObject == Object) + if (Object->Process != PsGetWin32Process()) + { + return FALSE; + } + + if (WinStaObject->SystemCursor.CurrentCursorObject == Object) { /* Hide the cursor if we're destroying the current cursor */ IntSetCursor(WinStaObject, NULL, TRUE); @@ -376,17 +381,14 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinStaObject, HANDLE Handle, BOOL Rem bmpMask = Object->IconInfo.hbmMask; bmpColor = Object->IconInfo.hbmColor; - - - if(Object->Process && RemoveFromProcess) + + if (Object->Process && RemoveFromProcess) { IntLockProcessCursorIcons(Object->Process); RemoveEntryList(&Object->ListEntry); IntUnLockProcessCursorIcons(Object->Process); } - ObmDereferenceObject(Object); - Ret = NT_SUCCESS(ObmCloseHandle(HandleTable, Handle)); /* delete bitmaps */ @@ -394,6 +396,8 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinStaObject, HANDLE Handle, BOOL Rem NtGdiDeleteObject(bmpMask); if(bmpColor) NtGdiDeleteObject(bmpColor); + +/* ObmDereferenceObject(Object);*/ return Ret; }