diff options
| author | JosJuice <josjuice@gmail.com> | 2026-09-20 20:13:19 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2026-09-20 20:13:19 +0200 |
| commit | 56e8b740f18e4bac898a69918fc1f2b411b943f7 (patch) | |
| tree | bf56da3f3b9c8165a7c2639418bc1a7d3b5c823a /Source/Core | |
| parent | ee018d00e60b9eb727489908a8daec5c537f44a8 (diff) | |
GCMemcardDirectory: Add bounds check for m_save_data
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp | 6 |
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; |
