if (Irp == NULL)
{
DPRINT("IoBuildSynchronousFsdRequest failed\n");
+
+ if (AllocatedBuffer)
+ {
+ ExFreePoolWithTag(ReadBuffer, TAG_NTFS);
+ }
+
return STATUS_INSUFFICIENT_RESOURCES;
}
Status = IoStatus.Status;
}
- if (NT_SUCCESS(Status) && AllocatedBuffer)
+ if (AllocatedBuffer)
{
- RtlCopyMemory(Buffer, ReadBuffer + (StartingOffset - RealReadOffset), Length);
+ if (NT_SUCCESS(Status))
+ {
+ RtlCopyMemory(Buffer, ReadBuffer + (StartingOffset - RealReadOffset), Length);
+ }
+
ExFreePoolWithTag(ReadBuffer, TAG_NTFS);
}