Commit 7828927a authored by Roger Dingledine's avatar Roger Dingledine
Browse files

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
parent 690c9cc8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+7 −1
Original line number Diff line number Diff line
@@ -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);
  }
}