[NTOS:LPC]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 25 Jun 2016 23:27:45 +0000 (23:27 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 25 Jun 2016 23:27:45 +0000 (23:27 +0000)
- Avoid dereferencing a null pointer in LpcpDeletePort. By Samuel SerapiĆ³n.
CORE-6850 #resolve

svn path=/trunk/; revision=71673

reactos/ntoskrnl/lpc/close.c

index a8fb1ad..f94e320 100644 (file)
@@ -432,6 +432,15 @@ LpcpDeletePort(IN PVOID ObjectBody)
 
         /* Dereference the object unless it's the same port */
         if (ConnectionPort != Port) ObDereferenceObject(ConnectionPort);
+
+        /* Check if this is a connection port with a server process */
+        if (((Port->Flags & LPCP_PORT_TYPE_MASK) == LPCP_CONNECTION_PORT) &&
+            (ConnectionPort->ServerProcess))
+        {
+            /* Dereference the server process */
+            ObDereferenceObject(ConnectionPort->ServerProcess);
+            ConnectionPort->ServerProcess = NULL;
+        }
     }
     else
     {
@@ -439,15 +448,6 @@ LpcpDeletePort(IN PVOID ObjectBody)
         KeReleaseGuardedMutex(&LpcpLock);
     }
 
-    /* Check if this is a connection port with a server process */
-    if (((Port->Flags & LPCP_PORT_TYPE_MASK) == LPCP_CONNECTION_PORT) &&
-        (ConnectionPort->ServerProcess))
-    {
-        /* Dereference the server process */
-        ObDereferenceObject(ConnectionPort->ServerProcess);
-        ConnectionPort->ServerProcess = NULL;
-    }
-
     /* Free client security */
     LpcpFreePortClientSecurity(Port);
     LPCTRACE(LPC_CLOSE_DEBUG, "Port: %p deleted\n", Port);