Author: tfaber Date: Fri Sep 4 16:01:46 2015 New Revision: 69003 URL: http://svn.reactos.org/svn/reactos?rev=69003&view=rev Log: [CDROM] - Avoid IRP leaks
Modified: trunk/reactos/drivers/storage/class/cdrom/cdrom.c Modified: trunk/reactos/drivers/storage/class/cdrom/cdrom.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/cdrom/cdrom.c?rev=69003&r1=69002&r2=69003&view=diff ============================================================================== --- trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/class/cdrom/cdrom.c [iso-8859-1] Fri Sep 4 16:01:46 2015 @@ -2139,7 +2139,6 @@ IoCompleteRequest(Irp, IO_DISK_INCREMENT); ExFreePool(senseBuffer); ExFreePool(srb); - IoFreeIrp(irp2); IoStartNextPacket(DeviceObject, FALSE); DebugPrint((2, "ScsiCdRomStartIo: [%lx] bailing with status %lx at line %s\n", Irp, Irp->IoStatus.Status, __LINE__)); return; @@ -2764,6 +2763,9 @@ // IoCompleteRequest(Irp, IO_NO_INCREMENT); + ExFreePool(senseBuffer); + ExFreePool(srb); + IoFreeIrp(irp2); return; } // end switch() @@ -2953,6 +2955,17 @@ (realIrpStack->MajorFunction == IRP_MJ_INTERNAL_DEVICE_CONTROL)) && (realIrpStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_CDROM_CHECK_VERIFY)) { + ExFreePool(srb->SenseInfoBuffer); + if (srb->DataBuffer) { + ExFreePool(srb->DataBuffer); + } + ExFreePool(srb); + if (Irp->MdlAddress) { + IoFreeMdl(Irp->MdlAddress); + } + + IoFreeIrp(Irp); + // // Update the geometry information, as the media could have changed. // The completion routine for this will complete the real irp and start