From 12e8349ab1d30d24c2ab807ef0252633b9eef4e1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 28 Jul 2025 16:28:13 -0400 Subject: [PATCH] Pad short MS-ZIP blocks --- BinaryObjectScanner/FileType/MicrosoftCAB.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/BinaryObjectScanner/FileType/MicrosoftCAB.cs b/BinaryObjectScanner/FileType/MicrosoftCAB.cs index b02edcea..fc33f6e3 100644 --- a/BinaryObjectScanner/FileType/MicrosoftCAB.cs +++ b/BinaryObjectScanner/FileType/MicrosoftCAB.cs @@ -156,7 +156,7 @@ namespace BinaryObjectScanner.FileType { var db = dataBlocks[i]; if (db?.CompressedData == null) - continue; + continue; // Uncompressed data if ((folder.CompressionType & CompressionType.MASK_TYPE) == CompressionType.TYPE_NONE) @@ -171,8 +171,14 @@ namespace BinaryObjectScanner.FileType long position = ms.Position; mszip.CopyTo(db.CompressedData, ms); long decompressedSize = ms.Position - position; - if (decompressedSize != db.UncompressedSize) - Console.Error.WriteLine($"Data block {i} in folder {folderIndex} did not decompress properly. Expected: {db.UncompressedSize} Got: {decompressedSize}"); + + // Pad to the correct size but throw a warning about this + if (decompressedSize < db.UncompressedSize) + { + Console.Error.WriteLine($"Data block {i} in folder {folderIndex} had mismatching sizes. Expected: {db.UncompressedSize}, Got: {decompressedSize}"); + byte[] padding = new byte[db.UncompressedSize - decompressedSize]; + ms.Write(padding, 0, padding.Length); + } } // Quantum