mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
Only rewrite a conn's address based on X-Forwarded-For: headers
if it's a parseable public IP address; and stop adding extra quotes to the resulting address. svn:r9505
This commit is contained in:
parent
690c9cc887
commit
7828927a58
@ -79,6 +79,9 @@ Changes in version 0.1.2.7-alpha - 2007-02-06
|
||||
- Call stat() slightly less often; use fstat() when possible.
|
||||
- Refactor the way we handle pending circuits when an OR connection
|
||||
completes or fails, in an attempt to fix a rare crash bug.
|
||||
- Only rewrite a conn's address based on X-Forwarded-For: headers
|
||||
if it's a parseable public IP address; and stop adding extra quotes
|
||||
to the resulting address.
|
||||
|
||||
o Major features:
|
||||
- Weight directory requests by advertised bandwidth. Now we can
|
||||
|
@ -708,8 +708,14 @@ http_set_address_origin(const char *headers, connection_t *conn)
|
||||
if (!fwd)
|
||||
fwd = http_get_header(headers, "X-Forwarded-For: ");
|
||||
if (fwd) {
|
||||
struct in_addr in;
|
||||
if (!tor_inet_aton(fwd, &in) || is_internal_IP(ntohl(in.s_addr), 0)) {
|
||||
log_debug(LD_DIR, "Ignoring unrecognized or internal IP '%s'", fwd);
|
||||
tor_free(fwd);
|
||||
return;
|
||||
}
|
||||
tor_free(conn->address);
|
||||
conn->address = tor_strdup(escaped(fwd));
|
||||
conn->address = tor_strdup(fwd);
|
||||
tor_free(fwd);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user