ObInsertObject must always return STATUS_OBJECT_NAME_COLLISION if an object with the same name exist. Modified: trunk/reactos/ntoskrnl/ob/handle.c _____
Modified: trunk/reactos/ntoskrnl/ob/handle.c --- trunk/reactos/ntoskrnl/ob/handle.c 2005-05-22 16:44:36 UTC (rev 15469) +++ trunk/reactos/ntoskrnl/ob/handle.c 2005-05-22 16:48:30 UTC (rev 15470) @@ -739,6 +739,10 @@
"ObjectType %x, AccessMode %d, Object %x)\n",Handle,DesiredAccess, ObjectType,AccessMode,Object);
+ if (Handle == NULL) + { + return STATUS_INVALID_HANDLE; + } /* * Handle special handle names */ @@ -986,13 +990,8 @@ if (FoundHeader && RemainingPath.Buffer == NULL) { DPRINT("Object exists\n"); - if (FoundHeader->ObjectType != Header->ObjectType - || !(ObjectCreateInfo->Attributes & OBJ_OPENIF)) - { - ObDereferenceObject(FoundObject); - return STATUS_OBJECT_NAME_COLLISION; - } - return STATUS_OBJECT_EXISTS; + ObDereferenceObject(FoundObject); + return STATUS_OBJECT_NAME_COLLISION; } } else