From 715b9eb156026e508d81ee5ec54e7f2a7ad186f9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 15 Dec 2022 12:20:06 -0800 Subject: [PATCH] Fix MS-CAB info --- BurnOutSharp.Builder/MicrosoftCabinet.cs | 6 +++++- BurnOutSharp.Wrappers/MicrosoftCabinet.cs | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/BurnOutSharp.Builder/MicrosoftCabinet.cs b/BurnOutSharp.Builder/MicrosoftCabinet.cs index 42ac0f0c..26f3459e 100644 --- a/BurnOutSharp.Builder/MicrosoftCabinet.cs +++ b/BurnOutSharp.Builder/MicrosoftCabinet.cs @@ -1,4 +1,5 @@ -using System.IO; +using System.Collections.Generic; +using System.IO; using System.Text; using BurnOutSharp.Models.MicrosoftCabinet; using BurnOutSharp.Utilities; @@ -234,6 +235,8 @@ namespace BurnOutSharp.Builder if (folder.CabStartOffset > 0) { int blockPtr = initialOffset + (int)folder.CabStartOffset; + + folder.DataBlocks = new Dictionary(); for (int i = 0; i < folder.DataCount; i++) { int dataStart = blockPtr; @@ -481,6 +484,7 @@ namespace BurnOutSharp.Builder long currentPosition = data.Position; data.Seek(folder.CabStartOffset, SeekOrigin.Begin); + folder.DataBlocks = new Dictionary(); for (int i = 0; i < folder.DataCount; i++) { CFDATA dataBlock = ParseDataBlock(data, header.DataReservedSize); diff --git a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs index 0d4717c4..96a94cd0 100644 --- a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs +++ b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs @@ -297,7 +297,10 @@ namespace BurnOutSharp.Wrappers Console.WriteLine($" Header reserved size: {HeaderReservedSize}"); Console.WriteLine($" Folder reserved size: {FolderReservedSize}"); Console.WriteLine($" Data reserved size: {DataReservedSize}"); - Console.WriteLine($" Reserved data = {BitConverter.ToString(ReservedData).Replace("-", " ")}"); + if (ReservedData == null) + Console.WriteLine($" Reserved data = [NULL]"); + else + Console.WriteLine($" Reserved data = {BitConverter.ToString(ReservedData).Replace("-", " ")}"); } if (Flags.HasFlag(Models.MicrosoftCabinet.HeaderFlags.PREV_CABINET)) @@ -335,8 +338,12 @@ namespace BurnOutSharp.Wrappers Console.WriteLine($" Cab start offset = {entry.CabStartOffset}"); Console.WriteLine($" Data count = {entry.DataCount}"); Console.WriteLine($" Compression type = {entry.CompressionType}"); - Console.WriteLine($" Reserved data = {BitConverter.ToString(entry.ReservedData).Replace("-", " ")}"); + if (entry.ReservedData == null) + Console.WriteLine($" Reserved data = [NULL]"); + else + Console.WriteLine($" Reserved data = {BitConverter.ToString(entry.ReservedData).Replace("-", " ")}"); Console.WriteLine(); + Console.WriteLine(" Data Blocks"); Console.WriteLine(" -------------------------"); if (entry.DataBlocks == null || entry.DataBlocks.Count == 0) @@ -351,7 +358,10 @@ namespace BurnOutSharp.Wrappers Console.WriteLine($" Checksum = {block.Value.Checksum}"); Console.WriteLine($" Compressed size = {block.Value.CompressedSize}"); Console.WriteLine($" Uncompressed size = {block.Value.UncompressedSize}"); - Console.WriteLine($" Reserved data = {BitConverter.ToString(block.Value.ReservedData).Replace("-", " ")}"); + if (block.Value.ReservedData == null) + Console.WriteLine($" Reserved data = [NULL]"); + else + Console.WriteLine($" Reserved data = {BitConverter.ToString(block.Value.ReservedData).Replace("-", " ")}"); //Console.WriteLine($" Compressed data = {BitConverter.ToString(block.Value.CompressedData).Replace("-", " ")}"); } }