From 575caeda9289cf342361bf8039a4242935f8d6f1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 26 Sep 2025 16:38:56 -0400 Subject: [PATCH] Make fixes from manual testing --- SabreTools.Serialization/Readers/AdvancedInstaller.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SabreTools.Serialization/Readers/AdvancedInstaller.cs b/SabreTools.Serialization/Readers/AdvancedInstaller.cs index ccc4927d..d47d1126 100644 --- a/SabreTools.Serialization/Readers/AdvancedInstaller.cs +++ b/SabreTools.Serialization/Readers/AdvancedInstaller.cs @@ -33,11 +33,14 @@ namespace SabreTools.Serialization.Readers // Set the footer sfx.Footer = footer; - // Seek to the entry table offset + // Get to the entry table offset long tableOffset = initialOffset + footer.TablePointer; if (tableOffset < initialOffset || tableOffset >= data.Length) return null; + // Seek to the entry table + data.Seek(tableOffset, SeekOrigin.Begin); + // Try to parse the entry table var table = ParseTable(data, footer.EntryCount); if (table.Length != footer.EntryCount) @@ -72,6 +75,9 @@ namespace SabreTools.Serialization.Readers // Set a maximum of 10 iterations to find the signature int iterations = 10; + // Seek backward to the first point it could be + data.Seek(-10, SeekOrigin.Current); + // Search backward for the signature bool signatureFound = false; do @@ -85,6 +91,7 @@ namespace SabreTools.Serialization.Readers } iterations--; + data.Seek(-11, SeekOrigin.Current); } while (iterations > 0);