From f761df9fc9e7ef83868f0c0466241b002a43556d Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 28 Jul 2019 17:04:08 +0100 Subject: [PATCH] Skip known system use areas. --- DiscImageChef.Filesystems/ISO9660/Dir.cs | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/DiscImageChef.Filesystems/ISO9660/Dir.cs b/DiscImageChef.Filesystems/ISO9660/Dir.cs index e56a38937..94450d9c5 100644 --- a/DiscImageChef.Filesystems/ISO9660/Dir.cs +++ b/DiscImageChef.Filesystems/ISO9660/Dir.cs @@ -266,6 +266,9 @@ namespace DiscImageChef.Filesystems.ISO9660 byte appleLength = data[systemAreaOff + 2]; AppleId appleId = (AppleId)data[systemAreaOff + 3]; + // Old AAIP + if(appleId == AppleId.ProDOS && appleLength != 7) goto case AAIP_MAGIC; + switch(appleId) { case AppleId.ProDOS: @@ -383,6 +386,30 @@ namespace DiscImageChef.Filesystems.ISO9660 Marshal.SizeOf()); systemAreaOff += Marshal.SizeOf(); + break; + // All of these follow the SUSP indication of 2 bytes for signature 1 byte for length + case AAIP_MAGIC: + case AMIGA_MAGIC: + case RRIP_MAGIC: + case RRIP_POSIX_ATTRIBUTES: + case RRIP_POSIX_DEV_NO: + case RRIP_SYMLINK: + case RRIP_NAME: + case RRIP_CHILDLINK: + case RRIP_PARENTLINK: + case RRIP_RELOCATED_DIR: + case RRIP_TIMESTAMPS: + case RRIP_SPARSE: + case SUSP_CONTINUATION: + case SUSP_PADDING: + case SUSP_INDICATOR: + case SUSP_TERMINATOR: + case SUSP_REFERENCE: + case SUSP_SELECTOR: + case ZISO_MAGIC: + byte suspLength = data[systemAreaOff + 2]; + systemAreaOff += suspLength; + break; default: // Cannot continue as we don't know this structure size