Module: tools Branch: master Commit: b48ed0abc3eeafe5639223576b3ab246af226c20 URL: http://source.winehq.org/git/tools.git/?a=commit;h=b48ed0abc3eeafe5639223576...
Author: Francois Gouget fgouget@codeweavers.com Date: Wed Mar 27 16:37:51 2013 +0100
testbot/testagentd: Sanity check the list sizes.
This heuristic normally lets us detect and drop connections that use the wrong protocol.
---
testbot/src/testagentd/testagentd.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/testbot/src/testagentd/testagentd.c b/testbot/src/testagentd/testagentd.c index 75782c4..e99dcb4 100644 --- a/testbot/src/testagentd/testagentd.c +++ b/testbot/src/testagentd/testagentd.c @@ -387,10 +387,17 @@ static int skip_entries(SOCKET client, uint32_t count)
static int recv_list_size(SOCKET client, uint32_t *u32) { - int success = recv_raw_uint32(client, u32); - if (success) - debug(" recv_list_size() -> %u\n", *u32); - return success; + if (!recv_raw_uint32(client, u32)) + return 0; + debug(" recv_list_size() -> %u\n", *u32); + + if (*u32 >= 1048576) + { + /* The client is in fact most likely not speaking the right protocol */ + set_status(ST_FATAL, "the list size is too big (%d)", *u32); + return 0; + } + return 1; }
static int expect_list_size(SOCKET client, uint32_t expected)