sys: IRP_MJ_DIRECTORY_CONTROL: testing

This commit is contained in:
Bill Zissimopoulos 2016-03-29 13:48:40 -07:00
parent f3a2d5f2c0
commit c53c9bb9cc

View File

@ -137,11 +137,10 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
try try
{ {
for (;;) for (;
(PUINT8)DirInfo + sizeof(DirInfo->Size) <= DirInfoEnd;
DirInfo = (PVOID)((PUINT8)DirInfo + FSP_FSCTL_DEFAULT_ALIGN_UP(DirInfoSize)))
{ {
if ((PUINT8)DirInfo + sizeof(DirInfo->Size) > DirInfoEnd)
break;
DirInfoSize = DirInfo->Size; DirInfoSize = DirInfo->Size;
if (sizeof(FSP_FSCTL_DIR_INFO) > DirInfoSize) if (sizeof(FSP_FSCTL_DIR_INFO) > DirInfoSize)
@ -154,7 +153,7 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
if (0 != DirectoryOffset && !DirectoryOffsetFound) if (0 != DirectoryOffset && !DirectoryOffsetFound)
{ {
DirectoryOffsetFound = DirInfo->NextOffset == DirectoryOffset; DirectoryOffsetFound = DirInfo->NextOffset == DirectoryOffset;
goto NextDirInfo; continue;
} }
FileName.Length = FileName.Length =
@ -217,7 +216,7 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
break; break;
default: default:
ASSERT(0); ASSERT(0);
return STATUS_INVALID_INFO_CLASS; break;
} }
if (ReturnSingleEntry) if (ReturnSingleEntry)
@ -226,9 +225,8 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
DestBuf = (PVOID)((PUINT8)DestBuf + DestBuf = (PVOID)((PUINT8)DestBuf +
FSP_FSCTL_ALIGN_UP(BaseInfoLen + FileName.Length, sizeof(LONGLONG))); FSP_FSCTL_ALIGN_UP(BaseInfoLen + FileName.Length, sizeof(LONGLONG)));
} }
else
NextDirInfo: *PDirectoryOffset = DirInfo->NextOffset;
DirInfo = (PVOID)((PUINT8)DirInfo + FSP_FSCTL_DEFAULT_ALIGN_UP(DirInfoSize));
} }
} }
except (EXCEPTION_EXECUTE_HANDLER) except (EXCEPTION_EXECUTE_HANDLER)