summaryrefslogtreecommitdiff
path: root/network_data.c
diff options
context:
space:
mode:
authorDarkvater <Darkvater@openttd.org>2006-04-05 20:11:01 +0000
committerDarkvater <Darkvater@openttd.org>2006-04-05 20:11:01 +0000
commit55aff858c56e3f327de3f030d347762dc6ad6ea2 (patch)
treebadd698cd191d5490e88203f9017e689ea1e2518 /network_data.c
parent60fdfa9f0e177547c5dc49da6a4d3cc6997b68f6 (diff)
downloadopenttd-55aff858c56e3f327de3f030d347762dc6ad6ea2.tar.xz
(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)
Diffstat (limited to 'network_data.c')
-rw-r--r--network_data.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/network_data.c b/network_data.c
index ffb4bdddc..977e08447 100644
--- a/network_data.c
+++ b/network_data.c
@@ -273,6 +273,7 @@ uint64 NetworkRecv_uint64(NetworkClientState *cs, Packet *packet)
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 @@ void NetworkRecv_string(NetworkClientState *cs, Packet *p, char* buffer, size_t
++pos;
}
p->pos = pos;
+
+ str_validate(bufp);
}
// If PacketSize changes of size, you have to change the 2 packet->size