From 7e543c6acbe3c84da5fabf8cf1e27ade29b5dba8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 29 Jul 2025 23:08:37 -0400 Subject: [PATCH] Fix some issues with CFB deserialization --- SabreTools.Serialization/Deserializers/CFB.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/SabreTools.Serialization/Deserializers/CFB.cs b/SabreTools.Serialization/Deserializers/CFB.cs index 25a70b07..077ab8ee 100644 --- a/SabreTools.Serialization/Deserializers/CFB.cs +++ b/SabreTools.Serialization/Deserializers/CFB.cs @@ -247,8 +247,8 @@ namespace SabreTools.Serialization.Deserializers { var obj = new DirectoryEntry(); - byte[] name = data.ReadBytes(32); - obj.Name = Encoding.Unicode.GetString(name).TrimEnd('\0'); + byte[] name = data.ReadBytes(64); + obj.Name = Encoding.Unicode.GetString(name); obj.NameLength = data.ReadUInt16LittleEndian(); obj.ObjectType = (ObjectType)data.ReadByteValue(); obj.ColorFlag = (ColorFlag)data.ReadByteValue(); @@ -332,11 +332,9 @@ namespace SabreTools.Serialization.Deserializers /// Filled sector full of directory entries on success, null on error private static DirectoryEntry[]? ParseDirectoryEntries(Stream data, ushort sectorShift, ushort majorVersion) { -#if NET20 || NET35 || NET40 - int directoryEntrySize = Marshal.SizeOf(new DirectoryEntry()); -#else - int directoryEntrySize = Marshal.SizeOf(); -#endif + // + int directoryEntrySize = 128; + int sectorCount = (int)(Math.Pow(2, sectorShift) / directoryEntrySize); var directoryEntries = new DirectoryEntry[sectorCount];