[tor-commits] [tor/master] Add RESOLVE (0xF0) command to socks4_client_request

nickm at torproject.org nickm at torproject.org
Sun Jul 15 21:07:27 UTC 2018


commit b160929c2274a6a0b6b53a25f3a384369da60865
Author: rl1987 <rl1987 at sdf.lonestar.org>
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;





More information about the tor-commits mailing list