diff --git a/reactos/drivers/filesystems/fastfat/create.c b/reactos/drivers/filesystems/fastfat/create.c index ee6d310faad..7e8c71852d7 100644 --- a/reactos/drivers/filesystems/fastfat/create.c +++ b/reactos/drivers/filesystems/fastfat/create.c @@ -492,7 +492,9 @@ VfatCreateFile( /* This a open operation for the volume itself */ if (FileObject->FileName.Length == 0 && - (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL)) + (FileObject->RelatedFileObject == NULL || + FileObject->RelatedFileObject->FsContext2 != NULL || + FileObject->RelatedFileObject->FsContext == DeviceExt->VolumeFcb)) { DPRINT("Volume opening\n"); @@ -544,6 +546,13 @@ VfatCreateFile( return STATUS_SUCCESS; } + if (FileObject->RelatedFileObject != NULL && + FileObject->RelatedFileObject->FsContext == DeviceExt->VolumeFcb) + { + ASSERT(FileObject->FileName.Length != 0); + return STATUS_OBJECT_PATH_NOT_FOUND; + } + /* Check for illegal characters and illegale dot sequences in the file name */ PathNameU = FileObject->FileName; c = PathNameU.Buffer + PathNameU.Length / sizeof(WCHAR);