From 62dbaf56e3b56610ccfb5cb608abc2b6846016ce Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sat, 31 Dec 2016 20:50:03 -0800 Subject: [PATCH] sys: FspFsvolFileSystemControlReparsePointComplete --- src/sys/fsctl.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sys/fsctl.c b/src/sys/fsctl.c index 676b0731..6bab9dd9 100644 --- a/src/sys/fsctl.c +++ b/src/sys/fsctl.c @@ -134,12 +134,16 @@ static NTSTATUS FspFsvolFileSystemControlReparsePoint( if (IsWrite) { - if (0 == InputBuffer || 0 == InputBufferLength || - 0 != OutputBuffer || 0 != OutputBufferLength || - FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMAX - (FileNode->FileName.Length + sizeof(WCHAR)) < - InputBufferLength) + if (0 == InputBuffer || 0 == InputBufferLength) + return STATUS_INVALID_BUFFER_SIZE; + + if (0 != OutputBuffer || 0 != OutputBufferLength) return STATUS_INVALID_PARAMETER; + if (FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMAX - (FileNode->FileName.Length + sizeof(WCHAR)) < + InputBufferLength) + return STATUS_IO_REPARSE_DATA_INVALID; + Result = FsRtlValidateReparsePointBuffer(InputBufferLength, InputBuffer); if (!NT_SUCCESS(Result)) return Result;