/* This a open operation for the volume itself */
if (FileObject->FileName.Length == 0 &&
- FileObject->RelatedFileObject == NULL)
+ (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL))
{
if (RequestedDisposition == FILE_CREATE ||
RequestedDisposition == FILE_OVERWRITE_IF ||
{
return(STATUS_ACCESS_DENIED);
}
+#if 0
+ /* In spite of what is shown in WDK, it seems that Windows FAT driver doesn't perform that test */
if (RequestedOptions & FILE_DIRECTORY_FILE)
{
return(STATUS_NOT_A_DIRECTORY);
}
+#endif
pFcb = DeviceExt->VolumeFcb;
pCcb = ExAllocateFromNPagedLookasideList(&VfatGlobalData->CcbLookasideList);
if (pCcb == NULL)
return(STATUS_OBJECT_NAME_INVALID);
}
}
- if (FileObject->RelatedFileObject && PathNameU.Buffer[0] == L'\\')
+ if (FileObject->RelatedFileObject && PathNameU.Length >= sizeof(WCHAR) && PathNameU.Buffer[0] == L'\\')
{
return(STATUS_OBJECT_NAME_INVALID);
}