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(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;