[NTOS:OB]
authorThomas Faber <thomas.faber@reactos.org>
Thu, 7 Aug 2014 13:02:59 +0000 (13:02 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Thu, 7 Aug 2014 13:02:59 +0000 (13:02 +0000)
- Mark object types as not having ObjectCreateInfo on creation. Otherwise ObpObjectType's TypeList gets corrupted when a handle to an object type is created (as kmtest:ObTypes does) and ObpIncrementHandleCount tries to insert the list entry a second time.
CORE-8423 #resolve

svn path=/trunk/; revision=63833

reactos/ntoskrnl/ob/oblife.c

index 15e790d..1edc2ff 100644 (file)
@@ -1231,8 +1231,15 @@ ObCreateObjectType(IN PUNICODE_STRING TypeName,
 
     /* Get creator info and insert it into the type list */
     CreatorInfo = OBJECT_HEADER_TO_CREATOR_INFO(Header);
-    if (CreatorInfo) InsertTailList(&ObpTypeObjectType->TypeList,
-                                    &CreatorInfo->TypeList);
+    if (CreatorInfo)
+    {
+        InsertTailList(&ObpTypeObjectType->TypeList,
+                       &CreatorInfo->TypeList);
+
+        /* CORE-8423: Avoid inserting this a second time if someone creates a
+         * handle to the object type (bug in Windows 2003) */
+        Header->Flags &= ~OB_FLAG_CREATE_INFO;
+    }
 
     /* Set the index and the entry into the object type array */
     LocalObjectType->Index = ObpTypeObjectType->TotalNumberOfObjects;