mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +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
|
int
|
||||||
socks4_client_request_set_command(socks4_client_request_t *inp, uint8_t val)
|
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);
|
TRUNNEL_SET_ERROR_CODE(inp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -413,7 +413,7 @@ socks4_client_request_check(const socks4_client_request_t *obj)
|
|||||||
return "A set function failed on this object";
|
return "A set function failed on this object";
|
||||||
if (! (obj->version == 4))
|
if (! (obj->version == 4))
|
||||||
return "Integer out of bounds";
|
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";
|
return "Integer out of bounds";
|
||||||
if (NULL == obj->username)
|
if (NULL == obj->username)
|
||||||
return "Missing 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] */
|
/* Length of u8 version IN [4] */
|
||||||
result += 1;
|
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;
|
result += 1;
|
||||||
|
|
||||||
/* Length of u16 port */
|
/* 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));
|
trunnel_set_uint8(ptr, (obj->version));
|
||||||
written += 1; ptr += 1;
|
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);
|
trunnel_assert(written <= avail);
|
||||||
if (avail - written < 1)
|
if (avail - written < 1)
|
||||||
goto truncated;
|
goto truncated;
|
||||||
@ -1354,11 +1354,11 @@ socks4_client_request_parse_into(socks4_client_request_t *obj, const uint8_t *in
|
|||||||
if (! (obj->version == 4))
|
if (! (obj->version == 4))
|
||||||
goto fail;
|
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);
|
CHECK_REMAINING(1, truncated);
|
||||||
obj->command = (trunnel_get_uint8(ptr));
|
obj->command = (trunnel_get_uint8(ptr));
|
||||||
remaining -= 1; ptr += 1;
|
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;
|
goto fail;
|
||||||
|
|
||||||
/* Parse u16 port */
|
/* Parse u16 port */
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#define CMD_CONNECT 1
|
#define CMD_CONNECT 1
|
||||||
#define CMD_BIND 2
|
#define CMD_BIND 2
|
||||||
#define CMD_UDP_ASSOCIATE 3
|
#define CMD_UDP_ASSOCIATE 3
|
||||||
|
#define CMD_RESOLVE 240
|
||||||
#define CMD_RESOLVE_PTR 241
|
#define CMD_RESOLVE_PTR 241
|
||||||
#define ATYPE_IPV4 1
|
#define ATYPE_IPV4 1
|
||||||
#define ATYPE_IPV6 4
|
#define ATYPE_IPV6 4
|
||||||
|
@ -16,6 +16,7 @@ const CMD_CONNECT = 1;
|
|||||||
const CMD_BIND = 2;
|
const CMD_BIND = 2;
|
||||||
const CMD_UDP_ASSOCIATE = 3;
|
const CMD_UDP_ASSOCIATE = 3;
|
||||||
// This is a tor extension
|
// This is a tor extension
|
||||||
|
const CMD_RESOLVE = 0xF0;
|
||||||
const CMD_RESOLVE_PTR = 0xF1;
|
const CMD_RESOLVE_PTR = 0xF1;
|
||||||
|
|
||||||
const ATYPE_IPV4 = 1;
|
const ATYPE_IPV4 = 1;
|
||||||
@ -72,7 +73,7 @@ struct socks5_server_userpath_auth {
|
|||||||
|
|
||||||
struct socks4_client_request {
|
struct socks4_client_request {
|
||||||
u8 version IN [4];
|
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;
|
u16 port;
|
||||||
u32 addr;
|
u32 addr;
|
||||||
nulterm username;
|
nulterm username;
|
||||||
|
Loading…
Reference in New Issue
Block a user