Merge branch 'tor-gitlab/mr/359'

This commit is contained in:
David Goulet 2021-05-27 10:12:16 -04:00
commit 111e6e7f26

View File

@ -253,7 +253,7 @@ build_socks_resolve_request(uint8_t **out,
} }
static void static void
onion_warning(const char *hostname) onion_hs_warning(const char *hostname)
{ {
log_warn(LD_NET, log_warn(LD_NET,
"%s is a hidden service; those don't have IP addresses. " "%s is a hidden service; those don't have IP addresses. "
@ -264,6 +264,15 @@ onion_warning(const char *hostname)
hostname); hostname);
} }
static void
onion_exit_warning(const char *hostname)
{
log_warn(LD_NET,
"%s is a link pointing to an exit node; however, .exit domains"
"have been long defunct and are not valid anymore.",
hostname);
}
/** Given a <b>len</b>-byte SOCKS4a response in <b>response</b>, set /** Given a <b>len</b>-byte SOCKS4a response in <b>response</b>, set
* *<b>addr_out</b> to the address it contains (in host order). * *<b>addr_out</b> to the address it contains (in host order).
* Return 0 on success, -1 on error. * Return 0 on success, -1 on error.
@ -306,9 +315,15 @@ parse_socks4a_resolve_response(const char *hostname,
if (status != 90) { if (status != 90) {
log_warn(LD_NET,"Got status response '%d': socks request failed.", status); log_warn(LD_NET,"Got status response '%d': socks request failed.", status);
if (!strcasecmpend(hostname, ".onion")) { if (!strcasecmpend(hostname, ".onion")) {
onion_warning(hostname); onion_hs_warning(hostname);
result = -1; goto cleanup; result = -1; goto cleanup;
} }
if (!strcasecmpend(hostname, ".exit")) {
onion_exit_warning(hostname);
result = -1; goto cleanup;
}
result = -1; goto cleanup; result = -1; goto cleanup;
} }
@ -493,7 +508,11 @@ do_resolve(const char *hostname,
(unsigned)reply_field, (unsigned)reply_field,
socks5_reason_to_string(reply_field)); socks5_reason_to_string(reply_field));
if (reply_field == 4 && !strcasecmpend(hostname, ".onion")) { if (reply_field == 4 && !strcasecmpend(hostname, ".onion")) {
onion_warning(hostname); onion_hs_warning(hostname);
}
if (reply_field == 4 && !strcasecmpend(hostname, ".exit")) {
onion_exit_warning(hostname);
} }
socks5_server_reply_free(reply); socks5_server_reply_free(reply);