Fixed the dereferencing of an existing named object in IoCreateFile.
Modified: trunk/reactos/ntoskrnl/io/create.c
_____
Modified: trunk/reactos/ntoskrnl/io/create.c
--- trunk/reactos/ntoskrnl/io/create.c 2005-04-09 09:37:32 UTC (rev
14560)
+++ trunk/reactos/ntoskrnl/io/create.c 2005-04-09 09:40:44 UTC (rev
14561)
@@ -344,8 +344,8 @@
IN PVOID ExtraCreateParameters
OPTIONAL,
IN ULONG Options)
{
- PFILE_OBJECT FileObject;
- PDEVICE_OBJECT DeviceObject = NULL;
+ PFILE_OBJECT FileObject = NULL;
+ PDEVICE_OBJECT DeviceObject;
PIRP Irp;
PIO_STACK_LOCATION StackLoc;
IO_SECURITY_CONTEXT SecurityContext;
@@ -460,23 +460,23 @@
AccessMode,
(PVOID*)&DeviceObject,
NULL);
- ObDereferenceObject (DeviceObject);
+ ZwClose(LocalHandle);
if (!NT_SUCCESS(Status))
{
return Status;
}
if (BODY_TO_HEADER(DeviceObject)->ObjectType !=
IoDeviceObjectType)
{
- ZwClose(LocalHandle);
+ ObDereferenceObject (DeviceObject);
return STATUS_OBJECT_NAME_COLLISION;
}
FileObject = IoCreateStreamFileObject(NULL, DeviceObject);
- ZwClose(LocalHandle);
+ ObDereferenceObject (DeviceObject);
}
}
- if (DeviceObject == NULL)
+ if (FileObject == NULL)
{
Status = ObCreateObject(AccessMode,
IoFileObjectType,
Show replies by date