From b382683e3b77e5973b63e9bfc72fbde55c94af95 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Wed, 6 Sep 2017 21:12:44 +0100 Subject: [PATCH] Check for overflow with incorrectly cut mode pages. --- DiscImageChef.Decoders/SCSI/Modes.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DiscImageChef.Decoders/SCSI/Modes.cs b/DiscImageChef.Decoders/SCSI/Modes.cs index e8dbdb1a..9fb6be74 100644 --- a/DiscImageChef.Decoders/SCSI/Modes.cs +++ b/DiscImageChef.Decoders/SCSI/Modes.cs @@ -6545,6 +6545,9 @@ namespace DiscImageChef.Decoders.SCSI { if(isSubpage) { + if (offset + 3 >= modeResponse.Length) + break; + pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4]; if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded; @@ -6555,6 +6558,9 @@ namespace DiscImageChef.Decoders.SCSI } else { + if (offset + 1 >= modeResponse.Length) + break; + pg.PageResponse = new byte[modeResponse[offset + 1] + 2]; if((pg.PageResponse.Length + offset) > modeResponse.Length) return decoded;