--- /dev/null
+ o Minor bug fixes (exit policies):
+ - Consistently ignore multicast addresses when automatically
+ generating reject private exit policies.
+ Closes ticket 17763. Bug fix on 10a6390deb3c9,
+ not in any released version of Tor. Patch by "teor".
}
/** Return true iff <b>a</b> is a multicast address. */
-STATIC int
+int
tor_addr_is_multicast(const tor_addr_t *a)
{
sa_family_t family = tor_addr_family(a);
const char *filename, int lineno);
#define tor_addr_is_internal(addr, for_listening) \
tor_addr_is_internal_((addr), (for_listening), SHORT_FILE__, __LINE__)
+int tor_addr_is_multicast(const tor_addr_t *a);
/** Longest length that can be required for a reverse lookup name. */
/* 32 nybbles, 32 dots, 8 characters of "ip6.arpa", 1 NUL: 73 characters. */
#ifdef ADDRESS_PRIVATE
MOCK_DECL(smartlist_t *,get_interface_addresses_raw,(int severity));
-STATIC int tor_addr_is_multicast(const tor_addr_t *a);
MOCK_DECL(int,get_interface_address6_via_udp_socket_hack,(int severity,
sa_family_t family,
tor_addr_t *addr));
static int
tor_addr_is_public_for_reject(const tor_addr_t *addr)
{
- return !tor_addr_is_null(addr) && !tor_addr_is_internal(addr, 0);
+ return (!tor_addr_is_null(addr) && !tor_addr_is_internal(addr, 0)
+ && !tor_addr_is_multicast(addr));
}
/* Add "reject <b>addr</b>:*" to <b>dest</b>, creating the list as needed.