From 556627399eea90f35feb998b38c66cf3c571ce09 Mon Sep 17 00:00:00 2001 From: Vladimir Olteanu Date: Wed, 5 Jul 2017 05:38:20 +0300 Subject: [PATCH] parsing socks 5 request: more suggestive code --- src/local.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/local.c b/src/local.c index 0f10047c..cf4f6c28 100644 --- a/src/local.c +++ b/src/local.c @@ -577,12 +577,12 @@ server_recv_cb(EV_P_ ev_io *w, int revents) if (buf->len < request_len + in_addr_len + 2) { return; } - memcpy(abuf->data + abuf->len, buf->data + 4, in_addr_len + 2); + memcpy(abuf->data + abuf->len, buf->data + request_len, in_addr_len + 2); abuf->len += in_addr_len + 2; if (acl || verbose) { - uint16_t p = ntohs(*(uint16_t *)(buf->data + 4 + in_addr_len)); - dns_ntop(AF_INET, (const void *)(buf->data + 4), + uint16_t p = ntohs(*(uint16_t *)(buf->data + request_len + in_addr_len)); + dns_ntop(AF_INET, (const void *)(buf->data + request_len), ip, INET_ADDRSTRLEN); sprintf(port, "%d", p); } @@ -593,13 +593,13 @@ server_recv_cb(EV_P_ ev_io *w, int revents) return; } abuf->data[abuf->len++] = name_len; - memcpy(abuf->data + abuf->len, buf->data + 4 + 1, name_len + 2); + memcpy(abuf->data + abuf->len, buf->data + request_len + 1, name_len + 2); abuf->len += name_len + 2; if (acl || verbose) { uint16_t p = - ntohs(*(uint16_t *)(buf->data + 4 + 1 + name_len)); - memcpy(host, buf->data + 4 + 1, name_len); + ntohs(*(uint16_t *)(buf->data + request_len + 1 + name_len)); + memcpy(host, buf->data + request_len + 1, name_len); host[name_len] = '\0'; sprintf(port, "%d", p); @@ -610,12 +610,12 @@ server_recv_cb(EV_P_ ev_io *w, int revents) if (buf->len < request_len + in6_addr_len + 2) { return; } - memcpy(abuf->data + abuf->len, buf->data + 4, in6_addr_len + 2); + memcpy(abuf->data + abuf->len, buf->data + request_len, in6_addr_len + 2); abuf->len += in6_addr_len + 2; if (acl || verbose) { - uint16_t p = ntohs(*(uint16_t *)(buf->data + 4 + in6_addr_len)); - dns_ntop(AF_INET6, (const void *)(buf->data + 4), + uint16_t p = ntohs(*(uint16_t *)(buf->data + request_len + in6_addr_len)); + dns_ntop(AF_INET6, (const void *)(buf->data + request_len), ip, INET6_ADDRSTRLEN); sprintf(port, "%d", p); }