mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: check Response->IoStatus.Information for Read, Write, QueryDirectory
This commit is contained in:
parent
e16dfd8a43
commit
a525e095d3
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user