From ea02a913b2e15b46ece292f29138cd3ee4cf2eb7 Mon Sep 17 00:00:00 2001 From: Adam Lederer Date: Sun, 18 Aug 2024 20:00:11 -0700 Subject: [PATCH] warn instead of assert on case where MemPatch application would exceed size of target buffer (which should never happen, if you're applying the patch to the same type it was generated from) --- src/engine/instrument.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 924169e16..7c3619a3a 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -17,7 +17,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include #include "dataErrors.h" #include "engine.h" #include "instrument.h" @@ -400,7 +399,11 @@ bool MemPatch::calcDiff(const void* pre, const void* post, size_t inputSize) { void MemPatch::applyAndReverse(void* target, size_t targetSize) { if (size==0) return; - assert(offset+size<=targetSize); + if (offset+size>targetSize) { + logW("MemPatch (offset %d, size %d) exceeds target size (%d), can't apply!",offset,size,targetSize); + return; + } + unsigned char* targetBytes=(unsigned char*)target; // swap this->data and its segment on target