[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Add RESOLVE (0xF0) command to socks4_client_request
commit b160929c2274a6a0b6b53a25f3a384369da60865
Author: rl1987 <rl1987@xxxxxxxxxxxxxxxx>
Date: Tue May 15 11:49:07 2018 +0200
Add RESOLVE (0xF0) command to socks4_client_request
---
src/trunnel/socks5.c | 12 ++++++------
src/trunnel/socks5.h | 1 +
src/trunnel/socks5.trunnel | 3 ++-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/trunnel/socks5.c b/src/trunnel/socks5.c
index 7bc6e5fe7..1d6f56dfa 100644
--- a/src/trunnel/socks5.c
+++ b/src/trunnel/socks5.c
@@ -345,7 +345,7 @@ socks4_client_request_get_command(const socks4_client_request_t *inp)
int
socks4_client_request_set_command(socks4_client_request_t *inp, uint8_t val)
{
- if (! ((val == CMD_BIND || val == CMD_CONNECT || val == CMD_RESOLVE_PTR))) {
+ if (! ((val == CMD_BIND || val == CMD_CONNECT || val == CMD_RESOLVE || val == CMD_RESOLVE_PTR))) {
TRUNNEL_SET_ERROR_CODE(inp);
return -1;
}
@@ -413,7 +413,7 @@ socks4_client_request_check(const socks4_client_request_t *obj)
return "A set function failed on this object";
if (! (obj->version == 4))
return "Integer out of bounds";
- if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE_PTR))
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR))
return "Integer out of bounds";
if (NULL == obj->username)
return "Missing username";
@@ -696,7 +696,7 @@ socks4_client_request_encoded_len(const socks4_client_request_t *obj)
/* Length of u8 version IN [4] */
result += 1;
- /* Length of u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE_PTR] */
+ /* Length of u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
result += 1;
/* Length of u16 port */
@@ -1006,7 +1006,7 @@ socks4_client_request_encode(uint8_t *output, const size_t avail, const socks4_c
trunnel_set_uint8(ptr, (obj->version));
written += 1; ptr += 1;
- /* Encode u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE_PTR] */
+ /* Encode u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
trunnel_assert(written <= avail);
if (avail - written < 1)
goto truncated;
@@ -1354,11 +1354,11 @@ socks4_client_request_parse_into(socks4_client_request_t *obj, const uint8_t *in
if (! (obj->version == 4))
goto fail;
- /* Parse u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE_PTR] */
+ /* Parse u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
CHECK_REMAINING(1, truncated);
obj->command = (trunnel_get_uint8(ptr));
remaining -= 1; ptr += 1;
- if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE_PTR))
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR))
goto fail;
/* Parse u16 port */
diff --git a/src/trunnel/socks5.h b/src/trunnel/socks5.h
index fb3c03160..8bc5af109 100644
--- a/src/trunnel/socks5.h
+++ b/src/trunnel/socks5.h
@@ -11,6 +11,7 @@
#define CMD_CONNECT 1
#define CMD_BIND 2
#define CMD_UDP_ASSOCIATE 3
+#define CMD_RESOLVE 240
#define CMD_RESOLVE_PTR 241
#define ATYPE_IPV4 1
#define ATYPE_IPV6 4
diff --git a/src/trunnel/socks5.trunnel b/src/trunnel/socks5.trunnel
index ab53a4315..4818d1408 100644
--- a/src/trunnel/socks5.trunnel
+++ b/src/trunnel/socks5.trunnel
@@ -16,6 +16,7 @@ const CMD_CONNECT = 1;
const CMD_BIND = 2;
const CMD_UDP_ASSOCIATE = 3;
// This is a tor extension
+const CMD_RESOLVE = 0xF0;
const CMD_RESOLVE_PTR = 0xF1;
const ATYPE_IPV4 = 1;
@@ -72,7 +73,7 @@ struct socks5_server_userpath_auth {
struct socks4_client_request {
u8 version IN [4];
- u8 command IN [CMD_CONNECT,CMD_BIND,CMD_RESOLVE_PTR];
+ u8 command IN [CMD_CONNECT,CMD_BIND,CMD_RESOLVE,CMD_RESOLVE_PTR];
u16 port;
u32 addr;
nulterm username;
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits