From 4f253323db1def0ff4c9db0e46ebe2dd41c48cc3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 23 Apr 2024 15:14:18 -0400 Subject: [PATCH] Fix IS-CAB deserialization --- .../Deserializers/InstallShieldCabinet.cs | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs b/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs index 80f3adde..19f6cbe8 100644 --- a/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs +++ b/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs @@ -533,9 +533,9 @@ namespace SabreTools.Serialization.Deserializers // Read the string if (majorVersion >= 17) - fileGroup.Name = data.ReadString(Encoding.Unicode); + fileGroup.Name = data.ReadNullTerminatedUnicodeString(); else - fileGroup.Name = data.ReadString(Encoding.ASCII); + fileGroup.Name = data.ReadNullTerminatedUnicodeString(); } // Seek back to the correct offset @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.Deserializers component.IdentifierOffset = data.ReadUInt32(); component.DescriptorOffset = data.ReadUInt32(); component.DisplayNameOffset = data.ReadUInt32(); - component.Reserved0 = data.ReadBytes(2); + component.Reserved0 = data.ReadUInt16(); component.ReservedOffset0 = data.ReadUInt32(); component.ReservedOffset1 = data.ReadUInt32(); component.ComponentIndex = data.ReadUInt16(); @@ -595,9 +595,9 @@ namespace SabreTools.Serialization.Deserializers // Read the string if (majorVersion >= 17) - component.Identifier = data.ReadString(Encoding.Unicode); + component.Identifier = data.ReadNullTerminatedUnicodeString(); else - component.Identifier = data.ReadString(Encoding.ASCII); + component.Identifier = data.ReadNullTerminatedAnsiString(); } // Read the display name, if possible @@ -608,9 +608,9 @@ namespace SabreTools.Serialization.Deserializers // Read the string if (majorVersion >= 17) - component.DisplayName = data.ReadString(Encoding.Unicode); + component.DisplayName = data.ReadNullTerminatedUnicodeString(); else - component.DisplayName = data.ReadString(Encoding.ASCII); + component.DisplayName = data.ReadNullTerminatedAnsiString(); } // Read the name, if possible @@ -621,9 +621,9 @@ namespace SabreTools.Serialization.Deserializers // Read the string if (majorVersion >= 17) - component.Name = data.ReadString(Encoding.Unicode); + component.Name = data.ReadNullTerminatedUnicodeString(); else - component.Name = data.ReadString(Encoding.ASCII); + component.Name = data.ReadNullTerminatedAnsiString(); } // Read the CLSID, if possible @@ -656,9 +656,9 @@ namespace SabreTools.Serialization.Deserializers data.Seek(nameOffset + descriptorOffset, SeekOrigin.Begin); if (majorVersion >= 17) - component.FileGroupNames[j] = data.ReadString(Encoding.Unicode) ?? string.Empty; + component.FileGroupNames[j] = data.ReadNullTerminatedUnicodeString() ?? string.Empty; else - component.FileGroupNames[j] = data.ReadString(Encoding.ASCII) ?? string.Empty; + component.FileGroupNames[j] = data.ReadNullTerminatedAnsiString() ?? string.Empty; // Seek back to the original position data.Seek(preNameOffset, SeekOrigin.Begin); @@ -681,9 +681,9 @@ namespace SabreTools.Serialization.Deserializers { // Read the string if (majorVersion >= 17) - return data.ReadString(Encoding.Unicode); + return data.ReadNullTerminatedUnicodeString(); else - return data.ReadString(Encoding.ASCII); + return data.ReadNullTerminatedAnsiString(); } /// @@ -740,9 +740,9 @@ namespace SabreTools.Serialization.Deserializers // Read the string if (majorVersion >= 17) - fileDescriptor.Name = data.ReadString(Encoding.Unicode); + fileDescriptor.Name = data.ReadNullTerminatedUnicodeString(); else - fileDescriptor.Name = data.ReadString(Encoding.ASCII); + fileDescriptor.Name = data.ReadNullTerminatedAnsiString(); } // Seek back to the correct offset