From 2b769cbf4b4b142309c673851c6ede488969d83a Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 19 Jun 2018 21:35:23 +0100 Subject: [PATCH] Add several out of bounds and null protections against rogue MMC firmwares. --- SCSI/Modes/Mode10.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SCSI/Modes/Mode10.cs b/SCSI/Modes/Mode10.cs index c1dd64c56..8538dc83a 100644 --- a/SCSI/Modes/Mode10.cs +++ b/SCSI/Modes/Mode10.cs @@ -64,6 +64,8 @@ namespace DiscImageChef.Decoders.SCSI header.BlockDescriptors = new BlockDescriptor[blockDescLength / 16]; for(int i = 0; i < header.BlockDescriptors.Length; i++) { + if(12 + i * 16 + 8 >= modeResponse.Length) break; + header.BlockDescriptors[i] = new BlockDescriptor {Density = DensityType.Default}; byte[] temp = new byte[8]; temp[0] = modeResponse[7 + i * 16 + 8]; @@ -86,6 +88,8 @@ namespace DiscImageChef.Decoders.SCSI header.BlockDescriptors = new BlockDescriptor[blockDescLength / 8]; for(int i = 0; i < header.BlockDescriptors.Length; i++) { + if(7 + i * 8 + 8 >= modeResponse.Length) break; + header.BlockDescriptors[i] = new BlockDescriptor(); if(deviceType != PeripheralDeviceTypes.DirectAccess) header.BlockDescriptors[i].Density = (DensityType)modeResponse[0 + i * 8 + 8];