From af84474795a8975435165b3bf9edb9f150accd03 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 11 Sep 2025 10:58:15 -0400 Subject: [PATCH] Fix invalid base relocation table parsing --- SabreTools.Serialization/Deserializers/PortableExecutable.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SabreTools.Serialization/Deserializers/PortableExecutable.cs b/SabreTools.Serialization/Deserializers/PortableExecutable.cs index d7c8aeaf..22293763 100644 --- a/SabreTools.Serialization/Deserializers/PortableExecutable.cs +++ b/SabreTools.Serialization/Deserializers/PortableExecutable.cs @@ -511,7 +511,7 @@ namespace SabreTools.Serialization.Deserializers if (obj.BlockSize % 2 != 0) return obj; if (offset + obj.BlockSize > data.Length) - return obj; + return null; int entryCount = ((int)obj.BlockSize - 8) / 2; obj.TypeOffsetFieldEntries = new BaseRelocationTypeOffsetFieldEntry[entryCount]; @@ -539,7 +539,7 @@ namespace SabreTools.Serialization.Deserializers var obj = new List(); int offset = 0; - while (offset < data.Length) + while (offset + 8 <= data.Length) { var block = ParseBaseRelocationBlock(data, ref offset); if (block == null)