Author: pschweitzer
Date: Wed Mar 2 21:51:33 2011
New Revision: 50958
URL:
http://svn.reactos.org/svn/reactos?rev=50958&view=rev
Log:
[FASTFAT]
- Prevent code duplication by using vfatAttachFCBToFileObject() for volume opening,
instead of rewritting the whole function.
- Properly check requested disposition when opening a volume.
This fixes bug #5839. Trying to exec \\.\C: in explorer run dialog now ends with an error,
as it does on Windows.
Modified:
trunk/reactos/drivers/filesystems/fastfat/create.c
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] Wed Mar 2 21:51:33
2011
@@ -433,7 +433,6 @@
NTSTATUS Status = STATUS_SUCCESS;
PDEVICE_EXTENSION DeviceExt;
ULONG RequestedDisposition, RequestedOptions;
- PVFATCCB pCcb;
PVFATFCB pFcb = NULL;
PVFATFCB ParentFcb = NULL;
PWCHAR c, last;
@@ -468,9 +467,8 @@
if (FileObject->FileName.Length == 0 &&
(FileObject->RelatedFileObject == NULL ||
FileObject->RelatedFileObject->FsContext2 != NULL))
{
- if (RequestedDisposition == FILE_CREATE ||
- RequestedDisposition == FILE_OVERWRITE_IF ||
- RequestedDisposition == FILE_SUPERSEDE)
+ if (RequestedDisposition != FILE_OPEN ||
+ RequestedDisposition != FILE_OPEN_IF)
{
return(STATUS_ACCESS_DENIED);
}
@@ -481,16 +479,9 @@
return(STATUS_NOT_A_DIRECTORY);
}
#endif
+
pFcb = DeviceExt->VolumeFcb;
- pCcb = ExAllocateFromNPagedLookasideList(&VfatGlobalData->CcbLookasideList);
- if (pCcb == NULL)
- {
- return (STATUS_INSUFFICIENT_RESOURCES);
- }
- RtlZeroMemory(pCcb, sizeof(VFATCCB));
- FileObject->SectionObjectPointer = &pFcb->SectionObjectPointers;
- FileObject->FsContext = pFcb;
- FileObject->FsContext2 = pCcb;
+ vfatAttachFCBToFileObject(DeviceExt, pFcb, FileObject);
pFcb->RefCount++;
Irp->IoStatus.Information = FILE_OPENED;