From 19706bba24b927ca13fab19b009a733efb673185 Mon Sep 17 00:00:00 2001 From: HeroponRikiBestest Date: Thu, 29 Jan 2026 13:59:36 -0500 Subject: [PATCH] Fallback for too large data read size --- SabreTools.Serialization/Readers/PKZIP.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/SabreTools.Serialization/Readers/PKZIP.cs b/SabreTools.Serialization/Readers/PKZIP.cs index d496222e..5fde17b9 100644 --- a/SabreTools.Serialization/Readers/PKZIP.cs +++ b/SabreTools.Serialization/Readers/PKZIP.cs @@ -576,8 +576,15 @@ public class PKZIP : BaseBinaryReader if (extraBytes.Length != obj.ExtraFieldLength) return null; - obj.ExtraFields = ParseExtraFields(obj, extraBytes); - } + try + { + obj.ExtraFields = ParseExtraFields(obj, extraBytes); + } + catch + { + obj.ExtraFields = null; + } + } return obj; } @@ -778,8 +785,14 @@ public class PKZIP : BaseBinaryReader obj.HeaderID = (HeaderID)data.ReadUInt16LittleEndian(ref offset); obj.DataSize = data.ReadUInt16LittleEndian(ref offset); + var readDataSize = obj.DataSize; + if (obj.DataSize >= data.Length - offset) + { + //debug goes here + readDataSize = (ushort)(data.Length - offset); + } if (obj.DataSize > 0) - obj.Data = data.ReadBytes(ref offset, obj.DataSize); + obj.Data = data.ReadBytes(ref offset, readDataSize); return obj; }