- Don't ASSERT the correct ConsoleCtrlInfoLength in NtUserConsoleControl
- Move GreSetObjectOwnerEx out of the SEH block.

svn path=/trunk/; revision=60829
This commit is contained in:
Timo Kreuzer 2013-11-02 12:41:38 +00:00
parent b463d3a396
commit 87d4eb75dc

View file

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