diff --git a/DiscImageChef.Filesystems/FAT/Consts.cs b/DiscImageChef.Filesystems/FAT/Consts.cs index 2116345f1..3a822050d 100644 --- a/DiscImageChef.Filesystems/FAT/Consts.cs +++ b/DiscImageChef.Filesystems/FAT/Consts.cs @@ -80,6 +80,8 @@ namespace DiscImageChef.Filesystems.FAT const byte LFN_ERASED = 0x80; const byte LFN_LAST = 0x40; const byte LFN_MASK = 0x1F; + const ushort EADATA_MAGIC = 0x4445; + const ushort EASCTR_MAGIC = 0x4145; readonly (string hash, string name)[] knownBootHashes = { diff --git a/DiscImageChef.Filesystems/FAT/Super.cs b/DiscImageChef.Filesystems/FAT/Super.cs index b08187d2b..39a4bd97e 100644 --- a/DiscImageChef.Filesystems/FAT/Super.cs +++ b/DiscImageChef.Filesystems/FAT/Super.cs @@ -602,6 +602,18 @@ namespace DiscImageChef.Filesystems.FAT cultureInfo = new CultureInfo("en-US", false); directoryCache = new Dictionary>(); + // Check it is really an OS/2 EA file + if(eaDirEntry.start_cluster != 0) + { + ulong secadd = firstClusterSector + eaDirEntry.start_cluster * sectorsPerCluster; + byte[] eadata = + imagePlugin.ReadSectors(firstClusterSector + eaDirEntry.start_cluster * sectorsPerCluster, + sectorsPerCluster); + ushort eamagic = BitConverter.ToUInt16(eadata, 0); + + if(eamagic != EADATA_MAGIC) eaDirEntry = new DirectoryEntry(); + } + mounted = true; return Errno.NoError; } diff --git a/DiscImageChef.Filesystems/FAT/Xattr.cs b/DiscImageChef.Filesystems/FAT/Xattr.cs index bb07b94a8..369675120 100644 --- a/DiscImageChef.Filesystems/FAT/Xattr.cs +++ b/DiscImageChef.Filesystems/FAT/Xattr.cs @@ -30,7 +30,6 @@ // Copyright © 2011-2019 Natalia Portillo // ****************************************************************************/ -using System; using System.Collections.Generic; using DiscImageChef.CommonTypes.Structs;