From 0649fa14c1618fe98116dfc07d921f89f23d968e Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Thu, 24 Aug 2006 04:51:55 +0000 Subject: [PATCH] make our socks5 handling more robust to broken socks clients: throw out everything waiting on the buffer in between socks handshake phases, since they can't possibly (so the theory goes) have predicted what we plan to respond to them. svn:r8223 --- src/or/buffers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/buffers.c b/src/or/buffers.c index 69cfd30d36..20fa700a04 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -953,7 +953,9 @@ fetch_from_buf_socks(buf_t *buf, socks_request_t *req, req->reply[1] = '\xFF'; /* reject all methods */ return -1; } - buf_remove_from_front(buf,2+nummethods); /* remove packet from buf */ + /* remove packet from buf. also remove any other extraneous + * bytes, to support broken socks clients. */ + buf_clear(buf); req->replylen = 2; /* 2 bytes of response */ req->reply[0] = 5; /* socks5 reply */