From 5ce40b68d01a50ec516ae6af237415f0e3b59610 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 7 Aug 2017 16:09:46 +0100 Subject: [PATCH] Add more checks for partitions that end, or start, after end of device. --- DiscImageChef.Partitions/AppleMap.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/DiscImageChef.Partitions/AppleMap.cs b/DiscImageChef.Partitions/AppleMap.cs index 742ce9b3..af316a02 100644 --- a/DiscImageChef.Partitions/AppleMap.cs +++ b/DiscImageChef.Partitions/AppleMap.cs @@ -311,15 +311,22 @@ namespace DiscImageChef.PartPlugins } _partition.Description = sb.ToString(); - // Some CD and DVDs end with an Apple_Free that expands beyond the disc size... - if(_partition.End < imagePlugin.ImageInfo.sectors) + if(_partition.Start < imagePlugin.ImageInfo.sectors && _partition.End < imagePlugin.ImageInfo.sectors) { partitions.Add(_partition); sequence++; } + // Some CD and DVDs end with an Apple_Free that expands beyond the disc size... + else if(_partition.Start < imagePlugin.ImageInfo.sectors) + { + DicConsole.DebugWriteLine("AppleMap Plugin", "Cutting last partition end ({0}) to media size ({1})", _partition.End, imagePlugin.ImageInfo.sectors - 1); + _partition.Length = imagePlugin.ImageInfo.sectors - _partition.Start; + partitions.Add(_partition); + sequence++; + } else { - DicConsole.DebugWriteLine("AppleMap Plugin", "Not adding partition because end ({0}) is outside media size ({1})", _partition.End, imagePlugin.ImageInfo.sectors); + DicConsole.DebugWriteLine("AppleMap Plugin", "Not adding partition becaus start ({0}) is outside media size ({1})", _partition.Start, imagePlugin.ImageInfo.sectors - 1); } } }