sys: check Response->IoStatus.Information for Read, Write, QueryDirectory

This commit is contained in:
Bill Zissimopoulos 2016-10-21 21:46:47 -07:00
parent e16dfd8a43
commit a525e095d3
4 changed files with 13 additions and 1 deletions

View File

@ -855,6 +855,10 @@ NTSTATUS FspFsvolDirectoryControlComplete(
}
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
if (Response->IoStatus.Information > Request->Req.QueryDirectory.Length)
FSP_RETURN(Result = STATUS_INTERNAL_ERROR);
PFILE_OBJECT FileObject = IrpSp->FileObject;
FSP_FILE_NODE *FileNode = FileObject->FsContext;
FSP_FILE_DESC *FileDesc = FileObject->FsContext2;

View File

@ -546,7 +546,7 @@ static NTSTATUS FspFsvolQueryStreamInformationSuccess(
(PUINT8)Response + Response->Size)
{
Irp->IoStatus.Information = 0;
return STATUS_INFO_LENGTH_MISMATCH; /* ???: what is the best code to return here? */
return STATUS_INTERNAL_ERROR;
}
FspIopRequestContext(Request, RequestInfoChangeNumber) = (PVOID)

View File

@ -347,6 +347,10 @@ NTSTATUS FspFsvolReadComplete(
}
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
if (Response->IoStatus.Information > Request->Req.Read.Length)
FSP_RETURN(Result = STATUS_INTERNAL_ERROR);
FSP_SAFE_MDL *SafeMdl = FspIopRequestContext(Request, RequestSafeMdl);
PFILE_OBJECT FileObject = IrpSp->FileObject;
LARGE_INTEGER ReadOffset = IrpSp->Parameters.Read.ByteOffset;

View File

@ -405,6 +405,10 @@ NTSTATUS FspFsvolWriteComplete(
}
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
if (Response->IoStatus.Information > Request->Req.Write.Length)
FSP_RETURN(Result = STATUS_INTERNAL_ERROR);
PFILE_OBJECT FileObject = IrpSp->FileObject;
FSP_FILE_NODE *FileNode = FileObject->FsContext;
LARGE_INTEGER WriteOffset = IrpSp->Parameters.Write.ByteOffset;