sys: IRP_MJ_DIRECTORY_CONTROL

This commit is contained in:
Bill Zissimopoulos 2016-03-29 16:26:36 -07:00
parent 48ee6f067a
commit 298cd73944

View File

@ -100,7 +100,7 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
PAGED_CODE(); PAGED_CODE();
BOOLEAN MatchAll = FspFileDescDirectoryPatternMatchAll == DirectoryPattern->Buffer; BOOLEAN MatchAll = FspFileDescDirectoryPatternMatchAll == DirectoryPattern->Buffer;
BOOLEAN DirectoryOffsetFound = FALSE; BOOLEAN Loop = TRUE, DirectoryOffsetFound = FALSE;
FSP_FSCTL_DIR_INFO *DirInfo = *PDirInfo; FSP_FSCTL_DIR_INFO *DirInfo = *PDirInfo;
PUINT8 DirInfoEnd = (PUINT8)DirInfo + DirInfoSize; PUINT8 DirInfoEnd = (PUINT8)DirInfo + DirInfoSize;
PUINT8 DestBufBgn = (PUINT8)DestBuf; PUINT8 DestBufBgn = (PUINT8)DestBuf;
@ -138,7 +138,7 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
try try
{ {
for (; for (;
(PUINT8)DirInfo + sizeof(DirInfo->Size) <= DirInfoEnd; Loop && (PUINT8)DirInfo + sizeof(DirInfo->Size) <= DirInfoEnd;
DirInfo = (PVOID)((PUINT8)DirInfo + FSP_FSCTL_DEFAULT_ALIGN_UP(DirInfoSize))) DirInfo = (PVOID)((PUINT8)DirInfo + FSP_FSCTL_DEFAULT_ALIGN_UP(DirInfoSize)))
{ {
DirInfoSize = DirInfo->Size; DirInfoSize = DirInfo->Size;
@ -219,11 +219,12 @@ static NTSTATUS FspFsvolQueryDirectoryCopy(
break; break;
} }
if (ReturnSingleEntry)
break;
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)));
if (ReturnSingleEntry)
/* cannot just break, *PDirInfo must be advanced */
Loop = FALSE;
} }
else else
*PDirectoryOffset = DirInfo->NextOffset; *PDirectoryOffset = DirInfo->NextOffset;