Don't try to create a file, if no parent fcb was found.

svn path=/trunk/; revision=19871
This commit is contained in:
Hartmut Birr 2005-12-04 15:09:07 +00:00
parent 8af0ab71a1
commit 1986a25e6b

View file

@ -439,7 +439,7 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
ULONG RequestedDisposition, RequestedOptions; ULONG RequestedDisposition, RequestedOptions;
PVFATCCB pCcb; PVFATCCB pCcb;
PVFATFCB pFcb = NULL; PVFATFCB pFcb = NULL;
PVFATFCB ParentFcb; PVFATFCB ParentFcb = NULL;
PWCHAR c, last; PWCHAR c, last;
BOOLEAN PagingFileCreate = FALSE; BOOLEAN PagingFileCreate = FALSE;
BOOLEAN Dots; BOOLEAN Dots;
@ -543,8 +543,8 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
* fail immediately * fail immediately
*/ */
if (Status == STATUS_OBJECT_PATH_NOT_FOUND || if (Status == STATUS_OBJECT_PATH_NOT_FOUND ||
Status == STATUS_INVALID_PARAMETER || Status == STATUS_INVALID_PARAMETER ||
Status == STATUS_DELETE_PENDING) Status == STATUS_DELETE_PENDING)
{ {
if (ParentFcb) if (ParentFcb)
{ {
@ -552,6 +552,11 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
} }
return(Status); return(Status);
} }
if (!NT_SUCCESS(Status) && ParentFcb == NULL)
{
DPRINT1("VfatOpenFile faild for '%wZ', status %x\n", &PathNameU, Status);
return Status;
}
/* /*
* If the file open failed then create the required file * If the file open failed then create the required file
@ -564,11 +569,6 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
RequestedDisposition == FILE_SUPERSEDE) RequestedDisposition == FILE_SUPERSEDE)
{ {
ULONG Attributes; ULONG Attributes;
if (ParentFcb == NULL)
{
ParentFcb = vfatOpenRootFCB (DeviceExt);
ASSERT(ParentFcb != NULL);
}
Attributes = Stack->Parameters.Create.FileAttributes; Attributes = Stack->Parameters.Create.FileAttributes;
vfatSplitPathName(&PathNameU, NULL, &FileNameU); vfatSplitPathName(&PathNameU, NULL, &FileNameU);