From dbfdbbff209918ad4fdd1ab35f0f7ebcce2cd58e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 30 Jul 2025 08:21:20 -0400 Subject: [PATCH] Fix CFB stream name handling --- SabreTools.Serialization/Deserializers/CFB.cs | 2 +- SabreTools.Serialization/Extensions.CFB.cs | 2 +- SabreTools.Serialization/Printers/CFB.cs | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SabreTools.Serialization/Deserializers/CFB.cs b/SabreTools.Serialization/Deserializers/CFB.cs index ce5ba0a5..a78896d0 100644 --- a/SabreTools.Serialization/Deserializers/CFB.cs +++ b/SabreTools.Serialization/Deserializers/CFB.cs @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Deserializers var obj = new DirectoryEntry(); byte[] name = data.ReadBytes(64); - obj.Name = Encoding.Unicode.GetString(name).DecodeStreamName(); + obj.Name = Encoding.Unicode.GetString(name).DecodeStreamName()?.TrimEnd('\0'); obj.NameLength = data.ReadUInt16LittleEndian(); obj.ObjectType = (ObjectType)data.ReadByteValue(); obj.ColorFlag = (ColorFlag)data.ReadByteValue(); diff --git a/SabreTools.Serialization/Extensions.CFB.cs b/SabreTools.Serialization/Extensions.CFB.cs index dca66b71..752c9fa8 100644 --- a/SabreTools.Serialization/Extensions.CFB.cs +++ b/SabreTools.Serialization/Extensions.CFB.cs @@ -57,7 +57,7 @@ namespace SabreTools.Serialization } output[q] = 0; - return Encoding.ASCII.GetString(output); + return Encoding.UTF8.GetString(output); } /// diff --git a/SabreTools.Serialization/Printers/CFB.cs b/SabreTools.Serialization/Printers/CFB.cs index c26516f5..25dd12e7 100644 --- a/SabreTools.Serialization/Printers/CFB.cs +++ b/SabreTools.Serialization/Printers/CFB.cs @@ -103,6 +103,8 @@ namespace SabreTools.Serialization.Printers builder.AppendLine($" Directory Entry {i}"); builder.AppendLine(entry.Name?.TrimEnd('\0'), " Name"); + if (entry.Name != null) + builder.AppendLine(Encoding.UTF8.GetBytes(entry.Name), " Name (bytes)"); builder.AppendLine(entry.NameLength, " Name length"); builder.AppendLine($" Object type: {entry.ObjectType} (0x{entry.ObjectType:X})"); builder.AppendLine($" Color flag: {entry.ColorFlag} (0x{entry.ColorFlag:X})");