diff --git a/SabreTools.Serialization/Wrappers/NewExecutable.cs b/SabreTools.Serialization/Wrappers/NewExecutable.cs
index 765e2f10..aeb1e1a4 100644
--- a/SabreTools.Serialization/Wrappers/NewExecutable.cs
+++ b/SabreTools.Serialization/Wrappers/NewExecutable.cs
@@ -109,6 +109,7 @@ namespace SabreTools.Serialization.Wrappers
///
/// Overlay data, if it exists
///
+ /// Can only cache up to bytes
///
public byte[] OverlayData
{
@@ -154,6 +155,8 @@ namespace SabreTools.Serialization.Wrappers
// Otherwise, cache and return the data
long overlayLength = dataLength - endOfSectionData;
+ overlayLength = Math.Min(overlayLength, int.MaxValue);
+
_overlayData = ReadRangeFromSource((int)endOfSectionData, (int)overlayLength);
return _overlayData;
}
diff --git a/SabreTools.Serialization/Wrappers/PortableExecutable.cs b/SabreTools.Serialization/Wrappers/PortableExecutable.cs
index 65ba8c66..f82eee00 100644
--- a/SabreTools.Serialization/Wrappers/PortableExecutable.cs
+++ b/SabreTools.Serialization/Wrappers/PortableExecutable.cs
@@ -362,6 +362,7 @@ namespace SabreTools.Serialization.Wrappers
///
/// Overlay data, if it exists
///
+ /// Can only cache up to bytes
///
public byte[] OverlayData
{
@@ -407,6 +408,8 @@ namespace SabreTools.Serialization.Wrappers
// Otherwise, cache and return the data
long overlayLength = dataLength - endOfSectionData;
+ overlayLength = Math.Min(overlayLength, int.MaxValue);
+
_overlayData = ReadRangeFromSource(endOfSectionData, (int)overlayLength) ?? [];
return _overlayData;
}