- 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:
{
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;
}