sys: overwrite: check hidde/system attributes (IFSTEST)

This commit is contained in:
Bill Zissimopoulos 2016-12-18 16:02:32 -08:00
parent c760cf9563
commit 154933ecab

View File

@ -952,6 +952,19 @@ NTSTATUS FspFsvolCreateComplete(
if (FileNode->IsDirectory) if (FileNode->IsDirectory)
SetFlag(FileAttributes, FILE_ATTRIBUTE_DIRECTORY); SetFlag(FileAttributes, FILE_ATTRIBUTE_DIRECTORY);
/* overwrite/supersede operations must have the correct hidden/system attributes set */
if ((FlagOn(Response->Rsp.Create.Opened.FileInfo.FileAttributes, FILE_ATTRIBUTE_HIDDEN) &&
!FlagOn(FileAttributes, FILE_ATTRIBUTE_HIDDEN)) ||
(FlagOn(Response->Rsp.Create.Opened.FileInfo.FileAttributes, FILE_ATTRIBUTE_SYSTEM) &&
!FlagOn(FileAttributes, FILE_ATTRIBUTE_SYSTEM)))
{
FspFsvolCreatePostClose(FileDesc);
FspFileNodeClose(FileNode, FileObject, TRUE);
Result = STATUS_ACCESS_DENIED;
FSP_RETURN();
}
PVOID RequestDeviceObjectValue = FspIopRequestContext(Request, RequestDeviceObject); PVOID RequestDeviceObjectValue = FspIopRequestContext(Request, RequestDeviceObject);
/* disassociate the FileDesc momentarily from the Request */ /* disassociate the FileDesc momentarily from the Request */