summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2026-09-20 20:13:19 +0200
committerJosJuice <josjuice@gmail.com>2026-09-20 20:13:19 +0200
commit56e8b740f18e4bac898a69918fc1f2b411b943f7 (patch)
treebf56da3f3b9c8165a7c2639418bc1a7d3b5c823a /Source/Core
parentee018d00e60b9eb727489908a8daec5c537f44a8 (diff)
GCMemcardDirectory: Add bounds check for m_save_data
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp
index 791b471be4..c8d4447f4e 100644
--- a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp
+++ b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp
@@ -553,6 +553,12 @@ inline s32 GCMemcardDirectory::SaveAreaRW(u32 block, bool writing)
m_saves[i].m_dirty = true;
}
+ if (static_cast<size_t>(idx) >= m_saves[i].m_save_data.size())
+ {
+ PanicAlertFmt("Block index ({0}) is larger than the number of available blocks ({1})",
+ idx, m_saves[i].m_save_data.size());
+ return -1;
+ }
m_last_block = block;
m_last_block_address = m_saves[i].m_save_data[idx].m_block.data();
return m_last_block;