From 8e745db34ecba5e2b8fd12564420fc20707daa43 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 30 Jul 2025 15:18:27 -0400 Subject: [PATCH] Fix MS-CAB block continuation --- BinaryObjectScanner/FileType/MicrosoftCAB.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/BinaryObjectScanner/FileType/MicrosoftCAB.cs b/BinaryObjectScanner/FileType/MicrosoftCAB.cs index 0af92035..ac751e21 100644 --- a/BinaryObjectScanner/FileType/MicrosoftCAB.cs +++ b/BinaryObjectScanner/FileType/MicrosoftCAB.cs @@ -276,14 +276,17 @@ namespace BinaryObjectScanner.FileType byte[] blockData = db.CompressedData; // If the block is continued, append + bool continuedBlock = false; if (db.UncompressedSize == 0) { - var nextBlock = dataBlocks[i++]; + var nextBlock = dataBlocks[i + 1]; byte[]? nextData = nextBlock.CompressedData; if (nextData == null) continue; + continuedBlock = true; blockData = [.. blockData, .. nextData]; + db.CompressedSize += nextBlock.CompressedSize; db.UncompressedSize = nextBlock.UncompressedSize; } @@ -304,6 +307,9 @@ namespace BinaryObjectScanner.FileType // Write the uncompressed data block ms.Write(data, 0, data.Length); ms.Flush(); + + // Increment additionally if we had a continued block + if (continuedBlock) i++; } return ms;