Author: tfaber
Date: Fri Apr 15 20:24:44 2016
New Revision: 71164

URL: http://svn.reactos.org/svn/reactos?rev=71164&view=rev
Log:
[WIN32K:NTUSER]
- Initialize the window station object before calling ObInsertObject, since the 
object will be deleted in case of failure.
CORE-11124

Modified:
    trunk/reactos/win32ss/user/ntuser/winsta.c

Modified: trunk/reactos/win32ss/user/ntuser/winsta.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/winsta.c?rev=71164&r1=71163&r2=71164&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/winsta.c  [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/winsta.c  [iso-8859-1] Fri Apr 15 
20:24:44 2016
@@ -460,6 +460,14 @@
         return 0;
     }
 
+    /* Initialize the window station */
+    RtlZeroMemory(WindowStationObject, sizeof(WINSTATION_OBJECT));
+
+    InitializeListHead(&WindowStationObject->DesktopListHead);
+    Status = RtlCreateAtomTable(37, &WindowStationObject->AtomTable);
+    WindowStationObject->Name = WindowStationName;
+    WindowStationObject->dwSessionId = NtCurrentPeb()->SessionId;
+
     Status = ObInsertObject((PVOID)WindowStationObject,
                             NULL,
                             dwDesiredAccess,
@@ -470,19 +478,9 @@
     if (!NT_SUCCESS(Status))
     {
         ERR("ObInsertObject failed for window station %wZ\n", 
&WindowStationName);
-        ExFreePoolWithTag(WindowStationName.Buffer, TAG_STRING);
         SetLastNtError(STATUS_INSUFFICIENT_RESOURCES);
-        ObDereferenceObject(WindowStationObject);
         return 0;
     }
-
-    /* Initialize the window station */
-    RtlZeroMemory(WindowStationObject, sizeof(WINSTATION_OBJECT));
-
-    InitializeListHead(&WindowStationObject->DesktopListHead);
-    Status = RtlCreateAtomTable(37, &WindowStationObject->AtomTable);
-    WindowStationObject->Name = WindowStationName;
-    WindowStationObject->dwSessionId = NtCurrentPeb()->SessionId;
 
     if (InputWindowStation == NULL)
     {


Reply via email to