Mercurial > hg > openttd
changeset 3456:de3e234848a6 draft
(svn r4291) - Fix: validate all received strings for correctness. This fixes potential crashes on invalid clients/servers (thanks test for bringing this to our attention)
author | Darkvater <Darkvater@openttd.org> |
---|---|
date | Wed, 05 Apr 2006 20:11:01 +0000 |
parents | 4060ea113a0b |
children | e8fd835b8972 |
files | network_data.c network_udp.c |
diffstat | 2 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/network_data.c +++ b/network_data.c @@ -273,6 +273,7 @@ void NetworkRecv_string(NetworkClientState *cs, Packet *p, char* buffer, size_t size) { int pos; + char *bufp = buffer; /* Don't allow reading from a closed socket */ if (cs->quited) @@ -289,6 +290,8 @@ ++pos; } p->pos = pos; + + str_validate(bufp); } // If PacketSize changes of size, you have to change the 2 packet->size
--- a/network_udp.c +++ b/network_udp.c @@ -134,9 +134,6 @@ item->info.map_set = NetworkRecv_uint8(&_udp_cs, p); item->info.dedicated = NetworkRecv_uint8(&_udp_cs, p); - str_validate(item->info.server_name); - str_validate(item->info.server_revision); - str_validate(item->info.map_name); if (item->info.server_lang >= NETWORK_NUM_LANGUAGES) item->info.server_lang = 0; if (item->info.map_set >= NUM_LANDSCAPE ) item->info.map_set = 0;