From 6a0c49d05e2d71db068c001da127755bc5d5e7e8 Mon Sep 17 00:00:00 2001 From: Scott Ludwig Date: Sat, 4 Jun 2016 16:07:01 -0700 Subject: [PATCH] Fix memory overwrite bug in memory manager Surprising this has been in the code this long. --- game/memmgr.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/game/memmgr.cpp b/game/memmgr.cpp index 6cd6794..07f6f10 100644 --- a/game/memmgr.cpp +++ b/game/memmgr.cpp @@ -1041,7 +1041,11 @@ void MemMgr::WriteHeader(Heap *pheap, MemHeader *pmhdrDst, MemHeader *pmhdrSrc, memcpy(pmhdrDst, pmhdrSrc, cb); } #else - memcpy(pmhdrDst, pmhdrSrc, cb); + if (pmhdrSrc + cb <= pmhdrDst || pmhdrDst + cb <= pmhdrSrc) { + memcpy(pmhdrDst, pmhdrSrc, cb); + } else { + memmove(pmhdrDst, pmhdrSrc, cb); + } #endif }