diff --git a/reactos/drivers/filesystems/ntfs/blockdev.c b/reactos/drivers/filesystems/ntfs/blockdev.c index ed1d6420e21..6c90131b19f 100644 --- a/reactos/drivers/filesystems/ntfs/blockdev.c +++ b/reactos/drivers/filesystems/ntfs/blockdev.c @@ -87,6 +87,12 @@ NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, if (Irp == NULL) { DPRINT("IoBuildSynchronousFsdRequest failed\n"); + + if (AllocatedBuffer) + { + ExFreePoolWithTag(ReadBuffer, TAG_NTFS); + } + return STATUS_INSUFFICIENT_RESOURCES; } @@ -108,9 +114,13 @@ NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, 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); }