Lines 1-509
Link Here
|
1 |
--- src/common/socks5.c |
|
|
2 |
+++ src/common/socks5.c |
3 |
@@ -466,13 +466,15 @@ error: |
4 |
* Return 0 on success or else a negative value. |
5 |
*/ |
6 |
ATTR_HIDDEN |
7 |
-int socks5_recv_connect_reply(struct connection *conn) |
8 |
+int socks5_recv_connect_reply(struct connection *conn, |
9 |
+ const struct sockaddr *addr) |
10 |
{ |
11 |
int ret; |
12 |
ssize_t ret_recv; |
13 |
unsigned char buffer[22]; /* Maximum size possible (with IPv6). */ |
14 |
struct socks5_reply msg; |
15 |
size_t recv_len; |
16 |
+ char addr_buf[256]; |
17 |
|
18 |
assert(conn); |
19 |
assert(conn->fd >= 0); |
20 |
@@ -507,47 +509,41 @@ int socks5_recv_connect_reply(struct connection *conn) |
21 |
DBG("Socks5 received connect reply - ver: %d, rep: 0x%02x, atype: 0x%02x", |
22 |
msg.ver, msg.rep, msg.atyp); |
23 |
|
24 |
- switch (msg.rep) { |
25 |
- case SOCKS5_REPLY_SUCCESS: |
26 |
+ if (msg.rep == SOCKS5_REPLY_SUCCESS) { |
27 |
DBG("Socks5 connection is successful."); |
28 |
ret = 0; |
29 |
- break; |
30 |
- case SOCKS5_REPLY_FAIL: |
31 |
- ERR("General SOCKS server failure"); |
32 |
- ret = -ECONNREFUSED; |
33 |
- break; |
34 |
- case SOCKS5_REPLY_DENY_RULE: |
35 |
- ERR("Connection not allowed by ruleset"); |
36 |
- ret = -ECONNABORTED; |
37 |
- break; |
38 |
- case SOCKS5_REPLY_NO_NET: |
39 |
- ERR("Network unreachable"); |
40 |
- ret = -ENETUNREACH; |
41 |
- break; |
42 |
- case SOCKS5_REPLY_NO_HOST: |
43 |
- ERR("Host unreachable"); |
44 |
- ret = -EHOSTUNREACH; |
45 |
- break; |
46 |
- case SOCKS5_REPLY_REFUSED: |
47 |
- ERR("Connection refused to Tor SOCKS"); |
48 |
- ret = -ECONNREFUSED; |
49 |
- break; |
50 |
- case SOCKS5_REPLY_TTL_EXP: |
51 |
- ERR("Connection timed out"); |
52 |
- ret = -ETIMEDOUT; |
53 |
- break; |
54 |
- case SOCKS5_REPLY_CMD_NOTSUP: |
55 |
- ERR("Command not supported"); |
56 |
- ret = -ECONNREFUSED; |
57 |
- break; |
58 |
- case SOCKS5_REPLY_ADR_NOTSUP: |
59 |
- ERR("Address type not supported"); |
60 |
- ret = -ECONNREFUSED; |
61 |
- break; |
62 |
- default: |
63 |
- ERR("Socks5 server replied an unknown code %d", msg.rep); |
64 |
- ret = -ECONNABORTED; |
65 |
- break; |
66 |
+ } else { |
67 |
+ ERR("%s while connecting to %s", |
68 |
+ socks5_error_message(msg.rep), |
69 |
+ inet_ntoa_r(((struct sockaddr_in*)addr)->sin_addr, |
70 |
+ addr_buf, sizeof(addr_buf))); |
71 |
+ switch (msg.rep) { |
72 |
+ case SOCKS5_REPLY_FAIL: |
73 |
+ ret = -ECONNREFUSED; |
74 |
+ break; |
75 |
+ case SOCKS5_REPLY_DENY_RULE: |
76 |
+ ret = -ECONNABORTED; |
77 |
+ break; |
78 |
+ case SOCKS5_REPLY_NO_NET: |
79 |
+ ret = -ENETUNREACH; |
80 |
+ break; |
81 |
+ case SOCKS5_REPLY_NO_HOST: |
82 |
+ ret = -EHOSTUNREACH; |
83 |
+ break; |
84 |
+ case SOCKS5_REPLY_REFUSED: |
85 |
+ ret = -ECONNREFUSED; |
86 |
+ break; |
87 |
+ case SOCKS5_REPLY_TTL_EXP: |
88 |
+ ret = -ETIMEDOUT; |
89 |
+ break; |
90 |
+ case SOCKS5_REPLY_CMD_NOTSUP: |
91 |
+ case SOCKS5_REPLY_ADR_NOTSUP: |
92 |
+ ret = -ECONNREFUSED; |
93 |
+ break; |
94 |
+ default: |
95 |
+ ret = -ECONNABORTED; |
96 |
+ break; |
97 |
+ } |
98 |
} |
99 |
|
100 |
error: |
101 |
@@ -623,8 +619,8 @@ error: |
102 |
* Return 0 on success else a negative value. |
103 |
*/ |
104 |
ATTR_HIDDEN |
105 |
-int socks5_recv_resolve_reply(struct connection *conn, void *addr, |
106 |
- size_t addrlen) |
107 |
+int socks5_recv_resolve_reply(struct connection *conn, const char *hostname, |
108 |
+ void *addr, size_t addrlen) |
109 |
{ |
110 |
int ret; |
111 |
size_t recv_len; |
112 |
@@ -648,13 +644,15 @@ int socks5_recv_resolve_reply(struct connection *conn, void *addr, |
113 |
} |
114 |
|
115 |
if (buffer.msg.ver != SOCKS5_VERSION) { |
116 |
- ERR("Bad SOCKS5 version reply"); |
117 |
+ ERR("Bad SOCKS5 version reply: expected %d, receved %d", |
118 |
+ SOCKS5_VERSION, buffer.msg.ver); |
119 |
ret = -ECONNABORTED; |
120 |
goto error; |
121 |
} |
122 |
|
123 |
if (buffer.msg.rep != SOCKS5_REPLY_SUCCESS) { |
124 |
- ERR("Unable to resolve. Status reply: %d", buffer.msg.rep); |
125 |
+ ERR("Unable to resolve host %s: %s (%d)", hostname, |
126 |
+ socks5_error_message(buffer.msg.rep), buffer.msg.rep); |
127 |
ret = -ECONNABORTED; |
128 |
goto error; |
129 |
} |
130 |
@@ -763,7 +761,8 @@ error: |
131 |
* Return 0 on success else a negative value. |
132 |
*/ |
133 |
ATTR_HIDDEN |
134 |
-int socks5_recv_resolve_ptr_reply(struct connection *conn, char **_hostname) |
135 |
+int socks5_recv_resolve_ptr_reply(struct connection *conn, const char *addr, |
136 |
+ char **_hostname) |
137 |
{ |
138 |
int ret; |
139 |
ssize_t ret_recv; |
140 |
@@ -790,7 +789,8 @@ int socks5_recv_resolve_ptr_reply(struct connection *conn, char **_hostname) |
141 |
} |
142 |
|
143 |
if (buffer.msg.rep != SOCKS5_REPLY_SUCCESS) { |
144 |
- ERR("Unable to resolve. Status reply: %d", buffer.msg.rep); |
145 |
+ ERR("Unable to resolve host %s: %s (%d)", addr, |
146 |
+ socks5_error_message(buffer.msg.rep), buffer.msg.rep); |
147 |
ret = -ECONNABORTED; |
148 |
goto error; |
149 |
} |
150 |
@@ -815,11 +815,12 @@ int socks5_recv_resolve_ptr_reply(struct connection *conn, char **_hostname) |
151 |
} |
152 |
|
153 |
*_hostname = hostname; |
154 |
- DBG("[socks5] Resolve reply received: %s", *_hostname); |
155 |
+ DBG("[socks5] Resolve reply received: %s (host %s)", *_hostname, addr); |
156 |
return 0; |
157 |
|
158 |
error: |
159 |
- free(hostname); |
160 |
+ if (hostname) |
161 |
+ free(hostname); |
162 |
return ret; |
163 |
} |
164 |
|
165 |
@@ -849,3 +850,29 @@ void socks5_init(ssize_t (*new_send_data)(int, const void *, size_t), |
166 |
recv_data = new_recv_data; |
167 |
} |
168 |
} |
169 |
+ |
170 |
+const char* socks5_error_message(uint8_t code) |
171 |
+{ |
172 |
+ switch (code) { |
173 |
+ case SOCKS5_REPLY_SUCCESS: |
174 |
+ return "Success"; |
175 |
+ case SOCKS5_REPLY_FAIL: |
176 |
+ return "General server failure"; |
177 |
+ case SOCKS5_REPLY_DENY_RULE: |
178 |
+ return "Connection not allowed by ruleset"; |
179 |
+ case SOCKS5_REPLY_NO_NET: |
180 |
+ return "Network unreachable"; |
181 |
+ case SOCKS5_REPLY_NO_HOST: |
182 |
+ return "Host unreachable"; |
183 |
+ case SOCKS5_REPLY_REFUSED: |
184 |
+ return "Connection to SOCKS server refused"; |
185 |
+ case SOCKS5_REPLY_TTL_EXP: |
186 |
+ return "Connection timed out"; |
187 |
+ case SOCKS5_REPLY_CMD_NOTSUP: |
188 |
+ return "Command not supported"; |
189 |
+ case SOCKS5_REPLY_ADR_NOTSUP: |
190 |
+ return "Address type not supported"; |
191 |
+ default: |
192 |
+ return "Unknown error"; |
193 |
+ } |
194 |
+} |
195 |
--- src/common/socks5.h |
196 |
+++ src/common/socks5.h |
197 |
@@ -145,16 +145,21 @@ int socks5_recv_user_pass_reply(struct connection *conn); |
198 |
|
199 |
/* Connect request. */ |
200 |
int socks5_send_connect_request(struct connection *conn); |
201 |
-int socks5_recv_connect_reply(struct connection *conn); |
202 |
+int socks5_recv_connect_reply(struct connection *conn, |
203 |
+ const struct sockaddr *addr); |
204 |
|
205 |
/* Tor DNS resolve. */ |
206 |
int socks5_send_resolve_request(const char *hostname, struct connection *conn); |
207 |
-int socks5_recv_resolve_reply(struct connection *conn, void *addr, |
208 |
- size_t addrlent); |
209 |
-int socks5_recv_resolve_ptr_reply(struct connection *conn, char **_hostname); |
210 |
+int socks5_recv_resolve_reply(struct connection *conn, const char *hostname, |
211 |
+ void *addr, size_t addrlent); |
212 |
+int socks5_recv_resolve_ptr_reply(struct connection *conn, |
213 |
+ const char *addr, char **_hostname); |
214 |
int socks5_send_resolve_ptr_request(struct connection *conn, const void *ip, int af); |
215 |
|
216 |
void socks5_init(ssize_t (*new_send_data)(int, const void *, size_t), |
217 |
ssize_t (*new_recv_data)(int, void *, size_t)); |
218 |
|
219 |
+/* Print error messages in human readable form. */ |
220 |
+const char* socks5_error_message(uint8_t code); |
221 |
+ |
222 |
#endif /* TORSOCKS_SOCKS_H */ |
223 |
--- src/lib/connect.c |
224 |
+++ src/lib/connect.c |
225 |
@@ -196,7 +196,7 @@ LIBC_CONNECT_RET_TYPE tsocks_connect(LIBC_CONNECT_SIG) |
226 |
} |
227 |
|
228 |
/* Connect the socket to the Tor network. */ |
229 |
- ret = tsocks_connect_to_tor(new_conn); |
230 |
+ ret = tsocks_connect_to_tor(new_conn, addr); |
231 |
if (ret < 0) { |
232 |
ret_errno = -ret; |
233 |
goto error_free; |
234 |
--- src/lib/torsocks.c |
235 |
+++ src/lib/torsocks.c |
236 |
@@ -397,7 +397,7 @@ error: |
237 |
* Return 0 on success or else a negative value being the errno value that |
238 |
* needs to be sent back. |
239 |
*/ |
240 |
-int tsocks_connect_to_tor(struct connection *conn) |
241 |
+int tsocks_connect_to_tor(struct connection *conn, const struct sockaddr *addr) |
242 |
{ |
243 |
int ret; |
244 |
uint8_t socks5_method; |
245 |
@@ -438,7 +438,7 @@ int tsocks_connect_to_tor(struct connection *conn) |
246 |
goto error; |
247 |
} |
248 |
|
249 |
- ret = socks5_recv_connect_reply(conn); |
250 |
+ ret = socks5_recv_connect_reply(conn, addr); |
251 |
if (ret < 0) { |
252 |
goto error; |
253 |
} |
254 |
@@ -518,7 +518,7 @@ int tsocks_tor_resolve(int af, const char *hostname, void *ip_addr) |
255 |
} |
256 |
|
257 |
/* Force IPv4 resolution for now. */ |
258 |
- ret = socks5_recv_resolve_reply(&conn, ip_addr, addr_len); |
259 |
+ ret = socks5_recv_resolve_reply(&conn, hostname, ip_addr, addr_len); |
260 |
if (ret < 0) { |
261 |
goto end_close; |
262 |
} |
263 |
@@ -566,7 +566,7 @@ int tsocks_tor_resolve_ptr(const char *addr, char **ip, int af) |
264 |
} |
265 |
|
266 |
/* Force IPv4 resolution for now. */ |
267 |
- ret = socks5_recv_resolve_ptr_reply(&conn, ip); |
268 |
+ ret = socks5_recv_resolve_ptr_reply(&conn, addr, ip); |
269 |
if (ret < 0) { |
270 |
goto end_close; |
271 |
} |
272 |
--- src/lib/torsocks.h |
273 |
+++ src/lib/torsocks.h |
274 |
@@ -416,7 +416,7 @@ extern struct onion_pool tsocks_onion_pool; |
275 |
|
276 |
extern unsigned int tsocks_cleaned_up; |
277 |
|
278 |
-int tsocks_connect_to_tor(struct connection *conn); |
279 |
+int tsocks_connect_to_tor(struct connection *conn, const struct sockaddr *addr); |
280 |
void *tsocks_find_libc_symbol(const char *symbol, |
281 |
enum tsocks_sym_action action); |
282 |
int tsocks_tor_resolve(int af, const char *hostname, void *ip_addr); |
283 |
--- tests/unit/test_socks5.c |
284 |
+++ tests/unit/test_socks5.c |
285 |
@@ -36,10 +36,11 @@ static struct socks5_request_domain req_name; |
286 |
static struct socks5_request_resolve req_resolve; |
287 |
static struct socks5_request_resolve_ptr req_resolve_ptr; |
288 |
|
289 |
+static struct connection_addr c_addr; |
290 |
+ |
291 |
static struct connection *get_connection_stub(void) |
292 |
{ |
293 |
struct connection *conn = NULL; |
294 |
- struct connection_addr c_addr; |
295 |
|
296 |
connection_addr_set(CONNECTION_DOMAIN_INET, |
297 |
DEFAULT_TOR_ADDRESS, |
298 |
@@ -695,7 +696,7 @@ static void test_socks5_recv_connect_reply_success(void) |
299 |
conn_stub = get_connection_stub(); |
300 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_success_stub); |
301 |
|
302 |
- ret = socks5_recv_connect_reply(conn_stub); |
303 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
304 |
|
305 |
ok(ret == 0, "socks5 reply success"); |
306 |
|
307 |
@@ -711,7 +712,7 @@ static void test_socks5_recv_connect_reply_fail(void) |
308 |
conn_stub = get_connection_stub(); |
309 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_fail_stub); |
310 |
|
311 |
- ret = socks5_recv_connect_reply(conn_stub); |
312 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
313 |
|
314 |
ok(ret == -ECONNREFUSED, "socks5 reply fail"); |
315 |
|
316 |
@@ -727,7 +728,7 @@ static void test_socks5_recv_connect_reply_deny_rule(void) |
317 |
conn_stub = get_connection_stub(); |
318 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_deny_rule_stub); |
319 |
|
320 |
- ret = socks5_recv_connect_reply(conn_stub); |
321 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
322 |
|
323 |
ok(ret == -ECONNABORTED, "socks5 reply deny rule"); |
324 |
|
325 |
@@ -743,7 +744,7 @@ static void test_socks5_recv_connect_reply_no_net(void) |
326 |
conn_stub = get_connection_stub(); |
327 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_no_net_stub); |
328 |
|
329 |
- ret = socks5_recv_connect_reply(conn_stub); |
330 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
331 |
|
332 |
ok(ret == -ENETUNREACH, "socks5 reply no net"); |
333 |
|
334 |
@@ -759,7 +760,7 @@ static void test_socks5_recv_connect_reply_no_host(void) |
335 |
conn_stub = get_connection_stub(); |
336 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_no_host_stub); |
337 |
|
338 |
- ret = socks5_recv_connect_reply(conn_stub); |
339 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
340 |
|
341 |
ok(ret == -EHOSTUNREACH, "socks5 reply no host"); |
342 |
|
343 |
@@ -775,7 +776,7 @@ static void test_socks5_recv_connect_reply_refused(void) |
344 |
conn_stub = get_connection_stub(); |
345 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_refused_stub); |
346 |
|
347 |
- ret = socks5_recv_connect_reply(conn_stub); |
348 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
349 |
|
350 |
ok(ret == -ECONNREFUSED, "socks5 reply refused"); |
351 |
|
352 |
@@ -791,7 +792,7 @@ static void test_socks5_recv_connect_reply_ttl_expired(void) |
353 |
conn_stub = get_connection_stub(); |
354 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_ttl_expired_stub); |
355 |
|
356 |
- ret = socks5_recv_connect_reply(conn_stub); |
357 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
358 |
|
359 |
ok(ret == -ETIMEDOUT, "socks5 reply TTL expired"); |
360 |
|
361 |
@@ -808,7 +809,7 @@ static void test_socks5_recv_connect_reply_cmd_not_supported(void) |
362 |
socks5_init(NULL, |
363 |
socks5_recv_connect_reply_ipv4_cmd_not_supported_stub); |
364 |
|
365 |
- ret = socks5_recv_connect_reply(conn_stub); |
366 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
367 |
|
368 |
ok(ret == -ECONNREFUSED, "socks5 reply command not supported"); |
369 |
|
370 |
@@ -825,7 +826,7 @@ static void test_socks5_recv_connect_reply_addr_not_supported(void) |
371 |
socks5_init(NULL, |
372 |
socks5_recv_connect_reply_ipv4_addr_not_supported_stub); |
373 |
|
374 |
- ret = socks5_recv_connect_reply(conn_stub); |
375 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
376 |
|
377 |
ok(ret == -ECONNREFUSED, "socks5 reply address type not supported"); |
378 |
|
379 |
@@ -841,7 +842,7 @@ static void test_socks5_recv_connect_reply_unkown(void) |
380 |
conn_stub = get_connection_stub(); |
381 |
socks5_init(NULL, socks5_recv_connect_reply_ipv4_unkown_stub); |
382 |
|
383 |
- ret = socks5_recv_connect_reply(conn_stub); |
384 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
385 |
|
386 |
ok(ret == -ECONNABORTED, "socks5 reply unkown code"); |
387 |
|
388 |
@@ -857,7 +858,7 @@ static void test_socks5_recv_connect_reply_ipv6_success(void) |
389 |
conn_stub = get_connection_stub(); |
390 |
socks5_init(NULL, socks5_recv_connect_reply_ipv6_success_stub); |
391 |
|
392 |
- ret = socks5_recv_connect_reply(conn_stub); |
393 |
+ ret = socks5_recv_connect_reply(conn_stub, (struct sockaddr *) &c_addr.u.sin); |
394 |
|
395 |
ok(ret == 0, "socks5 reply IPv6 success"); |
396 |
|
397 |
@@ -931,7 +932,7 @@ static void test_socks5_recv_resolve_reply_valid(void) |
398 |
conn_stub = get_connection_stub(); |
399 |
socks5_init(NULL, socks5_recv_resolve_reply_ipv4_stub); |
400 |
|
401 |
- ret = socks5_recv_resolve_reply(conn_stub, &ipv4_addr, sizeof(uint32_t)); |
402 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &ipv4_addr, sizeof(uint32_t)); |
403 |
|
404 |
inet_ntop(AF_INET, &ipv4_addr, ip_str, INET_ADDRSTRLEN); |
405 |
|
406 |
@@ -947,7 +948,7 @@ static void test_socks5_recv_resolve_reply_valid(void) |
407 |
conn_stub = get_connection_ipv6_stub(); |
408 |
socks5_init(NULL, socks5_recv_resolve_reply_ipv6_stub); |
409 |
|
410 |
- ret = socks5_recv_resolve_reply(conn_stub, &ipv6_addr, sizeof(ipv6_addr)); |
411 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &ipv6_addr, sizeof(ipv6_addr)); |
412 |
|
413 |
inet_ntop(AF_INET6, &ipv6_addr, ip_str, INET6_ADDRSTRLEN); |
414 |
|
415 |
@@ -968,7 +969,7 @@ static void test_socks5_recv_resolve_reply_failure(void) |
416 |
conn_stub = get_connection_stub(); |
417 |
socks5_init(NULL, socks5_recv_data_error_stub); |
418 |
|
419 |
- ret = socks5_recv_resolve_reply(conn_stub, &dummy_ip_addr, |
420 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &dummy_ip_addr, |
421 |
sizeof(dummy_ip_addr)); |
422 |
|
423 |
ok(ret == -1, "socks5 resolve reply returns recv error code"); |
424 |
@@ -986,7 +987,7 @@ static void test_socks5_recv_resolve_reply_incorrect_version(void) |
425 |
conn_stub = get_connection_stub(); |
426 |
socks5_init(NULL, socks5_recv_resolve_reply_incorrect_version_stub); |
427 |
|
428 |
- ret = socks5_recv_resolve_reply(conn_stub, &dummy_ip_addr, |
429 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &dummy_ip_addr, |
430 |
sizeof(dummy_ip_addr)); |
431 |
|
432 |
ok(ret == -ECONNABORTED, "socks5 resolve reply incorrect version"); |
433 |
@@ -1004,7 +1005,7 @@ static void test_socks5_recv_resolve_reply_response_error(void) |
434 |
conn_stub = get_connection_stub(); |
435 |
socks5_init(NULL, socks5_recv_resolve_reply_response_error_stub); |
436 |
|
437 |
- ret = socks5_recv_resolve_reply(conn_stub, &dummy_ip_addr, |
438 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &dummy_ip_addr, |
439 |
sizeof(dummy_ip_addr)); |
440 |
|
441 |
ok(ret == -ECONNABORTED, "socks5 resolve reply response error"); |
442 |
@@ -1022,7 +1023,7 @@ static void test_socks5_recv_resolve_reply_address_type_error(void) |
443 |
conn_stub = get_connection_stub(); |
444 |
socks5_init(NULL, socks5_recv_resolve_reply_address_type_error_stub); |
445 |
|
446 |
- ret = socks5_recv_resolve_reply(conn_stub, &dummy_ip_addr, |
447 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &dummy_ip_addr, |
448 |
sizeof(dummy_ip_addr)); |
449 |
|
450 |
ok(ret == -EINVAL, "socks5 resolve reply address type error"); |
451 |
@@ -1040,7 +1041,7 @@ static void test_socks5_recv_resolve_reply_addrlen_error(void) |
452 |
conn_stub = get_connection_stub(); |
453 |
socks5_init(NULL, socks5_recv_resolve_reply_addrlen_error_stub); |
454 |
|
455 |
- ret = socks5_recv_resolve_reply(conn_stub, &dummy_ip_addr, 1); |
456 |
+ ret = socks5_recv_resolve_reply(conn_stub, "test", &dummy_ip_addr, 1); |
457 |
|
458 |
ok(ret == -EINVAL, "socks5 resolve reply address length error"); |
459 |
|
460 |
@@ -1134,7 +1135,8 @@ static void test_socks5_recv_resolve_ptr_reply_valid(void) |
461 |
conn_stub = get_connection_stub(); |
462 |
socks5_init(NULL, socks5_recv_resolve_ptr_reply_stub); |
463 |
|
464 |
- ret = socks5_recv_resolve_ptr_reply(conn_stub, &hostname); |
465 |
+ ret = socks5_recv_resolve_ptr_reply(conn_stub, CONNECTION_DOMAIN_INET, |
466 |
+ &hostname); |
467 |
|
468 |
ok(ret == 0 && |
469 |
strncmp(hostname, "example.org", strlen(hostname)) == 0, |
470 |
@@ -1154,7 +1156,8 @@ static void test_socks5_recv_resolve_ptr_reply_failure(void) |
471 |
conn_stub = get_connection_stub(); |
472 |
socks5_init(NULL, socks5_recv_data_error_stub); |
473 |
|
474 |
- ret = socks5_recv_resolve_ptr_reply(conn_stub, &hostname); |
475 |
+ ret = socks5_recv_resolve_ptr_reply(conn_stub, CONNECTION_DOMAIN_INET, |
476 |
+ &hostname); |
477 |
|
478 |
ok(ret == -1, "socks5 recv resolve ptr reply returns recv error code"); |
479 |
|
480 |
@@ -1172,7 +1175,8 @@ static void test_socks5_recv_resolve_ptr_reply_incorrect_version(void) |
481 |
conn_stub = get_connection_stub(); |
482 |
socks5_init(NULL, socks5_recv_resolve_reply_incorrect_version_stub); |
483 |
|
484 |
- ret = socks5_recv_resolve_ptr_reply(conn_stub, &hostname); |
485 |
+ ret = socks5_recv_resolve_ptr_reply(conn_stub, CONNECTION_DOMAIN_INET, |
486 |
+ &hostname); |
487 |
|
488 |
ok(ret == -ECONNABORTED, "socks5 recv resolve ptr reply incorrect version"); |
489 |
|
490 |
@@ -1190,7 +1194,8 @@ static void test_socks5_recv_resolve_ptr_reply_response_error(void) |
491 |
conn_stub = get_connection_stub(); |
492 |
socks5_init(NULL, socks5_recv_resolve_reply_response_error_stub); |
493 |
|
494 |
- ret = socks5_recv_resolve_ptr_reply(conn_stub, &hostname); |
495 |
+ ret = socks5_recv_resolve_ptr_reply(conn_stub, CONNECTION_DOMAIN_INET, |
496 |
+ &hostname); |
497 |
|
498 |
ok(ret == -ECONNABORTED, "socks5 recv resolve ptr reply response error"); |
499 |
|
500 |
@@ -1208,7 +1213,8 @@ static void test_socks5_recv_resolve_ptr_reply_atyp_error(void) |
501 |
conn_stub = get_connection_stub(); |
502 |
socks5_init(NULL, socks5_recv_resolve_ptr_reply_atyp_error_stub); |
503 |
|
504 |
- ret = socks5_recv_resolve_ptr_reply(conn_stub, &hostname); |
505 |
+ ret = socks5_recv_resolve_ptr_reply(conn_stub, CONNECTION_DOMAIN_INET, |
506 |
+ &hostname); |
507 |
|
508 |
ok(ret == -EINVAL, "socks5 recv resolve ptr reply atyp error"); |
509 |
|