Don't access the object header of a kernel object from win32k. Instead get the desktop name from the desktop info structure. CORE-6818 #resolve

svn path=/trunk/; revision=63409
This commit is contained in:
Timo Kreuzer 2014-05-22 13:40:23 +00:00
parent 02851fb0e2
commit 17be1062a2

View file

@ -51,7 +51,7 @@ IntDesktopObjectParse(IN PVOID ParseObject,
OBJECT_ATTRIBUTES ObjectAttributes;
PLIST_ENTRY NextEntry, ListHead;
PWINSTATION_OBJECT WinStaObject = (PWINSTATION_OBJECT)ParseObject;
PUNICODE_STRING DesktopName;
UNICODE_STRING DesktopName;
PBOOLEAN pContext = (PBOOLEAN) Context;
if(pContext)
@ -65,15 +65,13 @@ IntDesktopObjectParse(IN PVOID ParseObject,
/* Get the current desktop */
Desktop = CONTAINING_RECORD(NextEntry, DESKTOP, ListEntry);
/// @todo Don't mess around with the object headers!
/* Get its name */
_PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR)
DesktopName = GET_DESKTOP_NAME(Desktop);
if (DesktopName)
{
/* Get the desktop name */
ASSERT(Desktop->pDeskInfo != NULL);
RtlInitUnicodeString(&DesktopName, Desktop->pDeskInfo->szDesktopName);
/* Compare the name */
if (RtlEqualUnicodeString(RemainingName,
DesktopName,
&DesktopName,
(Attributes & OBJ_CASE_INSENSITIVE)))
{
/* We found a match. Did this come from a create? */
@ -102,7 +100,6 @@ IntDesktopObjectParse(IN PVOID ParseObject,
*Object = Desktop;
return Status;
}
}
/* Go to the next desktop */
NextEntry = NextEntry->Flink;