Bugfixing... Part 3/X:
- Really release the allocated memory in NtfsFindFileAt() and NtfsLookupFileAt(). Don't attempt to release caller pointer!

This fixes crashes on directory enumeration failure. Even though this latter still doesn't work.

svn path=/trunk/; revision=64776
This commit is contained in:
Pierre Schweitzer 2014-10-17 06:55:52 +00:00
parent 13b500f258
commit 3fa669eddb

View file

@ -397,6 +397,8 @@ ReadFileRecord(PDEVICE_EXTENSION Vcb,
{
ULONGLONG BytesRead;
DPRINT1("ReadFileRecord(%p, %I64x, %p)\n", Vcb, index, file);
BytesRead = ReadAttribute(Vcb, Vcb->MFTContext, index * Vcb->NtfsInfo.BytesPerFileRecord, (PCHAR)file, Vcb->NtfsInfo.BytesPerFileRecord);
if (BytesRead != Vcb->NtfsInfo.BytesPerFileRecord)
{
@ -714,7 +716,7 @@ NtfsLookupFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsLookupFileAt: Can't read MFT record\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
@ -724,7 +726,7 @@ NtfsLookupFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsLookupFileAt: Can't find data attribute\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
@ -775,7 +777,7 @@ NtfsFindFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsFindFileAt: Can't read MFT record\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
@ -785,7 +787,7 @@ NtfsFindFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsFindFileAt: Can't find data attribute\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}