diff options
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/buffers.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c index 2a88382501..de0c219e85 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -1336,6 +1336,10 @@ log_unsafe_socks_warning(int socks_protocol, const char *address, socks_protocol, address, (int)port); } +/** Do not attempt to parse socks messages longer than this. This value is + * actually significantly higher than the longest possible socks message. */ +#define MAX_SOCKS_MESSAGE_LEN 512 + /** There is a (possibly incomplete) socks handshake on <b>buf</b>, of one * of the forms * - socks4: "socksheader username\\0" @@ -1377,7 +1381,7 @@ fetch_from_buf_socks(buf_t *buf, socks_request_t *req, if (buf->datalen < 2) /* version and another byte */ return 0; - buf_pullup(buf, 128, 0); + buf_pullup(buf, MAX_SOCKS_MESSAGE_LEN, 0); tor_assert(buf->head && buf->head->datalen >= 2); socksver = *buf->head->data; |