mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-06-22 12:32:28 -05:00
NetPlay: Validate controller packet indices
This commit is contained in:
parent
1bc93fd16d
commit
29e577d966
|
|
@ -192,6 +192,12 @@ static void ClearPeerPlayerId(ENetPeer* peer)
|
|||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static bool IsValidPadIndex(const T& map_array, PadIndex index)
|
||||
{
|
||||
return index >= 0 && static_cast<size_t>(index) < map_array.size();
|
||||
}
|
||||
|
||||
void NetPlayServer::SetupIndex()
|
||||
{
|
||||
if (!Config::Get(Config::NETPLAY_USE_INDEX) || Config::Get(Config::NETPLAY_INDEX_NAME).empty() ||
|
||||
|
|
@ -814,7 +820,7 @@ unsigned int NetPlayServer::OnData(sf::Packet& packet, Client& player)
|
|||
|
||||
// If the data is not from the correct player,
|
||||
// then disconnect them.
|
||||
if (m_pad_map.at(map) != player.pid)
|
||||
if (!IsValidPadIndex(m_pad_map, map) || m_pad_map.at(map) != player.pid)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -862,6 +868,9 @@ unsigned int NetPlayServer::OnData(sf::Packet& packet, Client& player)
|
|||
PadIndex map;
|
||||
packet >> map;
|
||||
|
||||
if (!IsValidPadIndex(m_pad_map, map))
|
||||
return 1;
|
||||
|
||||
GCPadStatus pad;
|
||||
packet >> pad.button;
|
||||
spac << map << pad.button;
|
||||
|
|
@ -895,7 +904,7 @@ unsigned int NetPlayServer::OnData(sf::Packet& packet, Client& player)
|
|||
|
||||
// If the data is not from the correct player,
|
||||
// then disconnect them.
|
||||
if (m_wiimote_map.at(map) != player.pid)
|
||||
if (!IsValidPadIndex(m_wiimote_map, map) || m_wiimote_map.at(map) != player.pid)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user