mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Add RESOLVE (0xF0) command to socks4_client_request
This commit is contained in:
parent
9155e08450
commit
b160929c22
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user