From 1b16d86ba8df5dc2fa7207e6455dfc06558aa058 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Mon, 5 Jul 2004 21:44:27 +0000 Subject: [PATCH] - Check for a valid buffer on a call to IOCTL_DISK_CHECK_VERIFY. svn path=/trunk/; revision=10001 --- reactos/drivers/storage/floppy/ioctl.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/reactos/drivers/storage/floppy/ioctl.c b/reactos/drivers/storage/floppy/ioctl.c index 7242a3311d2..a50b7ba67f0 100644 --- a/reactos/drivers/storage/floppy/ioctl.c +++ b/reactos/drivers/storage/floppy/ioctl.c @@ -210,9 +210,25 @@ VOID NTAPI DeviceIoctlPassive(PDRIVE_INFO DriveInfo, case IOCTL_DISK_CHECK_VERIFY: KdPrint(("floppy: IOCTL_DISK_CHECK_VERIFY called\n")); - *((PULONG)OutputBuffer) = DriveInfo->DiskChangeCount; - Irp->IoStatus.Status = STATUS_SUCCESS; - Irp->IoStatus.Information = sizeof(ULONG); + if (OutputLength != 0) + { + if (OutputLength < sizeof(ULONG)) + { + Irp->IoStatus.Status = STATUS_BUFFER_TOO_SMALL; + Irp->IoStatus.Information = 0; + } + else + { + *((PULONG)OutputBuffer) = DriveInfo->DiskChangeCount; + Irp->IoStatus.Status = STATUS_SUCCESS; + Irp->IoStatus.Information = sizeof(ULONG); + } + } + else + { + Irp->IoStatus.Status = STATUS_SUCCESS; + Irp->IoStatus.Information = 0; + } break; case IOCTL_DISK_GET_DRIVE_GEOMETRY: