From 9e8cbeb8df4b0f372ed5fe81113a77348c0b10f5 Mon Sep 17 00:00:00 2001 From: Charles Lohr Date: Tue, 7 Dec 2004 05:53:03 +0000 Subject: [PATCH] Verify that we won't call a method on a non-existant element. This seems to be the root of a handfull of crashes. --- stepmania/src/NetworkSyncServer.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/stepmania/src/NetworkSyncServer.cpp b/stepmania/src/NetworkSyncServer.cpp index cd7a8f43fb..04b0d7ca27 100644 --- a/stepmania/src/NetworkSyncServer.cpp +++ b/stepmania/src/NetworkSyncServer.cpp @@ -515,7 +515,8 @@ void StepManiaLanServer::SendStatsToClients() void StepManiaLanServer::SendNetPacket(const unsigned int client, PacketFunctions& Packet) { - Client[client]->clientSocket.SendPack((char*)Packet.Data, Packet.Position); + if ( client < Client.size() ) + Client[client]->clientSocket.SendPack((char*)Packet.Data, Packet.Position); } void StepManiaLanServer::StatsNameColumn(PacketFunctions &data, vector &playresPtr) @@ -592,7 +593,8 @@ void StepManiaLanServer::NewClientCheck() void StepManiaLanServer::SendValue(uint8_t value, const unsigned int clientNum) { - Client[clientNum]->clientSocket.SendPack((char*)&value, sizeof(uint8_t)); + if ( clientNum < Client.size() ) + Client[clientNum]->clientSocket.SendPack((char*)&value, sizeof(uint8_t)); } void StepManiaLanServer::AnalizeChat(PacketFunctions &Packet, const unsigned int clientNum) @@ -814,11 +816,12 @@ void StepManiaLanServer::ServerChat(const CString& message) bool StepManiaLanServer::CheckConnection(const unsigned int clientNum) { //If there is an error close the socket. - if (Client[clientNum]->clientSocket.IsError()) - { - Disconnect(clientNum); - return false; - } + if ( clientNum < Client.size() ) + if (Client[clientNum]->clientSocket.IsError()) + { + Disconnect(clientNum); + return false; + } return true; }