Skip to content

Commit f130ed8

Browse files
committed
[GEN][ZH] Fix heap-use-after-free in DisconnectManager::update()
1 parent 6026f2c commit f130ed8

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

Generals/Code/GameEngine/Source/GameNetwork/DisconnectManager.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,13 @@ void DisconnectManager::update(ConnectionManager *conMgr) {
139139
//use next ping server
140140
static size_t serverIndex = 0;
141141
serverIndex++;
142-
if( serverIndex >= TheGameSpyConfig->getPingServers().size() )
142+
143+
AsciiStringList pingServers = TheGameSpyConfig->getPingServers();
144+
145+
if( serverIndex >= pingServers.size() )
143146
serverIndex = 0; //wrap back to first ping server
144147

145-
std::list<AsciiString>::iterator it = TheGameSpyConfig->getPingServers().begin();
148+
std::list<AsciiString>::iterator it = pingServers.begin();
146149
for( size_t i = 0; i < serverIndex; i++ )
147150
it++;
148151

GeneralsMD/Code/GameEngine/Source/GameNetwork/DisconnectManager.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,13 @@ void DisconnectManager::update(ConnectionManager *conMgr) {
139139
//use next ping server
140140
static size_t serverIndex = 0;
141141
serverIndex++;
142-
if( serverIndex >= TheGameSpyConfig->getPingServers().size() )
142+
143+
AsciiStringList pingServers = TheGameSpyConfig->getPingServers();
144+
145+
if( serverIndex >= pingServers.size() )
143146
serverIndex = 0; //wrap back to first ping server
144147

145-
std::list<AsciiString>::iterator it = TheGameSpyConfig->getPingServers().begin();
148+
std::list<AsciiString>::iterator it = pingServers.begin();
146149
for( size_t i = 0; i < serverIndex; i++ )
147150
it++;
148151

0 commit comments

Comments
 (0)