Skip to content

Commit 86b33bd

Browse files
fix DeltaSerializer validation checks and add one more
1 parent 6f7f94a commit 86b33bd

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/BizHawk.Common/DeltaSerializer.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public static void ApplyDelta<T>(ReadOnlySpan<T> original, Span<T> data, ReadOnl
126126
{
127127
header = -header;
128128

129-
if (header < dataEnd - dataPos || header < deltaEnd - deltaPos)
129+
if (dataEnd - dataPos < header || deltaEnd - deltaPos < header)
130130
{
131131
throw new InvalidOperationException("Corrupt delta header!");
132132
}
@@ -140,7 +140,7 @@ public static void ApplyDelta<T>(ReadOnlySpan<T> original, Span<T> data, ReadOnl
140140
}
141141
else // sameness block
142142
{
143-
if (header < dataEnd - dataPos)
143+
if (dataEnd - dataPos < header)
144144
{
145145
throw new InvalidOperationException("Corrupt delta header!");
146146
}
@@ -150,6 +150,11 @@ public static void ApplyDelta<T>(ReadOnlySpan<T> original, Span<T> data, ReadOnl
150150

151151
dataPos += header;
152152
}
153+
154+
if (dataPos != dataEnd)
155+
{
156+
throw new InvalidOperationException("Did not reach end of data after applying delta!");
157+
}
153158
}
154159
}
155160
}

0 commit comments

Comments
 (0)