Validate the stream we're trying to open properly exists.
This check might have to be moved later on when the driver switches to RW

svn path=/trunk/; revision=68309
This commit is contained in:
Pierre Schweitzer 2015-06-28 21:16:03 +00:00
parent 296712e3fa
commit a45dcb0d07

View file

@ -543,6 +543,7 @@ NtfsDirFindFile(PNTFS_VCB Vcb,
PFILE_RECORD_HEADER FileRecord;
ULONGLONG MFTIndex;
PWSTR Colon;
PNTFS_ATTR_CONTEXT DataContext;
USHORT Length = 0;
DPRINT1("NtfsDirFindFile(%p, %p, %S, %p)\n", Vcb, DirectoryFcb, FileToFind, FoundFCB);
@ -573,6 +574,20 @@ NtfsDirFindFile(PNTFS_VCB Vcb,
File.Length = Length;
}
if ((FileRecord->Flags & FRH_DIRECTORY) && Colon != 0)
{
return STATUS_INVALID_PARAMETER;
}
else if (Colon != 0)
{
Status = FindAttribute(Vcb, FileRecord, AttributeData, Colon, wcslen(Colon), &DataContext);
if (!NT_SUCCESS(Status))
{
return STATUS_OBJECT_NAME_NOT_FOUND;
}
ReleaseAttributeContext(DataContext);
}
Status = NtfsMakeFCBFromDirEntry(Vcb, DirectoryFcb, &File, Colon, FileRecord, MFTIndex, FoundFCB);
ExFreePoolWithTag(FileRecord, TAG_NTFS);