From 5884949d3203dc09f6f301e547331b65c38bde88 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 19 Jul 2014 17:48:46 +0000 Subject: [PATCH] [DISK] - Fix memory leak in CreatePartitionDeviceObjects svn path=/trunk/; revision=63721 --- reactos/drivers/storage/class/disk/disk.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/storage/class/disk/disk.c b/reactos/drivers/storage/class/disk/disk.c index fd3a47594b6..57428524f67 100644 --- a/reactos/drivers/storage/class/disk/disk.c +++ b/reactos/drivers/storage/class/disk/disk.c @@ -1183,7 +1183,7 @@ CreatePartitionDeviceObjects( // Allocate and zero a partition list. // - partitionList = ExAllocatePool(NonPagedPool, sizeof(*partitionList )); + partitionList = ExAllocatePool(NonPagedPool, sizeof(*partitionList)); if (partitionList != NULL) { @@ -1446,6 +1446,10 @@ CreatePartitionDeviceObjects( ExFreePool(partitionList); + if (dmSkew) { + ExFreePool(dmSkew); + } + } else { CreatePartitionDeviceObjectsExit: @@ -1457,6 +1461,10 @@ CreatePartitionDeviceObjectsExit: ExFreePool(initData); } + if (dmSkew) { + ExFreePool(dmSkew); + } + return status; } // end if...else @@ -1909,7 +1917,7 @@ Return Value: case EXECUTE_OFFLINE_DIAGS: controlCode = IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS; break; - + default: status = STATUS_INVALID_PARAMETER; break; @@ -2090,13 +2098,13 @@ Return Value: RtlMoveMemory(Irp->AssociatedIrp.SystemBuffer, deviceExtension->DiskGeometry, (irpStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_DISK_GET_DRIVE_GEOMETRY) ? - sizeof(DISK_GEOMETRY) : + sizeof(DISK_GEOMETRY) : sizeof(DISK_GEOMETRY_EX)); status = STATUS_SUCCESS; Irp->IoStatus.Information = (irpStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_DISK_GET_DRIVE_GEOMETRY) ? - sizeof(DISK_GEOMETRY) : + sizeof(DISK_GEOMETRY) : sizeof(DISK_GEOMETRY_EX); }