sys: fix filename length check during query directory operations

This commit is contained in:
Bill Zissimopoulos
2017-12-01 17:01:59 -08:00
parent 2ca33665ef
commit c87ff75b8f
4 changed files with 100 additions and 6 deletions

View File

@ -611,7 +611,7 @@ static NTSTATUS FspFsvolQueryDirectoryRetry(
if (0 != FileDesc->DirectoryMarker.Buffer)
{
ASSERT(
FsvolDeviceExtension->VolumeParams.MaxComponentLength >=
FsvolDeviceExtension->VolumeParams.MaxComponentLength * sizeof(WCHAR) >=
FileDesc->DirectoryMarker.Length);
Request->Req.QueryDirectory.Marker.Offset =
@ -921,7 +921,7 @@ NTSTATUS FspFsvolDirectoryControlComplete(
if (0 != FileDesc->DirectoryMarker.Buffer)
{
ASSERT(
FsvolDeviceExtension->VolumeParams.MaxComponentLength >=
FsvolDeviceExtension->VolumeParams.MaxComponentLength * sizeof(WCHAR) >=
FileDesc->DirectoryMarker.Length);
Request->Req.QueryDirectory.Marker.Offset =

View File

@ -2166,7 +2166,7 @@ NTSTATUS FspFileDescSetDirectoryMarker(FSP_FILE_DESC *FileDesc,
FspFsvolDeviceExtension(FileDesc->FileNode->FsvolDeviceObject);
UNICODE_STRING DirectoryMarker;
if (FsvolDeviceExtension->VolumeParams.MaxComponentLength < FileName->Length)
if (FsvolDeviceExtension->VolumeParams.MaxComponentLength * sizeof(WCHAR) < FileName->Length)
return STATUS_OBJECT_NAME_INVALID;
DirectoryMarker.Length = DirectoryMarker.MaximumLength = FileName->Length;