From 97d46bb60003eb93eb845681a87e4824344c4781 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Wed, 13 Apr 2016 19:52:42 +0000 Subject: [PATCH] [NTFS] Don't leak memory in case of failures in NtfsReadDisk(). Based on a patch by Trevor Thompson. CORE-10998 svn path=/trunk/; revision=71155 --- reactos/drivers/filesystems/ntfs/blockdev.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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); }