mirror of
https://github.com/reactos/reactos.git
synced 2024-10-22 05:46:19 +00:00
[WIN32K]
Amendment to r63409. Zap remaining kernel object header access from win32k. Noticed by Hermes. svn path=/trunk/; revision=63416
This commit is contained in:
parent
ce7e55def9
commit
ea89346b76
|
@ -174,11 +174,6 @@ HDC FASTCALL UserGetDesktopDC(ULONG,BOOL,BOOL);
|
||||||
#define IntIsActiveDesktop(Desktop) \
|
#define IntIsActiveDesktop(Desktop) \
|
||||||
((Desktop)->rpwinstaParent->ActiveDesktop == (Desktop))
|
((Desktop)->rpwinstaParent->ActiveDesktop == (Desktop))
|
||||||
|
|
||||||
#define GET_DESKTOP_NAME(d) \
|
|
||||||
OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d)) ? \
|
|
||||||
&(OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d))->Name) : \
|
|
||||||
NULL
|
|
||||||
|
|
||||||
HWND FASTCALL IntGetMessageWindow(VOID);
|
HWND FASTCALL IntGetMessageWindow(VOID);
|
||||||
PWND FASTCALL UserGetMessageWindow(VOID);
|
PWND FASTCALL UserGetMessageWindow(VOID);
|
||||||
|
|
||||||
|
|
|
@ -1210,7 +1210,7 @@ BuildDesktopNameList(
|
||||||
DWORD EntryCount;
|
DWORD EntryCount;
|
||||||
ULONG ReturnLength;
|
ULONG ReturnLength;
|
||||||
WCHAR NullWchar;
|
WCHAR NullWchar;
|
||||||
PUNICODE_STRING DesktopName;
|
UNICODE_STRING DesktopName;
|
||||||
|
|
||||||
Status = IntValidateWindowStationHandle(hWindowStation,
|
Status = IntValidateWindowStationHandle(hWindowStation,
|
||||||
KernelMode,
|
KernelMode,
|
||||||
|
@ -1233,8 +1233,8 @@ BuildDesktopNameList(
|
||||||
DesktopEntry = DesktopEntry->Flink)
|
DesktopEntry = DesktopEntry->Flink)
|
||||||
{
|
{
|
||||||
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
|
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
|
||||||
DesktopName = GET_DESKTOP_NAME(DesktopObject);
|
RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName);
|
||||||
if (DesktopName) ReturnLength += DesktopName->Length + sizeof(WCHAR);
|
ReturnLength += DesktopName.Length + sizeof(WCHAR);
|
||||||
EntryCount++;
|
EntryCount++;
|
||||||
}
|
}
|
||||||
TRACE("Required size: %lu Entry count: %lu\n", ReturnLength, EntryCount);
|
TRACE("Required size: %lu Entry count: %lu\n", ReturnLength, EntryCount);
|
||||||
|
@ -1277,18 +1277,15 @@ BuildDesktopNameList(
|
||||||
DesktopEntry = DesktopEntry->Flink)
|
DesktopEntry = DesktopEntry->Flink)
|
||||||
{
|
{
|
||||||
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
|
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
|
||||||
_PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR)
|
RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName);
|
||||||
DesktopName = GET_DESKTOP_NAME(DesktopObject);/// @todo Don't mess around with the object headers!
|
Status = MmCopyToCaller(lpBuffer, DesktopName.Buffer, DesktopName.Length);
|
||||||
if (!DesktopName) continue;
|
|
||||||
|
|
||||||
Status = MmCopyToCaller(lpBuffer, DesktopName->Buffer, DesktopName->Length);
|
|
||||||
if (! NT_SUCCESS(Status))
|
if (! NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
KeReleaseSpinLock(&WindowStation->Lock, OldLevel);
|
KeReleaseSpinLock(&WindowStation->Lock, OldLevel);
|
||||||
ObDereferenceObject(WindowStation);
|
ObDereferenceObject(WindowStation);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName->Length);
|
lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName.Length);
|
||||||
Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR));
|
Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR));
|
||||||
if (! NT_SUCCESS(Status))
|
if (! NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue