[NTFS] Don't perform overzealous checks on bitmap while reading a directory

This avoids partial direactory reads where we believe they are corrupted
while they are not.
This commit is contained in:
Pierre Schweitzer 2018-12-01 21:50:54 +01:00
parent 17fa384a25
commit f4d29a74aa
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -2823,13 +2823,10 @@ BrowseSubNodeIndexEntries(PNTFS_VCB Vcb,
// Is the bit for this node clear in the bitmap? // Is the bit for this node clear in the bitmap?
if (!RtlCheckBit(Bitmap, NodeNumber)) if (!RtlCheckBit(Bitmap, NodeNumber))
{ {
DPRINT1("File system corruption detected, node with VCN %I64u is being reused or is marked as deleted.\n", VCN); DPRINT1("File system corruption detected, node with VCN %I64u is marked as deleted.\n", VCN);
return STATUS_DATA_ERROR; return STATUS_DATA_ERROR;
} }
// Clear the bit for this node so it can't be recursively referenced
RtlClearBits(Bitmap, NodeNumber, 1);
// Allocate memory for the index record // Allocate memory for the index record
IndexRecord = ExAllocatePoolWithTag(NonPagedPool, IndexBlockSize, TAG_NTFS); IndexRecord = ExAllocatePoolWithTag(NonPagedPool, IndexBlockSize, TAG_NTFS);
if (!IndexRecord) if (!IndexRecord)