[WIN32K]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 2 Nov 2013 12:41:38 +0000 (12:41 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 2 Nov 2013 12:41:38 +0000 (12:41 +0000)
- Don't ASSERT the correct ConsoleCtrlInfoLength in NtUserConsoleControl
- Move GreSetObjectOwnerEx out of the SEH block.

svn path=/trunk/; revision=60829

reactos/win32ss/user/ntuser/ntstubs.c

index ab165f4..ff1c07c 100644 (file)
@@ -560,9 +560,14 @@ NtUserConsoleControl(
     {
         case GuiConsoleWndClassAtom:
         {
+            if (ConsoleCtrlInfoLength != sizeof(ATOM))
+            {
+                Status = STATUS_INFO_LENGTH_MISMATCH;
+                break;
+            }
+
             _SEH2_TRY
             {
-                ASSERT(ConsoleCtrlInfoLength == sizeof(ATOM));
                 ProbeForRead(ConsoleCtrlInfo, ConsoleCtrlInfoLength, 1);
                 gaGuiConsoleWndClass = *(ATOM*)ConsoleCtrlInfo;
             }
@@ -577,17 +582,18 @@ NtUserConsoleControl(
 
         case ConsoleMakePalettePublic:
         {
+            HPALETTE hPalette;
+
+            if (ConsoleCtrlInfoLength != sizeof(HPALETTE))
+            {
+                Status = STATUS_INFO_LENGTH_MISMATCH;
+                break;
+            }
+
             _SEH2_TRY
             {
-                ASSERT(ConsoleCtrlInfoLength == sizeof(HPALETTE));
                 ProbeForRead(ConsoleCtrlInfo, ConsoleCtrlInfoLength, 1);
-                /*
-                 * Make the palette handle public - Use the extended
-                 * function introduced by Timo in revision 60725.
-                 */
-                GreSetObjectOwnerEx(*(HPALETTE*)ConsoleCtrlInfo,
-                                    GDI_OBJ_HMGR_PUBLIC,
-                                    GDIOBJFLAG_IGNOREPID);
+                hPalette = *(HPALETTE*)ConsoleCtrlInfo;
             }
             _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
             {
@@ -595,6 +601,11 @@ NtUserConsoleControl(
             }
             _SEH2_END;
 
+            /* Make the palette handle public */
+            GreSetObjectOwnerEx(hPalette,
+                                GDI_OBJ_HMGR_PUBLIC,
+                                GDIOBJFLAG_IGNOREPID);
+
             break;
         }