[tor-bugs] #24546 [Core Tor/Tor]: Use tor_addr_is_v4() rather than family, or reject all v6-mapped IPv4 addresses

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Jun 19 22:09:48 UTC 2018


#24546: Use tor_addr_is_v4() rather than family, or reject all v6-mapped IPv4
addresses
-------------------------------------------------+-------------------------
 Reporter:  teor                                 |          Owner:  (none)
     Type:  defect                               |         Status:  new
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  unspecified
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-dirauth, ipv6,                   |  Actual Points:
  033-triage-20180320, 033-removed-20180320      |
Parent ID:                                       |         Points:  1
 Reviewer:                                       |        Sponsor:
                                                 |  SponsorV-can
-------------------------------------------------+-------------------------
Changes (by neel):

 * cc: neel@… (added)


Comment:

 When I was grepping the instances of `->family == AF_INET`, I got this:

 {{{
 neel at flex:~/code/tor/tor/src % grep -R tor_addr_is_v4 */*.h
 common/address.h:int tor_addr_is_v4(const tor_addr_t *addr);
 neel at flex:~/code/tor/tor/src % grep -R "[-][>]family == AF_INET" *
 common/address.c:  if (addr->family == AF_INET) {
 common/address.c:  } else if (addr->family == AF_INET6) {
 common/address.c:  if (for_listening && addr->family == AF_INET
 common/address.h:  return a->family == AF_INET6 ? &a->addr.in6_addr :
 NULL;
 common/address.h:  tor_assert(a->family == AF_INET6);
 common/address.h:  return a->family == AF_INET ? a->addr.in_addr.s_addr :
 0;
 common/address.h:  if (a->family == AF_INET6) {
 common/address.h:  return a->family == AF_INET ? &a->addr.in_addr : NULL;
 common/address.h:  return a->family == AF_INET ? (tor_addr_to_ipv4h(a) ==
 u) : 0;
 neel at flex:~/code/tor/tor/src %
 }}}

 My questions are that:

 1. Should I change the `a->family == AF_INET` in `address.h` to
 `tor_addr_is_v4(a)` (along with changing `addr->family == AF_INET` to
 `tor_addr_is_v4(addr)`)?
 2. Is it okay if I implement a `tor_addr_is_v6()` which is like
 `tor_addr_is_v4()` but with IPv6/`AF_INET`, and replace `addr->family ==
 AF_INET6` and the like with `tor_addr_is_v6(addr)`?
 3. If I do #2 on this list, then should I reject IPv6 mapped IPv4
 addresses in `tor_addr_is_v6()`?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/24546#comment:5>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list