From 610613ee76f609346146cc0389418abcd290c143 Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Sun, 23 May 2021 05:46:25 +1200 Subject: [PATCH] Use correct mask for Fake VMem Shouldn't have any behaviour change for regular usage as both masks are 32MB by default. But fixes theoretical buffer overrun when memory size override is used. --- Source/Core/Core/PowerPC/MMU.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp index 3adf10a294..a7b35364ec 100644 --- a/Source/Core/Core/PowerPC/MMU.cpp +++ b/Source/Core/Core/PowerPC/MMU.cpp @@ -239,7 +239,7 @@ static T ReadFromHardware(u32 em_address) if (Memory::m_pFakeVMEM && ((em_address & 0xFE000000) == 0x7E000000)) { T value; - std::memcpy(&value, &Memory::m_pFakeVMEM[em_address & Memory::GetRamMask()], sizeof(T)); + std::memcpy(&value, &Memory::m_pFakeVMEM[em_address & Memory::GetFakeVMemMask()], sizeof(T)); return bswap(value); } @@ -330,7 +330,8 @@ static void WriteToHardware(u32 em_address, const T data) if (Memory::m_pFakeVMEM && ((em_address & 0xFE000000) == 0x7E000000)) { const T swapped_data = bswap(data); - std::memcpy(&Memory::m_pFakeVMEM[em_address & Memory::GetRamMask()], &swapped_data, sizeof(T)); + std::memcpy(&Memory::m_pFakeVMEM[em_address & Memory::GetFakeVMemMask()], &swapped_data, + sizeof(T)); return; }