diff options
| author | Dentomologist <dentomologist@gmail.com> | 2026-06-17 13:36:11 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-17 13:36:11 -0700 |
| commit | 43210d14309b2028cc045fae695c879ef26c9ce5 (patch) | |
| tree | 89e56d85e00cea90a0e19042b55dd733c3a228eb | |
| parent | 144d19433aa734c19c34e5978a1b817d2aa12663 (diff) | |
| parent | 32eaf7961f0f76a49fe397de927b088bebd408e4 (diff) | |
Merge pull request #14685 from JosJuice/netplayclient-pad-index
NetPlayClient: Check for invalid pad indices
| -rw-r--r-- | Source/Core/Core/NetPlayClient.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index 6231273c8a..8c38fc0b53 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -680,16 +680,17 @@ void NetPlayClient::OnPadData(sf::Packet& packet) GCPadStatus pad; packet >> pad.button; - if (!m_gba_config.at(map).enabled) + if (static_cast<size_t>(map) < m_gba_config.size() && !m_gba_config.at(map).enabled) { packet >> pad.analogA >> pad.analogB >> pad.stickX >> pad.stickY >> pad.substickX >> pad.substickY >> pad.triggerLeft >> pad.triggerRight >> pad.isConnected; } - // Trusting server for good map value (>=0 && <4) - // add to pad buffer - m_pad_buffer.at(map).Push(pad); - m_gc_pad_event.Set(); + if (static_cast<size_t>(map) < m_pad_buffer.size()) + { + m_pad_buffer.at(map).Push(pad); + m_gc_pad_event.Set(); + } } } @@ -702,20 +703,22 @@ void NetPlayClient::OnPadHostData(sf::Packet& packet) GCPadStatus pad; packet >> pad.button; - if (!m_gba_config.at(map).enabled) + if (static_cast<size_t>(map) < m_gba_config.size() && !m_gba_config.at(map).enabled) { packet >> pad.analogA >> pad.analogB >> pad.stickX >> pad.stickY >> pad.substickX >> pad.substickY >> pad.triggerLeft >> pad.triggerRight >> pad.isConnected; } - // Trusting server for good map value (>=0 && <4) - // write to last status - m_last_pad_status[map] = pad; + if (static_cast<size_t>(map) < m_last_pad_status.size()) + m_last_pad_status[map] = pad; - if (!m_first_pad_status_received[map]) + if (static_cast<size_t>(map) < m_first_pad_status_received.size()) { - m_first_pad_status_received[map] = true; - m_first_pad_status_received_event.Set(); + if (!m_first_pad_status_received[map]) + { + m_first_pad_status_received[map] = true; + m_first_pad_status_received_event.Set(); + } } } } @@ -740,10 +743,11 @@ void NetPlayClient::OnWiimoteData(sf::Packet& packet) pad.length = 0; } - // Trusting server for good map value (>=0 && <4) - // add to pad buffer - m_wiimote_buffer.at(map).Push(pad); - m_wii_pad_event.Set(); + if (static_cast<size_t>(map) < m_wiimote_buffer.size()) + { + m_wiimote_buffer.at(map).Push(pad); + m_wii_pad_event.Set(); + } } } |
