Commit a12c3f2c authored by Roger Dingledine's avatar Roger Dingledine
Browse files

some fixes i found in my sandbox


svn:r17771
parent 4a1fd998
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
Changes in version 0.2.1.9-alpha - 2008-12-2?
  o Major features:
  o Security fixes:
    - Never use a connection with a mismatched address to extend a
      circuit, unless that connections is canonical. A canonical
      circuit, unless that connection is canonical. A canonical
      connection is one whose address is authenticated by the router's
      identity key, either in a NETINFO cell or in a router descriptor.

@@ -59,8 +59,6 @@ Changes in version 0.2.1.9-alpha - 2008-12-2?
  o Minor features (controller):
    - New CONSENSUS_ARRIVED event to note when a new consensus has
      been fetched and validated.
    - Finally remove deprecated "EXTENDED_FORMAT" feature. It has
      been called EXTENDED_EVENTS since 0.1.2.4-alpha.
    - When we realize that another process has modified our cached
      descriptors, print out a more useful error message rather than
      triggering an assertion. Fixes bug 885. Patch from Karsten.
@@ -95,7 +93,10 @@ Changes in version 0.2.1.9-alpha - 2008-12-2?
      Bugfix on 0.2.0.18-alpha.

  o Deprecated and removed features:
    - RedirectExits has been removed.  It was deprecated since 0.2.0.3-alpha.
    - RedirectExits has been removed. It was deprecated since
      0.2.0.3-alpha.
    - Finally remove deprecated "EXTENDED_FORMAT" controller feature. It
      has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
    - Cell pools are now always enabled; --disable-cell-pools is ignored.

  o Code simplifications and refactoring:
+17 −17
Original line number Diff line number Diff line
@@ -33,28 +33,12 @@ typedef struct tor_addr_t
  } addr;
} tor_addr_t;

/** Return an IPv4 address in network order for <b>a</b>, or 0 if
 * <b>a</b> is not an IPv4 address. */
static INLINE const struct in6_addr *tor_addr_to_in6(const tor_addr_t *a);
static INLINE uint32_t tor_addr_to_ipv4n(const tor_addr_t *a);
/** Return an IPv4 address in host order for <b>a</b>, or 0 if
 * <b>a</b> is not an IPv4 address. */
static INLINE uint32_t tor_addr_to_ipv4h(const tor_addr_t *a);
/* Given an IPv6 address, return its mapped IPv4 address in host order, or
 * 0 if <b>a</b> is not an IPv6 address.
 *
 * (Does not check whether the address is really a mapped address */
static INLINE uint32_t tor_addr_to_mapped_ipv4h(const tor_addr_t *a);
/** Return the address family of <b>a</b>.  Possible values are:
 * AF_INET6, AF_INET, AF_UNSPEC. */
static INLINE sa_family_t tor_addr_family(const tor_addr_t *a);
/** Return an in_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not
 * an IPv4 address. */
static INLINE const struct in_addr *tor_addr_to_in(const tor_addr_t *a);
/** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not
 * an IPv6 address. */
static INLINE const struct in6_addr *tor_addr_to_in6(const tor_addr_t *a);
/** Return true iff <b>a</b> is an IPv4 address equal to the host-ordered
 * address in <b>u</b>. */
static INLINE int tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u);

socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port,
@@ -63,6 +47,8 @@ int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa,
                           uint16_t *port_out);
void tor_addr_make_unspec(tor_addr_t *a);

/** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not
 * an IPv6 address. */
static INLINE const struct in6_addr *
tor_addr_to_in6(const tor_addr_t *a)
{
@@ -73,31 +59,45 @@ tor_addr_to_in6(const tor_addr_t *a)
#define tor_addr_to_in6_addr16(x) S6_ADDR16(*tor_addr_to_in6(x))
#define tor_addr_to_in6_addr32(x) S6_ADDR32(*tor_addr_to_in6(x))

/** Return an IPv4 address in network order for <b>a</b>, or 0 if
 * <b>a</b> is not an IPv4 address. */
static INLINE uint32_t
tor_addr_to_ipv4n(const tor_addr_t *a)
{
  return a->family == AF_INET ? a->addr.in_addr.s_addr : 0;
}
/** Return an IPv4 address in host order for <b>a</b>, or 0 if
 * <b>a</b> is not an IPv4 address. */
static INLINE uint32_t
tor_addr_to_ipv4h(const tor_addr_t *a)
{
  return ntohl(tor_addr_to_ipv4n(a));
}
/* Given an IPv6 address, return its mapped IPv4 address in host order, or
 * 0 if <b>a</b> is not an IPv6 address.
 *
 * (Does not check whether the address is really a mapped address */
static INLINE uint32_t
tor_addr_to_mapped_ipv4h(const tor_addr_t *a)
{
  return a->family == AF_INET6 ? ntohl(tor_addr_to_in6_addr32(a)[3]) : 0;
}
/** Return the address family of <b>a</b>.  Possible values are:
 * AF_INET6, AF_INET, AF_UNSPEC. */
static INLINE sa_family_t
tor_addr_family(const tor_addr_t *a)
{
  return a->family;
}
/** Return an in_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not
 * an IPv4 address. */
static INLINE const struct in_addr *
tor_addr_to_in(const tor_addr_t *a)
{
  return a->family == AF_INET ? &a->addr.in_addr : NULL;
}
/** Return true iff <b>a</b> is an IPv4 address equal to the host-ordered
 * address in <b>u</b>. */
static INLINE int
tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u)
{
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ typedef struct geoip_entry_t {
/** How long are the periods for which we should remember request history? */
#define REQUEST_HIST_PERIOD (8*60*60)

/** A per-country record for GeoIP request history */
/** A per-country record for GeoIP request history. */
typedef struct geoip_country_t {
  char countrycode[3];
  uint32_t n_v2_ns_requests[REQUEST_HIST_LEN];
+2 −1
Original line number Diff line number Diff line
@@ -2908,7 +2908,8 @@ router_set_status(const char *digest, int up)
 * <b>router</b> after subsequent calls with other routerinfo's -- they
 * might cause the original routerinfo to get freed.
 *
 * Returns the status for the operation.
 * Returns the status for the operation. Might set *<b>msg</b> if it wants
 * the poster of the router to know something.
 *
 * If <b>from_cache</b>, this descriptor came from our disk cache. If
 * <b>from_fetch</b>, we received it in response to a request we made.
+1 −1
Original line number Diff line number Diff line
@@ -1388,7 +1388,7 @@ _test_eq_ip6(struct in6_addr *a, struct in6_addr *b, const char *e1,
  STMT_END

/** Helper: assert that <b>a</b> parses by tor_inet_pton() into a address that
 * passes tor_addr_is_internal() with <b>for_listening</b> */
 * passes tor_addr_is_internal() with <b>for_listening</b>. */
#define test_internal_ip(a,for_listening) STMT_BEGIN           \
    test_eq(tor_inet_pton(AF_INET6, a, &t1.addr.in6_addr), 1); \
    t1.family = AF_INET6;                                      \
+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

Loading