From 86b33bd3cefd85e18732cea6325daa8b33535ad0 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Sun, 2 Apr 2023 02:19:52 -0700 Subject: [PATCH] fix DeltaSerializer validation checks and add one more --- src/BizHawk.Common/DeltaSerializer.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/BizHawk.Common/DeltaSerializer.cs b/src/BizHawk.Common/DeltaSerializer.cs index ddbeb6da7f..0851199f9e 100644 --- a/src/BizHawk.Common/DeltaSerializer.cs +++ b/src/BizHawk.Common/DeltaSerializer.cs @@ -126,7 +126,7 @@ namespace BizHawk.Common { header = -header; - if (header < dataEnd - dataPos || header < deltaEnd - deltaPos) + if (dataEnd - dataPos < header || deltaEnd - deltaPos < header) { throw new InvalidOperationException("Corrupt delta header!"); } @@ -140,7 +140,7 @@ namespace BizHawk.Common } else // sameness block { - if (header < dataEnd - dataPos) + if (dataEnd - dataPos < header) { throw new InvalidOperationException("Corrupt delta header!"); } @@ -150,6 +150,11 @@ namespace BizHawk.Common dataPos += header; } + + if (dataPos != dataEnd) + { + throw new InvalidOperationException("Did not reach end of data after applying delta!"); + } } } }