- Fix memory leak in CreatePartitionDeviceObjects

svn path=/trunk/; revision=63721
This commit is contained in:
Thomas Faber 2014-07-19 17:48:46 +00:00
parent 6be6b3b4d4
commit 5884949d32

View file

@ -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);
}