break;
case IOCTL_VIDEO_SET_COLOR_REGISTERS:
- /*
- * FIXME: Check buffer size!
- */
+ if (RequestPacket->InputBufferLength < sizeof(VIDEO_CLUT) ||
+ RequestPacket->InputBufferLength <
+ (((PVIDEO_CLUT)RequestPacket->InputBuffer)->NumEntries * sizeof(ULONG)) +
+ sizeof(VIDEO_CLUT))
+ {
+ RequestPacket->StatusBlock->Status = ERROR_INSUFFICIENT_BUFFER;
+ return TRUE;
+ }
Result = VBESetColorRegisters(
(PVBE_DEVICE_EXTENSION)HwDeviceExtension,
(PVIDEO_CLUT)RequestPacket->InputBuffer,
ULONG Entry;
PULONG OutputEntry;
+ if (ColorLookUpTable->NumEntries + ColorLookUpTable->FirstEntry > 256)
+ return FALSE;
+
if (DeviceExtension->VGACompatible)
{
for (Entry = ColorLookUpTable->FirstEntry;