diff options
author | rubidium <rubidium@openttd.org> | 2008-12-28 21:07:45 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-12-28 21:07:45 +0000 |
commit | e626e07bd3083bc876b3cd309a2d58f78cf90bd5 (patch) | |
tree | caa9a1b5f5ce4b37fab3bb77b97803d5b6e3494e /src/network/network_chat_gui.cpp | |
parent | ee952b10d96675a2c20b03d8d7d0fe1cfcecc01b (diff) | |
download | openttd-e626e07bd3083bc876b3cd309a2d58f78cf90bd5.tar.xz |
(svn r14759) -Fix (r14730): tab completion causing out-of-bounds read.
Diffstat (limited to 'src/network/network_chat_gui.cpp')
-rw-r--r-- | src/network/network_chat_gui.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index 4f4447779..43505cf75 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -300,12 +300,14 @@ struct NetworkChatWindow : public QueryStringBaseWindow { /* First, try clients */ if (*item < MAX_CLIENT_SLOTS) { - /* Skip inactive clients */ - NetworkClientInfo *ci; - FOR_ALL_CLIENT_INFOS_FROM(ci, *item + 1) break; - if (ci != NULL) { - *item = ci->index; - return ci->client_name; + if (*item + 1 < GetNetworkClientInfoPoolSize()) { + /* Skip inactive clients */ + NetworkClientInfo *ci; + FOR_ALL_CLIENT_INFOS_FROM(ci, *item + 1) break; + if (ci != NULL) { + *item = ci->index; + return ci->client_name; + } } *item = MAX_CLIENT_SLOTS; } |