Fixed the dereferencing of an existing named object in IoCreateFile.

svn path=/trunk/; revision=14561
This commit is contained in:
Hartmut Birr 2005-04-09 09:40:44 +00:00
parent 6256db0836
commit 02d3095664

View file

@ -344,8 +344,8 @@ IoCreateFile(OUT PHANDLE FileHandle,
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 @@ IoCreateFile(OUT PHANDLE FileHandle,
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,