tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
January 2020
- 19 participants
- 1596 discussions

09 Jan '20
commit e28e41dd78ef48c5176c07b8068bb2b3afce2b85
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Thu Jan 9 11:43:49 2020 -0500
Fix wide lines from NS() removal fallout.
---
src/test/test_dir_handle_get.c | 5 +-
src/test/test_dns.c | 21 ++-
src/test/test_rendcache.c | 18 +--
src/test/test_routerset.c | 354 +++++++++++++++++++++++++----------------
src/test/test_status.c | 156 +++++++++---------
5 files changed, 314 insertions(+), 240 deletions(-)
diff --git a/src/test/test_dir_handle_get.c b/src/test/test_dir_handle_get.c
index 86e6edd44..6293839b0 100644
--- a/src/test/test_dir_handle_get.c
+++ b/src/test/test_dir_handle_get.c
@@ -2253,8 +2253,8 @@ test_dir_handle_get_status_vote_next_bandwidth_not_found(void* data)
tor_free(header);
}
-static const char* dhg_tests_dirvote_get_pending_consensus(consensus_flavor_t flav);
-ATTR_UNUSED static int dhg_tests_dirvote_get_pending_consensus_called = 0;
+static const char* dhg_tests_dirvote_get_pending_consensus(
+ consensus_flavor_t flav);
const char*
dhg_tests_dirvote_get_pending_consensus(consensus_flavor_t flav)
@@ -2355,7 +2355,6 @@ test_dir_handle_get_status_vote_next_consensus_signatures_not_found(void* data)
}
static const char* dhg_tests_dirvote_get_pending_detached_signatures(void);
-ATTR_UNUSED static int dhg_tests_dirvote_get_pending_detached_signatures_called = 0;
const char*
dhg_tests_dirvote_get_pending_detached_signatures(void)
diff --git a/src/test/test_dns.c b/src/test/test_dns.c
index 443538326..ec17e9e91 100644
--- a/src/test/test_dns.c
+++ b/src/test/test_dns.c
@@ -97,7 +97,10 @@ static cached_resolve_t *cache_entry_mock = NULL;
static int n_fake_impl = 0;
-static int dns_resolve_dns_resolve_impl(edge_connection_t *exitconn, int is_resolve, or_circuit_t *oncirc, char **hostname_out, int *made_connection_pending_out, cached_resolve_t **resolve_out);
+static int dns_resolve_dns_resolve_impl(edge_connection_t *exitconn,
+ int is_resolve, or_circuit_t *oncirc,
+ char **hostname_out, int *made_connection_pending_out,
+ cached_resolve_t **resolve_out);
ATTR_UNUSED static int dns_resolve_dns_resolve_impl_called = 0;
/** This will be our configurable substitute for <b>dns_resolve_impl</b> in
@@ -625,7 +628,8 @@ static edge_connection_t *last_exitconn = NULL;
static cached_resolve_t *last_resolve = NULL;
static int
-dns_impl_cache_hit_cached_set_exitconn_info_from_resolve(edge_connection_t *exitconn,
+dns_impl_cache_hit_cached_set_exitconn_info_from_resolve(
+ edge_connection_t *exitconn,
const cached_resolve_t *resolve,
char **hostname_out)
{
@@ -771,17 +775,20 @@ test_dns_impl_cache_miss(void *arg)
struct testcase_t dns_tests[] = {
#ifdef HAVE_EVDNS_BASE_GET_NAMESERVER_ADDR
- { "configure_ns_fallback", test_dns_configure_ns_fallback, TT_FORK, NULL, NULL },
+ { "configure_ns_fallback", test_dns_configure_ns_fallback,
+ TT_FORK, NULL, NULL },
#endif
{ "clip_ttl", test_dns_clip_ttl, TT_FORK, NULL, NULL },
{ "resolve", test_dns_resolve, TT_FORK, NULL, NULL },
{ "impl_addr_is_ip", test_dns_impl_addr_is_ip, TT_FORK, NULL, NULL },
{ "impl_non_exit", test_dns_impl_non_exit, TT_FORK, NULL, NULL },
- { "impl_addr_is_invalid_dest", test_dns_impl_addr_is_invalid_dest, TT_FORK, NULL, NULL },
+ { "impl_addr_is_invalid_dest", test_dns_impl_addr_is_invalid_dest,
+ TT_FORK, NULL, NULL },
{ "impl_malformed_ptr", test_dns_impl_malformed_ptr, TT_FORK, NULL, NULL },
- { "impl_cache_hit_pending", test_dns_impl_cache_hit_pending, TT_FORK, NULL, NULL },
- { "impl_cache_hit_cached", test_dns_impl_cache_hit_cached, TT_FORK, NULL, NULL },
+ { "impl_cache_hit_pending", test_dns_impl_cache_hit_pending,
+ TT_FORK, NULL, NULL },
+ { "impl_cache_hit_cached", test_dns_impl_cache_hit_cached,
+ TT_FORK, NULL, NULL },
{ "impl_cache_miss", test_dns_impl_cache_miss, TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
-
diff --git a/src/test/test_rendcache.c b/src/test/test_rendcache.c
index d0cb4378a..e396f9fd5 100644
--- a/src/test/test_rendcache.c
+++ b/src/test/test_rendcache.c
@@ -367,13 +367,12 @@ test_rend_cache_store_v2_desc_as_client_with_different_time(void *data)
rend_data_free(mock_rend_query);
}
-static const routerinfo_t * rcache_lookup_v2_desc_as_dir_router_get_my_routerinfo(void);
-ATTR_UNUSED static int rcache_lookup_v2_desc_as_dir_router_get_my_routerinfo_called = 0;
+static const routerinfo_t *rcache_lookup_v2_as_dir_get_my_routerinfo(void);
static routerinfo_t *mock_routerinfo;
static const routerinfo_t *
-rcache_lookup_v2_desc_as_dir_router_get_my_routerinfo(void)
+rcache_lookup_v2_as_dir_get_my_routerinfo(void)
{
if (!mock_routerinfo) {
mock_routerinfo = tor_malloc(sizeof(routerinfo_t));
@@ -394,7 +393,7 @@ test_rend_cache_lookup_v2_desc_as_dir(void *data)
(void)data;
MOCK(router_get_my_routerinfo,
- rcache_lookup_v2_desc_as_dir_router_get_my_routerinfo);
+ rcache_lookup_v2_as_dir_get_my_routerinfo);
rend_cache_init();
@@ -424,11 +423,10 @@ test_rend_cache_lookup_v2_desc_as_dir(void *data)
tor_free(service_id);
}
-static const routerinfo_t * rcache_store_v2_desc_as_dir_router_get_my_routerinfo(void);
-ATTR_UNUSED static int rcache_store_v2_desc_as_dir_router_get_my_routerinfo_called = 0;
+static const routerinfo_t *rcache_store_v2_as_dir_get_my_routerinfo(void);
static const routerinfo_t *
-rcache_store_v2_desc_as_dir_router_get_my_routerinfo(void)
+rcache_store_v2_as_dir_get_my_routerinfo(void)
{
return mock_routerinfo;
}
@@ -442,7 +440,7 @@ test_rend_cache_store_v2_desc_as_dir(void *data)
char *service_id = NULL;
MOCK(router_get_my_routerinfo,
- rcache_store_v2_desc_as_dir_router_get_my_routerinfo);
+ rcache_store_v2_as_dir_get_my_routerinfo);
rend_cache_init();
@@ -504,7 +502,7 @@ test_rend_cache_store_v2_desc_as_dir_with_different_time(void *data)
rend_encoded_v2_service_descriptor_t *desc_holder_older;
MOCK(router_get_my_routerinfo,
- rcache_store_v2_desc_as_dir_router_get_my_routerinfo);
+ rcache_store_v2_as_dir_get_my_routerinfo);
rend_cache_init();
@@ -568,7 +566,7 @@ test_rend_cache_store_v2_desc_as_dir_with_different_content(void *data)
rend_encoded_v2_service_descriptor_t *desc_holder_two = NULL;
MOCK(router_get_my_routerinfo,
- rcache_store_v2_desc_as_dir_router_get_my_routerinfo);
+ rcache_store_v2_as_dir_get_my_routerinfo);
rend_cache_init();
diff --git a/src/test/test_routerset.c b/src/test/test_routerset.c
index a64f7c1d1..892ac6e21 100644
--- a/src/test/test_routerset.c
+++ b/src/test/test_routerset.c
@@ -90,9 +90,9 @@ test_rset_get_countryname(void *arg)
*/
static int rset_refresh_geoip_not_loaded_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_refresh_geoip_not_loaded_geoip_is_loaded_called = 0;
+static int rset_refresh_geoip_not_loaded_geoip_is_loaded_called = 0;
static int rset_refresh_geoip_not_loaded_geoip_get_n_countries(void);
-ATTR_UNUSED static int rset_refresh_geoip_not_loaded_geoip_get_n_countries_called = 0;
+static int rset_refresh_geoip_not_loaded_geoip_get_n_countries_called = 0;
static void
test_rset_refresh_geoip_not_loaded(void *arg)
@@ -110,7 +110,8 @@ test_rset_refresh_geoip_not_loaded(void *arg)
tt_ptr_op(set->countries, OP_EQ, NULL);
tt_int_op(set->n_countries, OP_EQ, 0);
tt_int_op(rset_refresh_geoip_not_loaded_geoip_is_loaded_called, OP_EQ, 1);
- tt_int_op(rset_refresh_geoip_not_loaded_geoip_get_n_countries_called, OP_EQ, 0);
+ tt_int_op(rset_refresh_geoip_not_loaded_geoip_get_n_countries_called,
+ OP_EQ, 0);
done:
UNMOCK(geoip_is_loaded);
@@ -140,11 +141,12 @@ rset_refresh_geoip_not_loaded_geoip_get_n_countries(void)
*/
static int rset_refresh_no_countries_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_refresh_no_countries_geoip_is_loaded_called = 0;
+static int rset_refresh_no_countries_geoip_is_loaded_called = 0;
static int rset_refresh_no_countries_geoip_get_n_countries(void);
-ATTR_UNUSED static int rset_refresh_no_countries_geoip_get_n_countries_called = 0;
-static country_t rset_refresh_no_countries_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_refresh_no_countries_geoip_get_country_called = 0;
+static int rset_refresh_no_countries_geoip_get_n_countries_called = 0;
+static country_t rset_refresh_no_countries_geoip_get_country(
+ const char *country);
+static int rset_refresh_no_countries_geoip_get_country_called = 0;
static void
test_rset_refresh_no_countries(void *arg)
@@ -206,11 +208,12 @@ rset_refresh_no_countries_geoip_get_country(const char *countrycode)
*/
static int rset_refresh_one_valid_country_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_refresh_one_valid_country_geoip_is_loaded_called = 0;
+static int rset_refresh_one_valid_country_geoip_is_loaded_called = 0;
static int rset_refresh_one_valid_country_geoip_get_n_countries(void);
-ATTR_UNUSED static int rset_refresh_one_valid_country_geoip_get_n_countries_called = 0;
-static country_t rset_refresh_one_valid_country_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_refresh_one_valid_country_geoip_get_country_called = 0;
+static int rset_refresh_one_valid_country_geoip_get_n_countries_called = 0;
+static country_t rset_refresh_one_valid_country_geoip_get_country(
+ const char *country);
+static int rset_refresh_one_valid_country_geoip_get_country_called = 0;
static void
test_rset_refresh_one_valid_country(void *arg)
@@ -231,7 +234,8 @@ test_rset_refresh_one_valid_country(void *arg)
tt_ptr_op(set->countries, OP_NE, NULL);
tt_int_op(set->n_countries, OP_EQ, 2);
tt_int_op(rset_refresh_one_valid_country_geoip_is_loaded_called, OP_EQ, 1);
- tt_int_op(rset_refresh_one_valid_country_geoip_get_n_countries_called, OP_EQ, 1);
+ tt_int_op(rset_refresh_one_valid_country_geoip_get_n_countries_called,
+ OP_EQ, 1);
tt_int_op(rset_refresh_one_valid_country_geoip_get_country_called, OP_EQ, 1);
tt_int_op((unsigned int)(*set->countries), OP_NE, 0);
@@ -273,12 +277,14 @@ rset_refresh_one_valid_country_geoip_get_country(const char *countrycode)
* country code..
*/
-static int rset_refresh_one_invalid_country_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_refresh_one_invalid_country_geoip_is_loaded_called = 0;
+static int rset_refresh_one_invalid_country_geoip_is_loaded(
+ sa_family_t family);
+static int rset_refresh_one_invalid_country_geoip_is_loaded_called = 0;
static int rset_refresh_one_invalid_country_geoip_get_n_countries(void);
-ATTR_UNUSED static int rset_refresh_one_invalid_country_geoip_get_n_countries_called = 0;
-static country_t rset_refresh_one_invalid_country_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_refresh_one_invalid_country_geoip_get_country_called = 0;
+static int rset_refresh_one_invalid_country_geoip_get_n_countries_called = 0;
+static country_t rset_refresh_one_invalid_country_geoip_get_country(
+ const char *country);
+static int rset_refresh_one_invalid_country_geoip_get_country_called = 0;
static void
test_rset_refresh_one_invalid_country(void *arg)
@@ -299,8 +305,10 @@ test_rset_refresh_one_invalid_country(void *arg)
tt_ptr_op(set->countries, OP_NE, NULL);
tt_int_op(set->n_countries, OP_EQ, 2);
tt_int_op(rset_refresh_one_invalid_country_geoip_is_loaded_called, OP_EQ, 1);
- tt_int_op(rset_refresh_one_invalid_country_geoip_get_n_countries_called, OP_EQ, 1);
- tt_int_op(rset_refresh_one_invalid_country_geoip_get_country_called, OP_EQ, 1);
+ tt_int_op(rset_refresh_one_invalid_country_geoip_get_n_countries_called,
+ OP_EQ, 1);
+ tt_int_op(rset_refresh_one_invalid_country_geoip_get_country_called,
+ OP_EQ, 1);
tt_int_op((unsigned int)(*set->countries), OP_EQ, 0);
done:
@@ -427,8 +435,9 @@ test_rset_parse_get_countryname(void *arg)
* Structural test for routerset_parse, when given a valid wildcard policy.
*/
-static addr_policy_t * rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string(const char *s, int assume_action, int *malformed_list);
-ATTR_UNUSED static int rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string_called = 0;
+static addr_policy_t * rset_parse_policy_wildcard_parse_item_from_string(
+ const char *s, int assume_action, int *malformed_list);
+static int rset_parse_policy_wildcard_parse_item_from_string_called = 0;
static addr_policy_t *rset_parse_policy_wildcard_mock_addr_policy;
@@ -441,29 +450,31 @@ test_rset_parse_policy_wildcard(void *arg)
(void)arg;
MOCK(router_parse_addr_policy_item_from_string,
- rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string);
- rset_parse_policy_wildcard_mock_addr_policy = tor_malloc_zero(sizeof(addr_policy_t));
+ rset_parse_policy_wildcard_parse_item_from_string);
+ rset_parse_policy_wildcard_mock_addr_policy =
+ tor_malloc_zero(sizeof(addr_policy_t));
set = routerset_new();
s = "*";
r = routerset_parse(set, s, "");
tt_int_op(r, OP_EQ, 0);
tt_int_op(smartlist_len(set->policies), OP_NE, 0);
- tt_int_op(rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string_called, OP_EQ, 1);
+ tt_int_op(rset_parse_policy_wildcard_parse_item_from_string_called,
+ OP_EQ, 1);
done:
routerset_free(set);
}
addr_policy_t *
-rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string(const char *s,
+rset_parse_policy_wildcard_parse_item_from_string(const char *s,
int assume_action,
int *malformed_list)
{
(void)s;
(void)assume_action;
(void)malformed_list;
- rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string_called++;
+ rset_parse_policy_wildcard_parse_item_from_string_called++;
return rset_parse_policy_wildcard_mock_addr_policy;
}
@@ -473,8 +484,9 @@ rset_parse_policy_wildcard_router_parse_addr_policy_item_from_string(const char
* literal policy.
*/
-static addr_policy_t * rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string(const char *s, int assume_action, int *bogus);
-ATTR_UNUSED static int rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string_called = 0;
+static addr_policy_t * rset_parse_policy_ipv4_parse_item_from_string(
+ const char *s, int assume_action, int *bogus);
+static int rset_parse_policy_ipv4_parse_item_from_string_called = 0;
static addr_policy_t *rset_parse_policy_ipv4_mock_addr_policy;
@@ -487,27 +499,29 @@ test_rset_parse_policy_ipv4(void *arg)
(void)arg;
MOCK(router_parse_addr_policy_item_from_string,
- rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string);
- rset_parse_policy_ipv4_mock_addr_policy = tor_malloc_zero(sizeof(addr_policy_t));
+ rset_parse_policy_ipv4_parse_item_from_string);
+ rset_parse_policy_ipv4_mock_addr_policy =
+ tor_malloc_zero(sizeof(addr_policy_t));
set = routerset_new();
s = "127.0.0.1";
r = routerset_parse(set, s, "");
tt_int_op(r, OP_EQ, 0);
tt_int_op(smartlist_len(set->policies), OP_NE, 0);
- tt_int_op(rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string_called, OP_EQ, 1);
+ tt_int_op(rset_parse_policy_ipv4_parse_item_from_string_called, OP_EQ, 1);
done:
routerset_free(set);
}
addr_policy_t *
-rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string(const char *s, int assume_action,
- int *bogus)
+rset_parse_policy_ipv4_parse_item_from_string(
+ const char *s, int assume_action,
+ int *bogus)
{
(void)s;
(void)assume_action;
- rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string_called++;
+ rset_parse_policy_ipv4_parse_item_from_string_called++;
*bogus = 0;
return rset_parse_policy_ipv4_mock_addr_policy;
@@ -518,8 +532,9 @@ rset_parse_policy_ipv4_router_parse_addr_policy_item_from_string(const char *s,
* literal policy.
*/
-static addr_policy_t * rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string(const char *s, int assume_action, int *bad);
-ATTR_UNUSED static int rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string_called = 0;
+static addr_policy_t * rset_parse_policy_ipv6_parse_item_from_string(
+ const char *s, int assume_action, int *bad);
+static int rset_parse_policy_ipv6_parse_item_from_string_called = 0;
static addr_policy_t *rset_parse_policy_ipv6_mock_addr_policy;
@@ -532,27 +547,28 @@ test_rset_parse_policy_ipv6(void *arg)
(void)arg;
MOCK(router_parse_addr_policy_item_from_string,
- rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string);
- rset_parse_policy_ipv6_mock_addr_policy = tor_malloc_zero(sizeof(addr_policy_t));
+ rset_parse_policy_ipv6_parse_item_from_string);
+ rset_parse_policy_ipv6_mock_addr_policy =
+ tor_malloc_zero(sizeof(addr_policy_t));
set = routerset_new();
s = "::1";
r = routerset_parse(set, s, "");
tt_int_op(r, OP_EQ, 0);
tt_int_op(smartlist_len(set->policies), OP_NE, 0);
- tt_int_op(rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string_called, OP_EQ, 1);
+ tt_int_op(rset_parse_policy_ipv6_parse_item_from_string_called, OP_EQ, 1);
done:
routerset_free(set);
}
addr_policy_t *
-rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string(const char *s,
+rset_parse_policy_ipv6_parse_item_from_string(const char *s,
int assume_action, int *bad)
{
(void)s;
(void)assume_action;
- rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string_called++;
+ rset_parse_policy_ipv6_parse_item_from_string_called++;
*bad = 0;
return rset_parse_policy_ipv6_mock_addr_policy;
@@ -563,7 +579,7 @@ rset_parse_policy_ipv6_router_parse_addr_policy_item_from_string(const char *s,
*/
static smartlist_t * rset_union_source_bad_smartlist_new(void);
-ATTR_UNUSED static int rset_union_source_bad_smartlist_new_called = 0;
+static int rset_union_source_bad_smartlist_new_called = 0;
static void
test_rset_union_source_bad(void *arg)
@@ -901,8 +917,10 @@ test_rset_contains_null_digest(void *arg)
* and the address is rejected by policy.
*/
-static addr_policy_result_t rset_contains_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy);
-ATTR_UNUSED static int rset_contains_addr_compare_tor_addr_to_addr_policy_called = 0;
+static addr_policy_result_t rset_contains_addr_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const smartlist_t *policy);
+static int rset_contains_addr_cmp_addr_to_policy_called = 0;
static tor_addr_t MOCK_TOR_ADDR;
#define MOCK_TOR_ADDR_PTR (&MOCK_TOR_ADDR)
@@ -916,12 +934,12 @@ test_rset_contains_addr(void *arg)
(void)arg;
MOCK(compare_tor_addr_to_addr_policy,
- rset_contains_addr_compare_tor_addr_to_addr_policy);
+ rset_contains_addr_cmp_addr_to_policy);
contains = routerset_contains(set, addr, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(rset_contains_addr_compare_tor_addr_to_addr_policy_called, OP_EQ, 1);
+ tt_int_op(rset_contains_addr_cmp_addr_to_policy_called, OP_EQ, 1);
tt_int_op(contains, OP_EQ, 3);
done:
@@ -929,12 +947,12 @@ test_rset_contains_addr(void *arg)
}
addr_policy_result_t
-rset_contains_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port,
+rset_contains_addr_cmp_addr_to_policy(const tor_addr_t *addr, uint16_t port,
const smartlist_t *policy)
{
(void)port;
(void)policy;
- rset_contains_addr_compare_tor_addr_to_addr_policy_called++;
+ rset_contains_addr_cmp_addr_to_policy_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_REJECTED;
@@ -947,8 +965,10 @@ rset_contains_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint1
* and the address is not rejected by policy.
*/
-static addr_policy_result_t rset_contains_no_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy);
-ATTR_UNUSED static int rset_contains_no_addr_compare_tor_addr_to_addr_policy_called = 0;
+static addr_policy_result_t rset_contains_no_addr_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const smartlist_t *policy);
+static int rset_contains_no_addr_cmp_addr_to_policy_called = 0;
static void
test_rset_contains_no_addr(void *arg)
@@ -959,12 +979,12 @@ test_rset_contains_no_addr(void *arg)
(void)arg;
MOCK(compare_tor_addr_to_addr_policy,
- rset_contains_no_addr_compare_tor_addr_to_addr_policy);
+ rset_contains_no_addr_cmp_addr_to_policy);
contains = routerset_contains(set, addr, 0, NULL, NULL, 0);
routerset_free(set);
- tt_int_op(rset_contains_no_addr_compare_tor_addr_to_addr_policy_called, OP_EQ, 1);
+ tt_int_op(rset_contains_no_addr_cmp_addr_to_policy_called, OP_EQ, 1);
tt_int_op(contains, OP_EQ, 0);
done:
@@ -972,12 +992,12 @@ test_rset_contains_no_addr(void *arg)
}
addr_policy_result_t
-rset_contains_no_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port,
+rset_contains_no_addr_cmp_addr_to_policy(const tor_addr_t *addr, uint16_t port,
const smartlist_t *policy)
{
(void)port;
(void)policy;
- rset_contains_no_addr_compare_tor_addr_to_addr_policy_called++;
+ rset_contains_no_addr_cmp_addr_to_policy_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_ACCEPTED;
@@ -991,8 +1011,10 @@ rset_contains_no_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, ui
* and the address is NULL.
*/
-static addr_policy_result_t rset_contains_null_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy);
-ATTR_UNUSED static int rset_contains_null_addr_compare_tor_addr_to_addr_policy_called = 0;
+static addr_policy_result_t rset_contains_null_addr_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const smartlist_t *policy);
+static int rset_contains_null_addr_cmp_addr_to_policy_called = 0;
static void
test_rset_contains_null_addr(void *arg)
@@ -1002,7 +1024,7 @@ test_rset_contains_null_addr(void *arg)
(void)arg;
MOCK(compare_tor_addr_to_addr_policy,
- rset_contains_null_addr_compare_tor_addr_to_addr_policy);
+ rset_contains_null_addr_cmp_addr_to_policy);
contains = routerset_contains(set, NULL, 0, NULL, NULL, 0);
routerset_free(set);
@@ -1014,12 +1036,13 @@ test_rset_contains_null_addr(void *arg)
}
addr_policy_result_t
-rset_contains_null_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port,
+rset_contains_null_addr_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
const smartlist_t *policy)
{
(void)port;
(void)policy;
- rset_contains_null_addr_compare_tor_addr_to_addr_policy_called++;
+ rset_contains_null_addr_cmp_addr_to_policy_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
return ADDR_POLICY_ACCEPTED;
@@ -1033,22 +1056,25 @@ rset_contains_null_addr_compare_tor_addr_to_addr_policy(const tor_addr_t *addr,
* for the address.
*/
-static addr_policy_result_t rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy);
-ATTR_UNUSED static int rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy_called = 0;
-static int rset_contains_countries_no_geoip_geoip_get_country_by_addr(const tor_addr_t *addr);
-ATTR_UNUSED static int rset_contains_countries_no_geoip_geoip_get_country_by_addr_called = 0;
+static addr_policy_result_t rset_countries_no_geoip_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const smartlist_t *policy);
+static int rset_countries_no_geoip_cmp_addr_to_policy_called = 0;
+static int rset_countries_no_geoip_geoip_get_country_by_addr(
+ const tor_addr_t *addr);
+static int rset_countries_no_geoip_geoip_get_country_by_addr_called = 0;
static void
-test_rset_contains_countries_no_geoip(void *arg)
+test_rset_countries_no_geoip(void *arg)
{
routerset_t *set = routerset_new();
int contains = 1;
(void)arg;
MOCK(compare_tor_addr_to_addr_policy,
- rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy);
+ rset_countries_no_geoip_cmp_addr_to_policy);
MOCK(geoip_get_country_by_addr,
- rset_contains_countries_no_geoip_geoip_get_country_by_addr);
+ rset_countries_no_geoip_geoip_get_country_by_addr);
set->countries = bitarray_init_zero(1);
bitarray_set(set->countries, 1);
@@ -1056,20 +1082,23 @@ test_rset_contains_countries_no_geoip(void *arg)
routerset_free(set);
tt_int_op(contains, OP_EQ, 0);
- tt_int_op(rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy_called, OP_EQ, 1);
- tt_int_op(rset_contains_countries_no_geoip_geoip_get_country_by_addr_called, OP_EQ, 1);
+ tt_int_op(rset_countries_no_geoip_cmp_addr_to_policy_called,
+ OP_EQ, 1);
+ tt_int_op(rset_countries_no_geoip_geoip_get_country_by_addr_called,
+ OP_EQ, 1);
done:
;
}
addr_policy_result_t
-rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port,
+rset_countries_no_geoip_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
const smartlist_t *policy)
{
(void)port;
(void)policy;
- rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy_called++;
+ rset_countries_no_geoip_cmp_addr_to_policy_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
@@ -1077,9 +1106,9 @@ rset_contains_countries_no_geoip_compare_tor_addr_to_addr_policy(const tor_addr_
}
int
-rset_contains_countries_no_geoip_geoip_get_country_by_addr(const tor_addr_t *addr)
+rset_countries_no_geoip_geoip_get_country_by_addr(const tor_addr_t *addr)
{
- rset_contains_countries_no_geoip_geoip_get_country_by_addr_called++;
+ rset_countries_no_geoip_geoip_get_country_by_addr_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
@@ -1091,22 +1120,25 @@ rset_contains_countries_no_geoip_geoip_get_country_by_addr(const tor_addr_t *add
* for the address.
*/
-static addr_policy_result_t rset_contains_countries_geoip_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy);
-ATTR_UNUSED static int rset_contains_countries_geoip_compare_tor_addr_to_addr_policy_called = 0;
-static int rset_contains_countries_geoip_geoip_get_country_by_addr(const tor_addr_t *addr);
-ATTR_UNUSED static int rset_contains_countries_geoip_geoip_get_country_by_addr_called = 0;
+static addr_policy_result_t rset_countries_geoip_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
+ const smartlist_t *policy);
+static int rset_countries_geoip_cmp_addr_to_policy_called = 0;
+static int rset_countries_geoip_geoip_get_country_by_addr(
+ const tor_addr_t *addr);
+static int rset_countries_geoip_geoip_get_country_by_addr_called = 0;
static void
-test_rset_contains_countries_geoip(void *arg)
+test_rset_countries_geoip(void *arg)
{
routerset_t *set = routerset_new();
int contains = 1;
(void)arg;
MOCK(compare_tor_addr_to_addr_policy,
- rset_contains_countries_geoip_compare_tor_addr_to_addr_policy);
+ rset_countries_geoip_cmp_addr_to_policy);
MOCK(geoip_get_country_by_addr,
- rset_contains_countries_geoip_geoip_get_country_by_addr);
+ rset_countries_geoip_geoip_get_country_by_addr);
set->n_countries = 2;
set->countries = bitarray_init_zero(1);
@@ -1115,20 +1147,24 @@ test_rset_contains_countries_geoip(void *arg)
routerset_free(set);
tt_int_op(contains, OP_EQ, 2);
- tt_int_op(rset_contains_countries_geoip_compare_tor_addr_to_addr_policy_called, OP_EQ, 1);
- tt_int_op(rset_contains_countries_geoip_geoip_get_country_by_addr_called, OP_EQ, 1);
+ tt_int_op(
+ rset_countries_geoip_cmp_addr_to_policy_called,
+ OP_EQ, 1);
+ tt_int_op(rset_countries_geoip_geoip_get_country_by_addr_called,
+ OP_EQ, 1);
done:
;
}
addr_policy_result_t
-rset_contains_countries_geoip_compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port,
+rset_countries_geoip_cmp_addr_to_policy(
+ const tor_addr_t *addr, uint16_t port,
const smartlist_t *policy)
{
(void)port;
(void)policy;
- rset_contains_countries_geoip_compare_tor_addr_to_addr_policy_called++;
+ rset_countries_geoip_cmp_addr_to_policy_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
@@ -1136,9 +1172,9 @@ rset_contains_countries_geoip_compare_tor_addr_to_addr_policy(const tor_addr_t *
}
int
-rset_contains_countries_geoip_geoip_get_country_by_addr(const tor_addr_t *addr)
+rset_countries_geoip_geoip_get_country_by_addr(const tor_addr_t *addr)
{
- rset_contains_countries_geoip_geoip_get_country_by_addr_called++;
+ rset_countries_geoip_geoip_get_country_by_addr_called++;
tt_ptr_op(addr, OP_EQ, MOCK_TOR_ADDR_PTR);
done:
@@ -1172,8 +1208,9 @@ test_rset_add_unknown_ccs_only_flag(void *arg)
*/
/* The mock is only used to stop the test from asserting erroneously. */
-static country_t rset_add_unknown_ccs_creates_set_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_add_unknown_ccs_creates_set_geoip_get_country_called = 0;
+static country_t rset_add_unknown_ccs_creates_set_geoip_get_country(
+ const char *country);
+static int rset_add_unknown_ccs_creates_set_geoip_get_country_called = 0;
static void
test_rset_add_unknown_ccs_creates_set(void *arg)
@@ -1210,10 +1247,12 @@ rset_add_unknown_ccs_creates_set_geoip_get_country(const char *country)
* country code is added to the list.
*/
-static country_t rset_add_unknown_ccs_add_unknown_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_add_unknown_ccs_add_unknown_geoip_get_country_called = 0;
-static int rset_add_unknown_ccs_add_unknown_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_add_unknown_ccs_add_unknown_geoip_is_loaded_called = 0;
+static country_t rset_add_unknown_ccs_add_unknown_geoip_get_country(
+ const char *country);
+static int rset_add_unknown_ccs_add_unknown_geoip_get_country_called = 0;
+static int rset_add_unknown_ccs_add_unknown_geoip_is_loaded(
+ sa_family_t family);
+static int rset_add_unknown_ccs_add_unknown_geoip_is_loaded_called = 0;
static void
test_rset_add_unknown_ccs_add_unknown(void *arg)
@@ -1274,10 +1313,11 @@ rset_add_unknown_ccs_add_unknown_geoip_is_loaded(sa_family_t family)
* country code is added to the list.
*/
-static country_t rset_add_unknown_ccs_add_a1_geoip_get_country(const char *country);
-ATTR_UNUSED static int rset_add_unknown_ccs_add_a1_geoip_get_country_called = 0;
+static country_t rset_add_unknown_ccs_add_a1_geoip_get_country(
+ const char *country);
+static int rset_add_unknown_ccs_add_a1_geoip_get_country_called = 0;
static int rset_add_unknown_ccs_add_a1_geoip_is_loaded(sa_family_t family);
-ATTR_UNUSED static int rset_add_unknown_ccs_add_a1_geoip_is_loaded_called = 0;
+static int rset_add_unknown_ccs_add_a1_geoip_is_loaded_called = 0;
static void
test_rset_add_unknown_ccs_add_a1(void *arg)
@@ -1427,7 +1467,8 @@ test_rset_contains_none(void *arg)
int r;
(void)arg;
- memset(&rset_contains_none_mock_node, 0, sizeof(rset_contains_none_mock_node));
+ memset(&rset_contains_none_mock_node, 0,
+ sizeof(rset_contains_none_mock_node));
rset_contains_none_mock_node.ri = NULL;
rset_contains_none_mock_node.rs = NULL;
@@ -1533,8 +1574,9 @@ test_rset_get_all_no_routerset(void *arg)
* is empty.
*/
-static const node_t * rset_get_all_l_no_nodes_node_get_by_nickname(const char *nickname, unsigned flags);
-ATTR_UNUSED static int rset_get_all_l_no_nodes_node_get_by_nickname_called = 0;
+static const node_t * rset_get_all_l_no_nodes_node_get_by_nickname(
+ const char *nickname, unsigned flags);
+static int rset_get_all_l_no_nodes_node_get_by_nickname_called = 0;
static const char *rset_get_all_l_no_nodes_mock_nickname;
static void
@@ -1565,7 +1607,8 @@ test_rset_get_all_l_no_nodes(void *arg)
}
const node_t *
-rset_get_all_l_no_nodes_node_get_by_nickname(const char *nickname, unsigned flags)
+rset_get_all_l_no_nodes_node_get_by_nickname(const char *nickname,
+ unsigned flags)
{
rset_get_all_l_no_nodes_node_get_by_nickname_called++;
tt_str_op(nickname, OP_EQ, rset_get_all_l_no_nodes_mock_nickname);
@@ -1580,8 +1623,9 @@ rset_get_all_l_no_nodes_node_get_by_nickname(const char *nickname, unsigned flag
* is set but the nodes are not running.
*/
-static const node_t * rset_get_all_l_not_running_node_get_by_nickname(const char *nickname, unsigned flags);
-ATTR_UNUSED static int rset_get_all_l_not_running_node_get_by_nickname_called = 0;
+static const node_t * rset_get_all_l_not_running_node_get_by_nickname(
+ const char *nickname, unsigned flags);
+static int rset_get_all_l_not_running_node_get_by_nickname_called = 0;
static const char *rset_get_all_l_not_running_mock_nickname;
static node_t rset_get_all_l_not_running_mock_node;
@@ -1614,7 +1658,8 @@ test_rset_get_all_l_not_running(void *arg)
}
const node_t *
-rset_get_all_l_not_running_node_get_by_nickname(const char *nickname, unsigned flags)
+rset_get_all_l_not_running_node_get_by_nickname(const char *nickname,
+ unsigned flags)
{
rset_get_all_l_not_running_node_get_by_nickname_called++;
tt_str_op(nickname, OP_EQ, rset_get_all_l_not_running_mock_nickname);
@@ -1628,8 +1673,9 @@ rset_get_all_l_not_running_node_get_by_nickname(const char *nickname, unsigned f
* Structural test for routerset_get_all_nodes.
*/
-static const node_t * rset_get_all_list_node_get_by_nickname(const char *nickname, unsigned flags);
-ATTR_UNUSED static int rset_get_all_list_node_get_by_nickname_called = 0;
+static const node_t * rset_get_all_list_node_get_by_nickname(
+ const char *nickname, unsigned flags);
+static int rset_get_all_list_node_get_by_nickname_called = 0;
static char *rset_get_all_list_mock_nickname;
static node_t rset_get_all_list_mock_node;
@@ -1679,7 +1725,7 @@ rset_get_all_list_node_get_by_nickname(const char *nickname, unsigned flags)
*/
static const smartlist_t * rset_get_all_n_no_nodes_nodelist_get_list(void);
-ATTR_UNUSED static int rset_get_all_n_no_nodes_nodelist_get_list_called = 0;
+static int rset_get_all_n_no_nodes_nodelist_get_list_called = 0;
static smartlist_t *rset_get_all_n_no_nodes_mock_smartlist;
static void
@@ -1723,7 +1769,7 @@ rset_get_all_n_no_nodes_nodelist_get_list(void)
*/
static const smartlist_t * rset_get_all_n_not_running_nodelist_get_list(void);
-ATTR_UNUSED static int rset_get_all_n_not_running_nodelist_get_list_called = 0;
+static int rset_get_all_n_not_running_nodelist_get_list_called = 0;
static smartlist_t *rset_get_all_n_not_running_mock_smartlist;
static node_t rset_get_all_n_not_running_mock_node;
@@ -1742,7 +1788,8 @@ test_rset_get_all_n_not_running(void *arg)
smartlist_add_strdup(set->country_names, "{xx}");
rset_get_all_n_not_running_mock_smartlist = smartlist_new();
rset_get_all_n_not_running_mock_node.is_running = 0;
- smartlist_add(rset_get_all_n_not_running_mock_smartlist, (void *)&rset_get_all_n_not_running_mock_node);
+ smartlist_add(rset_get_all_n_not_running_mock_smartlist,
+ (void *)&rset_get_all_n_not_running_mock_node);
routerset_get_all_nodes(out, set, NULL, 1);
r = smartlist_len(out);
@@ -1981,7 +2028,7 @@ test_rset_equal_equal(void *arg)
*/
static void rset_free_null_routerset_smartlist_free_(smartlist_t *sl);
-ATTR_UNUSED static int rset_free_null_routerset_smartlist_free__called = 0;
+static int rset_free_null_routerset_smartlist_free__called = 0;
static void
test_rset_free_null_routerset(void *arg)
@@ -2011,11 +2058,12 @@ rset_free_null_routerset_smartlist_free_(smartlist_t *s)
*/
static void rset_free_smartlist_free_(smartlist_t *sl);
-ATTR_UNUSED static int rset_free_smartlist_free__called = 0;
+static int rset_free_smartlist_free__called = 0;
static void rset_free_strmap_free_(strmap_t *map, void (*free_val)(void*));
-ATTR_UNUSED static int rset_free_strmap_free__called = 0;
-static void rset_free_digestmap_free_(digestmap_t *map, void (*free_val)(void*));
-ATTR_UNUSED static int rset_free_digestmap_free__called = 0;
+static int rset_free_strmap_free__called = 0;
+static void rset_free_digestmap_free_(digestmap_t *map,
+ void (*free_val)(void*));
+static int rset_free_digestmap_free__called = 0;
static void
test_rset_free(void *arg)
@@ -2067,56 +2115,84 @@ struct testcase_t routerset_tests[] = {
{ "is_list", test_rset_is_list, TT_FORK, NULL, NULL },
{ "needs_geoip", test_rset_needs_geoip, TT_FORK, NULL, NULL },
{ "is_empty", test_rset_is_empty, TT_FORK, NULL, NULL },
- { "contains_null_set_or_list", test_rset_contains_null_set_or_list, TT_FORK, NULL, NULL },
+ { "contains_null_set_or_list", test_rset_contains_null_set_or_list,
+ TT_FORK, NULL, NULL },
{ "contains_nickname", test_rset_contains_nickname, TT_FORK, NULL, NULL },
- { "contains_null_nickname", test_rset_contains_null_nickname, TT_FORK, NULL, NULL },
- { "contains_no_nickname", test_rset_contains_no_nickname, TT_FORK, NULL, NULL },
+ { "contains_null_nickname", test_rset_contains_null_nickname,
+ TT_FORK, NULL, NULL },
+ { "contains_no_nickname", test_rset_contains_no_nickname,
+ TT_FORK, NULL, NULL },
{ "contains_digest", test_rset_contains_digest, TT_FORK, NULL, NULL },
{ "contains_no_digest", test_rset_contains_no_digest, TT_FORK, NULL, NULL },
- { "contains_null_digest", test_rset_contains_null_digest, TT_FORK, NULL, NULL },
+ { "contains_null_digest", test_rset_contains_null_digest,
+ TT_FORK, NULL, NULL },
{ "contains_addr", test_rset_contains_addr, TT_FORK, NULL, NULL },
{ "contains_no_addr", test_rset_contains_no_addr, TT_FORK, NULL, NULL },
{ "contains_null_addr", test_rset_contains_null_addr, TT_FORK, NULL, NULL },
- { "contains_countries_no_geoip", test_rset_contains_countries_no_geoip, TT_FORK, NULL, NULL },
- { "contains_countries_geoip", test_rset_contains_countries_geoip, TT_FORK, NULL, NULL },
- { "add_unknown_ccs_only_flag", test_rset_add_unknown_ccs_only_flag, TT_FORK, NULL, NULL },
- { "add_unknown_ccs_creates_set", test_rset_add_unknown_ccs_creates_set, TT_FORK, NULL, NULL },
- { "add_unknown_ccs_add_unknown", test_rset_add_unknown_ccs_add_unknown, TT_FORK, NULL, NULL },
- { "add_unknown_ccs_add_a1", test_rset_add_unknown_ccs_add_a1, TT_FORK, NULL, NULL },
- { "contains_extendinfo", test_rset_contains_extendinfo, TT_FORK, NULL, NULL },
+ { "contains_countries_no_geoip", test_rset_countries_no_geoip,
+ TT_FORK, NULL, NULL },
+ { "contains_countries_geoip", test_rset_countries_geoip,
+ TT_FORK, NULL, NULL },
+ { "add_unknown_ccs_only_flag", test_rset_add_unknown_ccs_only_flag,
+ TT_FORK, NULL, NULL },
+ { "add_unknown_ccs_creates_set", test_rset_add_unknown_ccs_creates_set,
+ TT_FORK, NULL, NULL },
+ { "add_unknown_ccs_add_unknown", test_rset_add_unknown_ccs_add_unknown,
+ TT_FORK, NULL, NULL },
+ { "add_unknown_ccs_add_a1", test_rset_add_unknown_ccs_add_a1,
+ TT_FORK, NULL, NULL },
+ { "contains_extendinfo", test_rset_contains_extendinfo,
+ TT_FORK, NULL, NULL },
{ "contains_router", test_rset_contains_router, TT_FORK, NULL, NULL },
- { "contains_routerstatus", test_rset_contains_routerstatus, TT_FORK, NULL, NULL },
+ { "contains_routerstatus", test_rset_contains_routerstatus,
+ TT_FORK, NULL, NULL },
{ "contains_none", test_rset_contains_none, TT_FORK, NULL, NULL },
- { "contains_routerinfo", test_rset_contains_routerinfo, TT_FORK, NULL, NULL },
+ { "contains_routerinfo", test_rset_contains_routerinfo,
+ TT_FORK, NULL, NULL },
{ "contains_rs", test_rset_contains_rs, TT_FORK, NULL, NULL },
- { "get_all_no_routerset", test_rset_get_all_no_routerset, TT_FORK, NULL, NULL },
+ { "get_all_no_routerset", test_rset_get_all_no_routerset,
+ TT_FORK, NULL, NULL },
{ "get_all_l_no_nodes", test_rset_get_all_l_no_nodes, TT_FORK, NULL, NULL },
- { "get_all_l_not_running", test_rset_get_all_l_not_running, TT_FORK, NULL, NULL },
+ { "get_all_l_not_running", test_rset_get_all_l_not_running,
+ TT_FORK, NULL, NULL },
{ "get_all_list", test_rset_get_all_list, TT_FORK, NULL, NULL },
{ "get_all_n_no_nodes", test_rset_get_all_n_no_nodes, TT_FORK, NULL, NULL },
- { "get_all_n_not_running", test_rset_get_all_n_not_running, TT_FORK, NULL, NULL },
- { "refresh_geoip_not_loaded", test_rset_refresh_geoip_not_loaded, TT_FORK, NULL, NULL },
- { "refresh_no_countries", test_rset_refresh_no_countries, TT_FORK, NULL, NULL },
- { "refresh_one_valid_country", test_rset_refresh_one_valid_country, TT_FORK, NULL, NULL },
- { "refresh_one_invalid_country", test_rset_refresh_one_invalid_country, TT_FORK, NULL, NULL },
+ { "get_all_n_not_running", test_rset_get_all_n_not_running,
+ TT_FORK, NULL, NULL },
+ { "refresh_geoip_not_loaded", test_rset_refresh_geoip_not_loaded,
+ TT_FORK, NULL, NULL },
+ { "refresh_no_countries", test_rset_refresh_no_countries,
+ TT_FORK, NULL, NULL },
+ { "refresh_one_valid_country", test_rset_refresh_one_valid_country,
+ TT_FORK, NULL, NULL },
+ { "refresh_one_invalid_country", test_rset_refresh_one_invalid_country,
+ TT_FORK, NULL, NULL },
{ "union_source_bad", test_rset_union_source_bad, TT_FORK, NULL, NULL },
{ "union_one", test_rset_union_one, TT_FORK, NULL, NULL },
{ "parse_malformed", test_rset_parse_malformed, TT_FORK, NULL, NULL },
- { "parse_valid_hexdigest", test_rset_parse_valid_hexdigest, TT_FORK, NULL, NULL },
- { "parse_valid_nickname", test_rset_parse_valid_nickname, TT_FORK, NULL, NULL },
- { "parse_get_countryname", test_rset_parse_get_countryname, TT_FORK, NULL, NULL },
- { "parse_policy_wildcard", test_rset_parse_policy_wildcard, TT_FORK, NULL, NULL },
+ { "parse_valid_hexdigest", test_rset_parse_valid_hexdigest,
+ TT_FORK, NULL, NULL },
+ { "parse_valid_nickname", test_rset_parse_valid_nickname,
+ TT_FORK, NULL, NULL },
+ { "parse_get_countryname", test_rset_parse_get_countryname,
+ TT_FORK, NULL, NULL },
+ { "parse_policy_wildcard", test_rset_parse_policy_wildcard,
+ TT_FORK, NULL, NULL },
{ "parse_policy_ipv4", test_rset_parse_policy_ipv4, TT_FORK, NULL, NULL },
{ "parse_policy_ipv6", test_rset_parse_policy_ipv6, TT_FORK, NULL, NULL },
{ "subtract_nodes", test_rset_subtract_nodes, TT_FORK, NULL, NULL },
- { "subtract_nodes_null_routerset", test_rset_subtract_nodes_null_routerset, TT_FORK, NULL, NULL },
+ { "subtract_nodes_null_routerset", test_rset_subtract_nodes_null_routerset,
+ TT_FORK, NULL, NULL },
{ "to_string", test_rset_to_string, TT_FORK, NULL, NULL },
{ "equal_empty_empty", test_rset_equal_empty_empty, TT_FORK, NULL, NULL },
- { "equal_empty_not_empty", test_rset_equal_empty_not_empty, TT_FORK, NULL, NULL },
- { "equal_differing_lengths", test_rset_equal_differing_lengths, TT_FORK, NULL, NULL },
+ { "equal_empty_not_empty", test_rset_equal_empty_not_empty,
+ TT_FORK, NULL, NULL },
+ { "equal_differing_lengths", test_rset_equal_differing_lengths,
+ TT_FORK, NULL, NULL },
{ "equal_unequal", test_rset_equal_unequal, TT_FORK, NULL, NULL },
{ "equal_equal", test_rset_equal_equal, TT_FORK, NULL, NULL },
- { "free_null_routerset", test_rset_free_null_routerset, TT_FORK, NULL, NULL },
+ { "free_null_routerset", test_rset_free_null_routerset,
+ TT_FORK, NULL, NULL },
{ "free", test_rset_free, TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_status.c b/src/test/test_status.c
index ffce848db..82afe0fd2 100644
--- a/src/test/test_status.c
+++ b/src/test/test_status.c
@@ -41,7 +41,6 @@
static smartlist_t * mock_global_circuitlist = NULL;
static smartlist_t * status_count_circuits_circuit_get_global_list(void);
-ATTR_UNUSED static int status_count_circuits_circuit_get_global_list_called = 0;
static void
test_status_count_circuits(void *arg)
@@ -240,13 +239,9 @@ test_status_bytes_to_usage(void *arg)
*/
static double status_hb_fails_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_fails_tls_get_write_overhead_ratio_called = 0;
static int status_hb_fails_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_fails_we_are_hibernating_called = 0;
static int status_hb_fails_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_fails_public_server_mode_called = 0;
static const routerinfo_t * status_hb_fails_router_get_my_routerinfo(void);
-ATTR_UNUSED static int status_hb_fails_router_get_my_routerinfo_called = 0;
static void
test_status_hb_fails(void *arg)
@@ -307,19 +302,17 @@ status_hb_fails_router_get_my_routerinfo(void)
*/
static double status_hb_not_in_consensus_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_not_in_consensus_tls_get_write_overhead_ratio_called = 0;
static int status_hb_not_in_consensus_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_not_in_consensus_we_are_hibernating_called = 0;
-static int status_hb_not_in_consensus_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_not_in_consensus_public_server_mode_called = 0;
-static const routerinfo_t * status_hb_not_in_consensus_router_get_my_routerinfo(void);
-ATTR_UNUSED static int status_hb_not_in_consensus_router_get_my_routerinfo_called = 0;
-static const node_t * status_hb_not_in_consensus_node_get_by_id(const char *identity_digest);
-ATTR_UNUSED static int status_hb_not_in_consensus_node_get_by_id_called = 0;
-static void status_hb_not_in_consensus_logv(int severity, log_domain_mask_t domain, const char *funcname, const char *suffix, const char *format, va_list ap);
-ATTR_UNUSED static int status_hb_not_in_consensus_logv_called = 0;
+static int status_hb_not_in_consensus_public_server_mode(
+ const or_options_t *options);
+static const routerinfo_t *status_hb_not_in_consensus_get_my_routerinfo(void);
+static const node_t * status_hb_not_in_consensus_node_get_by_id(
+ const char *identity_digest);
+static void status_hb_not_in_consensus_logv(
+ int severity, log_domain_mask_t domain, const char *funcname,
+ const char *suffix, const char *format, va_list ap);
+static int status_hb_not_in_consensus_logv_called = 0;
static int status_hb_not_in_consensus_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_not_in_consensus_server_mode_called = 0;
static routerinfo_t *mock_routerinfo;
@@ -336,7 +329,7 @@ test_status_hb_not_in_consensus(void *arg)
MOCK(public_server_mode,
status_hb_not_in_consensus_public_server_mode);
MOCK(router_get_my_routerinfo,
- status_hb_not_in_consensus_router_get_my_routerinfo);
+ status_hb_not_in_consensus_get_my_routerinfo);
MOCK(node_get_by_id,
status_hb_not_in_consensus_node_get_by_id);
MOCK(logv,
@@ -388,7 +381,7 @@ status_hb_not_in_consensus_public_server_mode(const or_options_t *options)
}
static const routerinfo_t *
-status_hb_not_in_consensus_router_get_my_routerinfo(void)
+status_hb_not_in_consensus_get_my_routerinfo(void)
{
mock_routerinfo = tor_malloc(sizeof(routerinfo_t));
@@ -487,21 +480,16 @@ status_hb_not_in_consensus_server_mode(const or_options_t *options)
*/
static double status_hb_simple_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_simple_tls_get_write_overhead_ratio_called = 0;
static int status_hb_simple_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_simple_we_are_hibernating_called = 0;
static int status_hb_simple_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_simple_public_server_mode_called = 0;
static long status_hb_simple_get_uptime(void);
-ATTR_UNUSED static int status_hb_simple_get_uptime_called = 0;
static uint64_t status_hb_simple_get_bytes_read(void);
-ATTR_UNUSED static int status_hb_simple_get_bytes_read_called = 0;
static uint64_t status_hb_simple_get_bytes_written(void);
-ATTR_UNUSED static int status_hb_simple_get_bytes_written_called = 0;
-static void status_hb_simple_logv(int severity, log_domain_mask_t domain, const char *funcname, const char *suffix, const char *format, va_list ap);
+static void status_hb_simple_logv(int severity, log_domain_mask_t domain,
+ const char *funcname, const char *suffix,
+ const char *format, va_list ap);
ATTR_UNUSED static int status_hb_simple_logv_called = 0;
static int status_hb_simple_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_simple_server_mode_called = 0;
static int status_hb_simple_n_msgs = 0;
@@ -586,7 +574,8 @@ status_hb_simple_get_bytes_written(void)
}
static void
-status_hb_simple_logv(int severity, log_domain_mask_t domain, const char *funcname,
+status_hb_simple_logv(int severity, log_domain_mask_t domain,
+ const char *funcname,
const char *suffix, const char *format, va_list ap)
{
if (severity == LOG_INFO)
@@ -623,28 +612,25 @@ status_hb_simple_server_mode(const or_options_t *options)
* and accounting information when configured.
*/
-static double status_hb_calls_log_accounting_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_tls_get_write_overhead_ratio_called = 0;
+static double status_hb_calls_log_accounting_tls_get_write_overhead_ratio(
+ void);
static int status_hb_calls_log_accounting_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_we_are_hibernating_called = 0;
-static int status_hb_calls_log_accounting_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_calls_log_accounting_public_server_mode_called = 0;
+static int status_hb_calls_log_accounting_public_server_mode(
+ const or_options_t *options);
static long status_hb_calls_log_accounting_get_uptime(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_get_uptime_called = 0;
static uint64_t status_hb_calls_log_accounting_get_bytes_read(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_get_bytes_read_called = 0;
static uint64_t status_hb_calls_log_accounting_get_bytes_written(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_get_bytes_written_called = 0;
-static void status_hb_calls_log_accounting_logv(int severity, log_domain_mask_t domain, const char *funcname, const char *suffix, const char *format, va_list ap);
-ATTR_UNUSED static int status_hb_calls_log_accounting_logv_called = 0;
-static int status_hb_calls_log_accounting_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_calls_log_accounting_server_mode_called = 0;
+static void status_hb_calls_log_accounting_logv(
+ int severity, log_domain_mask_t domain,
+ const char *funcname, const char *suffix,
+ const char *format, va_list ap);
+static int status_hb_calls_log_accounting_logv_called = 0;
+static int status_hb_calls_log_accounting_server_mode(
+ const or_options_t *options);
static or_state_t * status_hb_calls_log_accounting_get_or_state(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_get_or_state_called = 0;
-static int status_hb_calls_log_accounting_accounting_is_enabled(const or_options_t *options);
-ATTR_UNUSED static int status_hb_calls_log_accounting_accounting_is_enabled_called = 0;
+static int status_hb_calls_log_accounting_accounting_is_enabled(
+ const or_options_t *options);
static time_t status_hb_calls_log_accounting_accounting_get_end_time(void);
-ATTR_UNUSED static int status_hb_calls_log_accounting_accounting_get_end_time_called = 0;
static or_state_t * status_hb_calls_log_accounting_mock_state = NULL;
static or_options_t * status_hb_calls_log_accounting_mock_options = NULL;
@@ -800,7 +786,8 @@ status_hb_calls_log_accounting_server_mode(const or_options_t *options)
}
static int
-status_hb_calls_log_accounting_accounting_is_enabled(const or_options_t *options)
+status_hb_calls_log_accounting_accounting_is_enabled(
+ const or_options_t *options)
{
(void)options;
@@ -816,9 +803,12 @@ status_hb_calls_log_accounting_accounting_get_end_time(void)
static or_state_t *
status_hb_calls_log_accounting_get_or_state(void)
{
- status_hb_calls_log_accounting_mock_state = tor_malloc_zero(sizeof(or_state_t));
- status_hb_calls_log_accounting_mock_state->AccountingBytesReadInInterval = 0;
- status_hb_calls_log_accounting_mock_state->AccountingBytesWrittenInInterval = 0;
+ status_hb_calls_log_accounting_mock_state =
+ tor_malloc_zero(sizeof(or_state_t));
+ status_hb_calls_log_accounting_mock_state
+ ->AccountingBytesReadInInterval = 0;
+ status_hb_calls_log_accounting_mock_state
+ ->AccountingBytesWrittenInInterval = 0;
return status_hb_calls_log_accounting_mock_state;
}
@@ -828,24 +818,23 @@ status_hb_calls_log_accounting_get_or_state(void)
* fullness information.
*/
-static double status_hb_packaged_cell_fullness_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_tls_get_write_overhead_ratio_called = 0;
+static double status_hb_packaged_cell_fullness_tls_get_write_overhead_ratio(
+ void);
static int status_hb_packaged_cell_fullness_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_we_are_hibernating_called = 0;
-static int status_hb_packaged_cell_fullness_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_public_server_mode_called = 0;
+static int status_hb_packaged_cell_fullness_public_server_mode(
+ const or_options_t *options);
static long status_hb_packaged_cell_fullness_get_uptime(void);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_get_uptime_called = 0;
static uint64_t status_hb_packaged_cell_fullness_get_bytes_read(void);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_get_bytes_read_called = 0;
static uint64_t status_hb_packaged_cell_fullness_get_bytes_written(void);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_get_bytes_written_called = 0;
-static void status_hb_packaged_cell_fullness_logv(int severity, log_domain_mask_t domain, const char *funcname, const char *suffix, const char *format, va_list ap);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_logv_called = 0;
-static int status_hb_packaged_cell_fullness_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_server_mode_called = 0;
-static int status_hb_packaged_cell_fullness_accounting_is_enabled(const or_options_t *options);
-ATTR_UNUSED static int status_hb_packaged_cell_fullness_accounting_is_enabled_called = 0;
+static void status_hb_packaged_cell_fullness_logv(
+ int severity, log_domain_mask_t domain,
+ const char *funcname, const char *suffix,
+ const char *format, va_list ap);
+static int status_hb_packaged_cell_fullness_logv_called = 0;
+static int status_hb_packaged_cell_fullness_server_mode(
+ const or_options_t *options);
+static int status_hb_packaged_cell_fullness_accounting_is_enabled(
+ const or_options_t *options);
static void
test_status_hb_packaged_cell_fullness(void *arg)
@@ -908,7 +897,8 @@ status_hb_packaged_cell_fullness_we_are_hibernating(void)
}
static int
-status_hb_packaged_cell_fullness_public_server_mode(const or_options_t *options)
+status_hb_packaged_cell_fullness_public_server_mode(
+ const or_options_t *options)
{
(void)options;
@@ -934,7 +924,8 @@ status_hb_packaged_cell_fullness_get_bytes_written(void)
}
static void
-status_hb_packaged_cell_fullness_logv(int severity, log_domain_mask_t domain, const char *funcname,
+status_hb_packaged_cell_fullness_logv(int severity,
+ log_domain_mask_t domain, const char *funcname,
const char *suffix, const char *format, va_list ap)
{
switch (status_hb_packaged_cell_fullness_logv_called)
@@ -982,7 +973,8 @@ status_hb_packaged_cell_fullness_server_mode(const or_options_t *options)
}
static int
-status_hb_packaged_cell_fullness_accounting_is_enabled(const or_options_t *options)
+status_hb_packaged_cell_fullness_accounting_is_enabled(
+ const or_options_t *options)
{
(void)options;
@@ -995,23 +987,21 @@ status_hb_packaged_cell_fullness_accounting_is_enabled(const or_options_t *optio
*/
static double status_hb_tls_write_overhead_tls_get_write_overhead_ratio(void);
-ATTR_UNUSED static int status_hb_tls_write_overhead_tls_get_write_overhead_ratio_called = 0;
static int status_hb_tls_write_overhead_we_are_hibernating(void);
-ATTR_UNUSED static int status_hb_tls_write_overhead_we_are_hibernating_called = 0;
-static int status_hb_tls_write_overhead_public_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_tls_write_overhead_public_server_mode_called = 0;
+static int status_hb_tls_write_overhead_public_server_mode(
+ const or_options_t *options);
static long status_hb_tls_write_overhead_get_uptime(void);
-ATTR_UNUSED static int status_hb_tls_write_overhead_get_uptime_called = 0;
static uint64_t status_hb_tls_write_overhead_get_bytes_read(void);
-ATTR_UNUSED static int status_hb_tls_write_overhead_get_bytes_read_called = 0;
static uint64_t status_hb_tls_write_overhead_get_bytes_written(void);
-ATTR_UNUSED static int status_hb_tls_write_overhead_get_bytes_written_called = 0;
-static void status_hb_tls_write_overhead_logv(int severity, log_domain_mask_t domain, const char *funcname, const char *suffix, const char *format, va_list ap);
-ATTR_UNUSED static int status_hb_tls_write_overhead_logv_called = 0;
-static int status_hb_tls_write_overhead_server_mode(const or_options_t *options);
-ATTR_UNUSED static int status_hb_tls_write_overhead_server_mode_called = 0;
-static int status_hb_tls_write_overhead_accounting_is_enabled(const or_options_t *options);
-ATTR_UNUSED static int status_hb_tls_write_overhead_accounting_is_enabled_called = 0;
+static void status_hb_tls_write_overhead_logv(
+ int severity, log_domain_mask_t domain,
+ const char *funcname, const char *suffix,
+ const char *format, va_list ap);
+static int status_hb_tls_write_overhead_logv_called = 0;
+static int status_hb_tls_write_overhead_server_mode(
+ const or_options_t *options);
+static int status_hb_tls_write_overhead_accounting_is_enabled(
+ const or_options_t *options);
static void
test_status_hb_tls_write_overhead(void *arg)
@@ -1158,9 +1148,13 @@ struct testcase_t status_tests[] = {
{ "bytes_to_usage", test_status_bytes_to_usage, TT_FORK, NULL, NULL },
{ "hb_fails", test_status_hb_fails, TT_FORK, NULL, NULL },
{ "hb_simple", test_status_hb_simple, TT_FORK, NULL, NULL },
- { "hb_not_in_consensus", test_status_hb_not_in_consensus, TT_FORK, NULL, NULL },
- { "hb_calls_log_accounting", test_status_hb_calls_log_accounting, TT_FORK, NULL, NULL },
- { "hb_packaged_cell_fullness", test_status_hb_packaged_cell_fullness, TT_FORK, NULL, NULL },
- { "hb_tls_write_overhead", test_status_hb_tls_write_overhead, TT_FORK, NULL, NULL },
+ { "hb_not_in_consensus", test_status_hb_not_in_consensus,
+ TT_FORK, NULL, NULL },
+ { "hb_calls_log_accounting", test_status_hb_calls_log_accounting,
+ TT_FORK, NULL, NULL },
+ { "hb_packaged_cell_fullness", test_status_hb_packaged_cell_fullness,
+ TT_FORK, NULL, NULL },
+ { "hb_tls_write_overhead", test_status_hb_tls_write_overhead,
+ TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 09 Jan '20
by translation@torproject.org 09 Jan '20
09 Jan '20
commit a8d593529a526d502ab71a6bc70d7e209cd27905
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Jan 9 20:53:34 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ru.po | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/contents+ru.po b/contents+ru.po
index c3bffee164..6509a61afd 100644
--- a/contents+ru.po
+++ b/contents+ru.po
@@ -7333,6 +7333,9 @@ msgid ""
" your subsequent browser activity from being linkable to what you were doing"
" before."
msgstr ""
+"Новая личность. В [Tor Browser](#tor-browser) – функция, которая помогает "
+"\"отвязать\" вашу текущую активность в браузере от того, что вы делали "
+"раньше."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7341,6 +7344,10 @@ msgid ""
"information such as [cookies](#cookie) and [browsing history](#browsing-"
"history), and use New [Tor circuits](#circuit) for all connections."
msgstr ""
+"При выборе новой личности будут закрыты все окна и вкладки браузера, очищена"
+" приватная информация, такая как [куки-файлы](#cookie) и [история просмотра"
+"](#browsing-history). Для всех подключений будут использоваться новые "
+"цепочки [Tor circuits](#circuit)."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7348,6 +7355,9 @@ msgid ""
"Tor Browser will warn you that all activity and downloads will be stopped, "
"so take this into account before clicking “New Identity”."
msgstr ""
+"Tor Browser предупредит вас, что вся активность (включая скачивания) будет "
+"остановлена. Подумайте об этом, прежде чем нажимать кнопку \"Новая "
+"личность\"."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
1
0

09 Jan '20
commit d0068be0ddad3113052b213f5eab4d17211c38b3
Author: Neel Chauhan <neel(a)neelc.org>
Date: Sat Dec 14 13:16:59 2019 -0500
Allow ed25519 keys to be banned in approved-routers
---
src/feature/dirauth/process_descs.c | 197 +++++++++++++++++++++++++-----------
src/feature/dirauth/process_descs.h | 55 +++++++++-
src/feature/nodelist/routerlist.c | 13 ++-
src/feature/relay/router.c | 6 +-
4 files changed, 201 insertions(+), 70 deletions(-)
diff --git a/src/feature/dirauth/process_descs.c b/src/feature/dirauth/process_descs.c
index 8dae4e933..37c33b2c7 100644
--- a/src/feature/dirauth/process_descs.c
+++ b/src/feature/dirauth/process_descs.c
@@ -12,6 +12,8 @@
* them make those decisions.
**/
+#define PROCESS_DESCS_PRIVATE
+
#include "core/or/or.h"
#include "feature/dirauth/process_descs.h"
@@ -23,6 +25,7 @@
#include "feature/dirclient/dlstatus.h"
#include "feature/dircommon/directory.h"
#include "feature/nodelist/describe.h"
+#include "feature/nodelist/microdesc.h"
#include "feature/nodelist/networkstatus.h"
#include "feature/nodelist/nodelist.h"
#include "feature/nodelist/routerinfo.h"
@@ -34,44 +37,25 @@
#include "core/or/tor_version_st.h"
#include "feature/nodelist/extrainfo_st.h"
#include "feature/nodelist/node_st.h"
+#include "feature/nodelist/microdesc_st.h"
#include "feature/nodelist/routerinfo_st.h"
#include "feature/nodelist/routerstatus_st.h"
+#include "feature/nodelist/vote_routerstatus_st.h"
#include "lib/encoding/confline.h"
+#include "lib/crypt_ops/crypto_format.h"
/** How far in the future do we allow a router to get? (seconds) */
#define ROUTER_ALLOW_SKEW (60*60*12)
static void directory_remove_invalid(void);
-struct authdir_config_t;
static was_router_added_t dirserv_add_extrainfo(extrainfo_t *ei,
const char **msg);
static uint32_t
-dirserv_get_status_impl(const char *fp, const char *nickname,
- uint32_t addr, uint16_t or_port,
- const char *platform, const char **msg,
- int severity);
-
-/* 1 Historically used to indicate Named */
-#define RTR_INVALID 2 /**< Believed invalid. */
-#define RTR_REJECT 4 /**< We will not publish this router. */
-/* 8 Historically used to avoid using this as a dir. */
-#define RTR_BADEXIT 16 /**< We'll tell clients not to use this as an exit. */
-/* 32 Historically used to indicade Unnamed */
-
-/** Target of status_by_digest map. */
-typedef uint32_t rtr_flags_t;
-
-static void add_fingerprint_to_dir(const char *fp,
- struct authdir_config_t *list,
- rtr_flags_t add_status);
-
-/** List of nickname-\>identity fingerprint mappings for all the routers
- * that we name. Used to prevent router impersonation. */
-typedef struct authdir_config_t {
- strmap_t *fp_by_name; /**< Map from lc nickname to fingerprint. */
- digestmap_t *status_by_digest; /**< Map from digest to rtr_flags_t. */
-} authdir_config_t;
+dirserv_get_status_impl(const char *id_digest,
+ const ed25519_public_key_t *ed25519_public_key,
+ const char *nickname, uint32_t addr, uint16_t or_port,
+ const char *platform, const char **msg, int severity);
/** Should be static; exposed for testing. */
static authdir_config_t *fingerprint_list = NULL;
@@ -83,16 +67,35 @@ authdir_config_new(void)
authdir_config_t *list = tor_malloc_zero(sizeof(authdir_config_t));
list->fp_by_name = strmap_new();
list->status_by_digest = digestmap_new();
+ list->status_by_digest256 = digest256map_new();
return list;
}
+#ifdef TOR_UNIT_TESTS
+
+/** Initialize fingerprint_list to a new authdir_config_t. Used for tests. */
+void
+authdir_init_fingerprint_list(void)
+{
+ fingerprint_list = authdir_config_new();
+}
+
+/* Return the current fingerprint_list. Used for tests. */
+authdir_config_t *
+authdir_return_fingerprint_list(void)
+{
+ return fingerprint_list;
+}
+
+#endif /* defined(TOR_UNIT_TESTS) */
+
/** Add the fingerprint <b>fp</b> to the smartlist of fingerprint_entry_t's
* <b>list</b>, or-ing the currently set status flags with
* <b>add_status</b>.
*/
-/* static */ void
-add_fingerprint_to_dir(const char *fp, authdir_config_t *list,
- rtr_flags_t add_status)
+int
+add_rsa_fingerprint_to_dir(const char *fp, authdir_config_t *list,
+ rtr_flags_t add_status)
{
char *fingerprint;
char d[DIGEST_LEN];
@@ -107,7 +110,7 @@ add_fingerprint_to_dir(const char *fp, authdir_config_t *list,
log_warn(LD_DIRSERV, "Couldn't decode fingerprint \"%s\"",
escaped(fp));
tor_free(fingerprint);
- return;
+ return -1;
}
status = digestmap_get(list->status_by_digest, d);
@@ -118,13 +121,41 @@ add_fingerprint_to_dir(const char *fp, authdir_config_t *list,
tor_free(fingerprint);
*status |= add_status;
- return;
+ return 0;
+}
+
+/** Add the ed25519 key <b>edkey</b> to the smartlist of fingerprint_entry_t's
+ * <b>list</b>, or-ing the currently set status flags with <b>add_status</b>.
+ * Return -1 if we were unable to decode the key, else return 0.
+ */
+int
+add_ed25519_to_dir(const ed25519_public_key_t *edkey, authdir_config_t *list,
+ rtr_flags_t add_status)
+{
+ rtr_flags_t *status;
+
+ tor_assert(edkey);
+ tor_assert(list);
+
+ if (ed25519_validate_pubkey(edkey) < 0) {
+ log_warn(LD_DIRSERV, "Invalid ed25519 key \"%s\"", ed25519_fmt(edkey));
+ return -1;
+ }
+
+ status = digest256map_get(list->status_by_digest256, edkey->pubkey);
+ if (!status) {
+ status = tor_malloc_zero(sizeof(rtr_flags_t));
+ digest256map_set(list->status_by_digest256, edkey->pubkey, status);
+ }
+
+ *status |= add_status;
+ return 0;
}
/** Add the fingerprint for this OR to the global list of recognized
* identity key fingerprints. */
int
-dirserv_add_own_fingerprint(crypto_pk_t *pk)
+dirserv_add_own_fingerprint(crypto_pk_t *pk, const ed25519_public_key_t *edkey)
{
char fp[FINGERPRINT_LEN+1];
if (crypto_pk_get_fingerprint(pk, fp, 0)<0) {
@@ -133,7 +164,14 @@ dirserv_add_own_fingerprint(crypto_pk_t *pk)
}
if (!fingerprint_list)
fingerprint_list = authdir_config_new();
- add_fingerprint_to_dir(fp, fingerprint_list, 0);
+ if (add_rsa_fingerprint_to_dir(fp, fingerprint_list, 0) < 0) {
+ log_err(LD_BUG, "Error adding RSA fingerprint");
+ return -1;
+ }
+ if (add_ed25519_to_dir(edkey, fingerprint_list, 0) < 0) {
+ log_err(LD_BUG, "Error adding ed25519 key");
+ return -1;
+ }
return 0;
}
@@ -174,19 +212,11 @@ dirserv_load_fingerprint_file(void)
fingerprint_list_new = authdir_config_new();
for (list=front; list; list=list->next) {
- char digest_tmp[DIGEST_LEN];
rtr_flags_t add_status = 0;
nickname = list->key; fingerprint = list->value;
tor_strstrip(fingerprint, " "); /* remove spaces */
- if (strlen(fingerprint) != HEX_DIGEST_LEN ||
- base16_decode(digest_tmp, sizeof(digest_tmp),
- fingerprint, HEX_DIGEST_LEN) != sizeof(digest_tmp)) {
- log_notice(LD_CONFIG,
- "Invalid fingerprint (nickname '%s', "
- "fingerprint %s). Skipping.",
- nickname, fingerprint);
- continue;
- }
+
+ /* Determine what we should do with the relay with the nickname field. */
if (!strcasecmp(nickname, "!reject")) {
add_status = RTR_REJECT;
} else if (!strcasecmp(nickname, "!badexit")) {
@@ -194,7 +224,34 @@ dirserv_load_fingerprint_file(void)
} else if (!strcasecmp(nickname, "!invalid")) {
add_status = RTR_INVALID;
}
- add_fingerprint_to_dir(fingerprint, fingerprint_list_new, add_status);
+
+ /* Check if fingerprint is RSA or ed25519 by verifying it. */
+ int ed25519_not_ok = -1, rsa_not_ok = -1;
+
+ /* Attempt to add the RSA key. */
+ if (strlen(fingerprint) == HEX_DIGEST_LEN) {
+ rsa_not_ok = add_rsa_fingerprint_to_dir(fingerprint,
+ fingerprint_list_new,
+ add_status);
+ }
+
+ /* Check ed25519 key. We check the size to prevent buffer overflows.
+ * If valid, attempt to add it, */
+ ed25519_public_key_t ed25519_pubkey_tmp;
+ if (strlen(fingerprint) == BASE64_DIGEST256_LEN) {
+ if (!digest256_from_base64((char *) ed25519_pubkey_tmp.pubkey,
+ fingerprint)) {
+ ed25519_not_ok = add_ed25519_to_dir(&ed25519_pubkey_tmp,
+ fingerprint_list_new, add_status);
+ }
+ }
+
+ /* If both keys are invalid (or missing), log and skip. */
+ if (ed25519_not_ok && rsa_not_ok) {
+ log_warn(LD_CONFIG, "Invalid fingerprint (nickname '%s', "
+ "fingerprint %s). Skipping.", nickname, fingerprint);
+ continue;
+ }
}
config_free_lines(front);
@@ -233,6 +290,8 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
{
char d[DIGEST_LEN];
const int key_pinning = get_options()->AuthDirPinKeys;
+ uint32_t r;
+ ed25519_public_key_t *signing_key = NULL;
if (crypto_pk_get_digest(router->identity_pkey, d)) {
log_warn(LD_BUG,"Error computing fingerprint");
@@ -241,10 +300,15 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
return RTR_REJECT;
}
- /* Check for the more common reasons to reject a router first. */
- const uint32_t r = dirserv_get_status_impl(d, router->nickname,
- router->addr, router->or_port,
- router->platform, msg, severity);
+ /* First, check for the more common reasons to reject a router. */
+ if (router->cache_info.signing_key_cert) {
+ /* This has an ed25519 identity key. */
+ signing_key = &router->cache_info.signing_key_cert->signing_key;
+ }
+ r = dirserv_get_status_impl(d, signing_key, router->nickname, router->addr,
+ router->or_port, router->platform, msg,
+ severity);
+
if (r)
return r;
@@ -304,13 +368,15 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
/** Return true if there is no point in downloading the router described by
* <b>rs</b> because this directory would reject it. */
int
-dirserv_would_reject_router(const routerstatus_t *rs)
+dirserv_would_reject_router(const routerstatus_t *rs,
+ const vote_routerstatus_t *vrs)
{
uint32_t res;
+ struct ed25519_public_key_t pk;
+ memcpy(&pk.pubkey, vrs->ed25519_id, ED25519_PUBKEY_LEN);
- res = dirserv_get_status_impl(rs->identity_digest, rs->nickname,
- rs->addr, rs->or_port,
- NULL, NULL, LOG_DEBUG);
+ res = dirserv_get_status_impl(rs->identity_digest, &pk, rs->nickname,
+ rs->addr, rs->or_port, NULL, NULL, LOG_DEBUG);
return (res & RTR_REJECT) != 0;
}
@@ -357,15 +423,16 @@ dirserv_rejects_tor_version(const char *platform,
}
/** Helper: As dirserv_router_get_status, but takes the router fingerprint
- * (hex, no spaces), nickname, address (used for logging only), IP address, OR
- * port and platform (logging only) as arguments.
+ * (hex, no spaces), ed25519 key, nickname, address (used for logging only),
+ * IP address, OR port and platform (logging only) as arguments.
*
* Log messages at 'severity'. (There's not much point in
* logging that we're rejecting servers we'll not download.)
*/
static uint32_t
-dirserv_get_status_impl(const char *id_digest, const char *nickname,
- uint32_t addr, uint16_t or_port,
+dirserv_get_status_impl(const char *id_digest,
+ const ed25519_public_key_t *ed25519_public_key,
+ const char *nickname, uint32_t addr, uint16_t or_port,
const char *platform, const char **msg, int severity)
{
uint32_t result = 0;
@@ -398,16 +465,23 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
if (status_by_digest)
result |= *status_by_digest;
+ if (ed25519_public_key) {
+ status_by_digest = digest256map_get(fingerprint_list->status_by_digest256,
+ ed25519_public_key->pubkey);
+ if (status_by_digest)
+ result |= *status_by_digest;
+ }
+
if (result & RTR_REJECT) {
if (msg)
- *msg = "Fingerprint is marked rejected -- if you think this is a "
- "mistake please set a valid email address in ContactInfo and "
- "send an email to bad-relays(a)lists.torproject.org mentioning "
- "your fingerprint(s)?";
+ *msg = "Fingerprint and/or ed25519 identity is marked rejected -- if "
+ "you think this is a mistake please set a valid email address "
+ "in ContactInfo and send an email to "
+ "bad-relays(a)lists.torproject.org mentioning your fingerprint(s)?";
return RTR_REJECT;
} else if (result & RTR_INVALID) {
if (msg)
- *msg = "Fingerprint is marked invalid";
+ *msg = "Fingerprint and/or ed25519 identity is marked invalid";
}
if (authdir_policy_badexit_address(addr, or_port)) {
@@ -446,6 +520,7 @@ dirserv_free_fingerprint_list(void)
strmap_free(fingerprint_list->fp_by_name, tor_free_);
digestmap_free(fingerprint_list->status_by_digest, tor_free_);
+ digest256map_free(fingerprint_list->status_by_digest256, tor_free_);
tor_free(fingerprint_list);
}
diff --git a/src/feature/dirauth/process_descs.h b/src/feature/dirauth/process_descs.h
index e504daa7b..269a95044 100644
--- a/src/feature/dirauth/process_descs.h
+++ b/src/feature/dirauth/process_descs.h
@@ -15,6 +15,48 @@
// for was_router_added_t.
#include "feature/nodelist/routerlist.h"
+#include "src/lib/crypt_ops/crypto_ed25519.h"
+
+struct authdir_config_t;
+
+/** Target of status_by_digest map. */
+typedef uint32_t rtr_flags_t;
+
+int add_rsa_fingerprint_to_dir(const char *fp, struct authdir_config_t *list,
+ rtr_flags_t add_status);
+
+int add_ed25519_to_dir(const ed25519_public_key_t *edkey,
+ struct authdir_config_t *list,
+ rtr_flags_t add_status);
+
+/** List of nickname-\>identity fingerprint mappings for all the routers
+ * that we name. Used to prevent router impersonation. */
+typedef struct authdir_config_t {
+ strmap_t *fp_by_name; /**< Map from lc nickname to fingerprint. */
+ digestmap_t *status_by_digest; /**< Map from digest to router_status_t. */
+ digest256map_t *status_by_digest256; /**< Map from digest256 to
+ * router_status_t. */
+} authdir_config_t;
+
+#if defined(PROCESS_DESCS_PRIVATE) || defined(TOR_UNIT_TESTS)
+
+/* 1 Historically used to indicate Named */
+#define RTR_INVALID 2 /**< Believed invalid. */
+#define RTR_REJECT 4 /**< We will not publish this router. */
+/* 8 Historically used to avoid using this as a dir. */
+#define RTR_BADEXIT 16 /**< We'll tell clients not to use this as an exit. */
+/* 32 Historically used to indicade Unnamed */
+
+#endif /* defined(TOR_UNIT_TESTS) */
+
+#ifdef TOR_UNIT_TESTS
+
+void authdir_init_fingerprint_list(void);
+
+authdir_config_t *authdir_return_fingerprint_list(void);
+
+#endif /* defined(PROCESS_DESCS_PRIVATE) || defined(TOR_UNIT_TESTS) */
+
void dirserv_free_fingerprint_list(void);
#ifdef HAVE_MODULE_DIRAUTH
@@ -28,11 +70,13 @@ enum was_router_added_t dirserv_add_descriptor(routerinfo_t *ri,
const char **msg,
const char *source);
-int dirserv_would_reject_router(const routerstatus_t *rs);
+int dirserv_would_reject_router(const routerstatus_t *rs,
+ const vote_routerstatus_t *vrs);
int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
int complain,
int *valid_out);
-int dirserv_add_own_fingerprint(crypto_pk_t *pk);
+int dirserv_add_own_fingerprint(crypto_pk_t *pk,
+ const ed25519_public_key_t *edkey);
uint32_t dirserv_router_get_status(const routerinfo_t *router,
const char **msg,
int severity);
@@ -68,9 +112,11 @@ dirserv_add_descriptor(routerinfo_t *ri,
return (enum was_router_added_t)0;
}
static inline int
-dirserv_would_reject_router(const routerstatus_t *rs)
+dirserv_would_reject_router(const routerstatus_t *rs,
+ const vote_routerstatus_t *vrs)
{
(void)rs;
+ (void)vrs;
return 0;
}
static inline int
@@ -85,9 +131,10 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
return 0;
}
static inline int
-dirserv_add_own_fingerprint(crypto_pk_t *pk)
+dirserv_add_own_fingerprint(crypto_pk_t *pk, const ed25519_public_key_t *edkey)
{
(void)pk;
+ (void)edkey;
return 0;
}
static inline uint32_t
diff --git a/src/feature/nodelist/routerlist.c b/src/feature/nodelist/routerlist.c
index 0709a3bbe..59d421da6 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -2558,8 +2558,15 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
map = digestmap_new();
list_pending_descriptor_downloads(map, 0);
SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, void *, rsp) {
- routerstatus_t *rs =
- is_vote ? &(((vote_routerstatus_t *)rsp)->status) : rsp;
+ routerstatus_t *rs;
+ vote_routerstatus_t *vrs;
+ if (is_vote) {
+ rs = &(((vote_routerstatus_t *)rsp)->status);
+ vrs = rsp;
+ } else {
+ rs = rsp;
+ vrs = NULL;
+ }
signed_descriptor_t *sd;
if ((sd = router_get_by_descriptor_digest(rs->descriptor_digest))) {
const routerinfo_t *ri;
@@ -2584,7 +2591,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
++n_delayed; /* Not ready for retry. */
continue;
}
- if (authdir && dirserv_would_reject_router(rs)) {
+ if (authdir && is_vote && dirserv_would_reject_router(rs, vrs)) {
++n_would_reject;
continue; /* We would throw it out immediately. */
}
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 410ed8c2f..1915c020e 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -1074,8 +1074,10 @@ init_keys(void)
if (authdir_mode_v3(options)) {
const char *m = NULL;
routerinfo_t *ri;
- /* We need to add our own fingerprint so it gets recognized. */
- if (dirserv_add_own_fingerprint(get_server_identity_key())) {
+ /* We need to add our own fingerprint and ed25519 key so it gets
+ * recognized. */
+ if (dirserv_add_own_fingerprint(get_server_identity_key(),
+ get_master_identity_key())) {
log_err(LD_GENERAL,"Error adding own fingerprint to set of relays");
return -1;
}
1
0
commit 9129de7017b42f1aa24c4777aa76d4053230863a
Author: Neel Chauhan <neel(a)neelc.org>
Date: Sat Dec 14 13:22:15 2019 -0500
Add dirserv_load_fingerprint_file() test
---
src/test/test_dir.c | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 301 insertions(+)
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 02465b07f..aac7afb52 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -50,6 +50,7 @@
#include "feature/hibernate/hibernate.h"
#include "feature/nodelist/authcert.h"
#include "feature/nodelist/dirlist.h"
+#include "feature/nodelist/microdesc.h"
#include "feature/nodelist/networkstatus.h"
#include "feature/nodelist/nickname.h"
#include "feature/nodelist/node_select.h"
@@ -78,6 +79,7 @@
#include "feature/nodelist/authority_cert_st.h"
#include "feature/nodelist/document_signature_st.h"
#include "feature/nodelist/extrainfo_st.h"
+#include "feature/nodelist/microdesc_st.h"
#include "feature/nodelist/networkstatus_st.h"
#include "feature/nodelist/networkstatus_voter_info_st.h"
#include "feature/dirauth/ns_detached_signatures_st.h"
@@ -7209,6 +7211,300 @@ test_dir_format_versions_list(void *arg)
teardown_capture_of_logs();
}
+static void
+test_dir_add_fingerprint(void *arg)
+{
+ (void)arg;
+ authdir_config_t *list;
+ int ret;
+ ed25519_secret_key_t seckey;
+ ed25519_public_key_t pubkey_good, pubkey_bad;
+
+ authdir_init_fingerprint_list();
+ list = authdir_return_fingerprint_list();
+
+ setup_capture_of_logs(LOG_WARN);
+
+ /* RSA test - successful */
+ ret = add_rsa_fingerprint_to_dir("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+ list, 0);
+ tt_int_op(ret, OP_EQ, 0);
+
+ /* RSA test - failure */
+ ret = add_rsa_fingerprint_to_dir("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",
+ list, 0);
+ tt_int_op(ret, OP_EQ, -1);
+
+ /* ed25519 test - successful */
+ ed25519_secret_key_generate(&seckey, 0);
+ ed25519_public_key_generate(&pubkey_good, &seckey);
+
+ ret = add_ed25519_to_dir(&pubkey_good, list, 0);
+ tt_int_op(ret, OP_EQ, 0);
+
+ /* ed25519 test - failure */
+ digest256_from_base64((char *) pubkey_bad.pubkey, "gibberish");
+
+ ret = add_ed25519_to_dir(&pubkey_bad, list, 0);
+ tt_int_op(ret, OP_EQ, -1);
+
+ done:
+ teardown_capture_of_logs();
+ dirserv_free_fingerprint_list();
+}
+
+static void
+test_dir_dirserv_load_fingerprint_file(void *arg)
+{
+ (void)arg;
+ char *fname = tor_strdup(get_fname("approved-routers"));
+
+ // Neither RSA nor ed25519
+ const char *router_lines_invalid =
+ "!badexit notafingerprint";
+ const char *router_lines_too_long =
+ "!badexit thisisareallylongstringthatislongerthanafingerprint\n";
+ const char *router_lines_bad_fmt_str =
+ "!badexit ABCDEFGH|%1$p|%2$p|%3$p|%4$p|%5$p|%6$p\n";
+ const char *router_lines_valid_rsa =
+ "!badexit AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n";
+ const char *router_lines_invalid_rsa =
+ "!badexit ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n";
+ const char *router_lines_valid_ed25519 =
+ "!badexit wqfLzgfCtRfYNg88LsL1QpzxS0itapJ1aj6TbnByx/Q\n";
+ const char *router_lines_invalid_ed25519 =
+ "!badexit --fLzgfCtRfYNg88LsL1QpzxS0itapJ1aj6TbnByx--\n";
+
+ // Test: Invalid Fingerprint (not RSA or ed25519)
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_invalid, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ expect_log_msg_containing("Invalid fingerprint");
+ teardown_capture_of_logs();
+
+ // Test: Very long string (longer than RSA or ed25519 key)
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_too_long, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ expect_log_msg_containing("Invalid fingerprint");
+ teardown_capture_of_logs();
+
+ // Test: Formt string exploit
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_bad_fmt_str, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ expect_log_msg_containing("Invalid fingerprint");
+ teardown_capture_of_logs();
+
+ // Test: Valid RSA
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_valid_rsa, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ teardown_capture_of_logs();
+
+ // Test: Invalid RSA
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_invalid_rsa, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ expect_log_msg_containing("Invalid fingerprint");
+ teardown_capture_of_logs();
+
+ // Test: Valid ed25519
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_valid_ed25519, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ teardown_capture_of_logs();
+
+ // Test: Invalid ed25519
+ setup_capture_of_logs(LOG_NOTICE);
+ write_str_to_file(fname, router_lines_invalid_ed25519, 0);
+ tt_int_op(dirserv_load_fingerprint_file(), OP_EQ, 0);
+ expect_log_msg_containing("Invalid fingerprint");
+ teardown_capture_of_logs();
+
+ done:
+ tor_free(fname);
+ dirserv_free_fingerprint_list();
+}
+
+#define RESET_FP_LIST(list) STMT_BEGIN \
+ dirserv_free_fingerprint_list(); \
+ authdir_init_fingerprint_list(); \
+ list = authdir_return_fingerprint_list(); \
+ STMT_END
+
+static void
+test_dir_dirserv_router_get_status(void *arg)
+{
+ authdir_config_t *list;
+ routerinfo_t *ri = NULL;
+ ed25519_keypair_t kp1, kp2;
+ char d[DIGEST_LEN];
+ char fp[HEX_DIGEST_LEN+1];
+ int ret;
+ const char *msg;
+ time_t now = time(NULL);
+
+ (void)arg;
+
+ crypto_pk_t *pk = pk_generate(0);
+
+ authdir_init_fingerprint_list();
+ list = authdir_return_fingerprint_list();
+
+ /* Set up the routerinfo */
+ ri = tor_malloc_zero(sizeof(routerinfo_t));
+ ri->addr = 0xc0a80001u;
+ ri->or_port = 9001;
+ ri->platform = tor_strdup("0.4.0.1-alpha");
+ ri->nickname = tor_strdup("Jessica");
+ ri->identity_pkey = crypto_pk_dup_key(pk);
+
+ curve25519_keypair_t ri_onion_keypair;
+ curve25519_keypair_generate(&ri_onion_keypair, 0);
+ ri->onion_curve25519_pkey = tor_memdup(&ri_onion_keypair.pubkey,
+ sizeof(curve25519_public_key_t));
+
+ ed25519_secret_key_from_seed(&kp1.seckey,
+ (const uint8_t*)"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY");
+ ed25519_public_key_generate(&kp1.pubkey, &kp1.seckey);
+ ed25519_secret_key_from_seed(&kp2.seckey,
+ (const uint8_t*)"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
+ ed25519_public_key_generate(&kp2.pubkey, &kp2.seckey);
+ ri->cache_info.signing_key_cert = tor_cert_create(&kp1,
+ CERT_TYPE_ID_SIGNING,
+ &kp2.pubkey,
+ now, 86400,
+ CERT_FLAG_INCLUDE_SIGNING_KEY);
+
+ crypto_pk_get_digest(ri->identity_pkey, d);
+ base16_encode(fp, HEX_DIGEST_LEN + 1, d, DIGEST_LEN);
+
+ /* Try on an empty fingerprint list */
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, 0);
+ RESET_FP_LIST(list);
+
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, 0);
+ RESET_FP_LIST(list);
+
+ /* Try an accepted router */
+ add_rsa_fingerprint_to_dir(fp, list, 0);
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, 0);
+ RESET_FP_LIST(list);
+
+ add_ed25519_to_dir(&kp1.pubkey, list, 0);
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, 0);
+ RESET_FP_LIST(list);
+
+ /* Try a rejected router */
+ add_rsa_fingerprint_to_dir(fp, list, RTR_REJECT);
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, RTR_REJECT);
+ RESET_FP_LIST(list);
+
+ add_ed25519_to_dir(&kp1.pubkey, list, RTR_REJECT);
+ ret = dirserv_router_get_status(ri, &msg, LOG_INFO);
+ tt_int_op(ret, OP_EQ, RTR_REJECT);
+ RESET_FP_LIST(list);
+
+ done:
+ dirserv_free_fingerprint_list();
+ routerinfo_free(ri);
+ crypto_pk_free(pk);
+}
+
+static void
+test_dir_dirserv_would_reject_router(void *arg)
+{
+ authdir_config_t *list;
+ routerstatus_t rs;
+ vote_routerstatus_t vrs;
+ ed25519_keypair_t kp;
+ char fp[HEX_DIGEST_LEN+1];
+
+ (void)arg;
+
+ authdir_init_fingerprint_list();
+ list = authdir_return_fingerprint_list();
+
+ /* Set up the routerstatus */
+ memset(&rs, 0, sizeof(rs));
+ rs.addr = 0xc0a80001u;
+ rs.or_port = 9001;
+ strlcpy(rs.nickname, "Nicole", sizeof(rs.nickname));
+ memcpy(rs.identity_digest, "Cloud nine is great ", DIGEST_LEN);
+
+ ed25519_secret_key_from_seed(&kp.seckey,
+ (const uint8_t*)"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY");
+ ed25519_public_key_generate(&kp.pubkey, &kp.seckey);
+
+ base16_encode(fp, HEX_DIGEST_LEN + 1, rs.identity_digest, DIGEST_LEN);
+
+ /* Setup the vote_routerstatus_t. */
+ memcpy(vrs.ed25519_id, &kp.pubkey, ED25519_PUBKEY_LEN);
+
+ /* Try an empty fingerprint list */
+ tt_assert(!dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ tt_assert(!dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ /* Try an accepted router */
+ add_rsa_fingerprint_to_dir(fp, list, 0);
+ tt_assert(!dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ add_ed25519_to_dir(&kp.pubkey, list, 0);
+ tt_assert(!dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ /* Try a rejected router */
+ add_rsa_fingerprint_to_dir(fp, list, RTR_REJECT);
+ tt_assert(dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ add_ed25519_to_dir(&kp.pubkey, list, RTR_REJECT);
+ tt_assert(dirserv_would_reject_router(&rs, &vrs));
+ RESET_FP_LIST(list);
+
+ done:
+ dirserv_free_fingerprint_list();
+}
+
+static void
+test_dir_dirserv_add_own_fingerprint(void *arg)
+{
+ authdir_config_t *list;
+ char digest[DIGEST_LEN];
+ crypto_pk_t *pk = pk_generate(0);
+
+ (void)arg;
+
+ init_mock_ed_keys(pk);
+ authdir_init_fingerprint_list();
+ list = authdir_return_fingerprint_list();
+ dirserv_add_own_fingerprint(pk, get_master_identity_key());
+
+ /* Check if we have a RSA key. */
+ crypto_pk_get_digest(pk, digest);
+ tt_assert(digestmap_get(list->status_by_digest, digest));
+
+ /* Check if we have a ed25519 key. */
+ tt_assert(digest256map_get(list->status_by_digest256,
+ get_master_identity_key()->pubkey));
+
+ RESET_FP_LIST(list);
+
+ done:
+ dirserv_free_fingerprint_list();
+ crypto_pk_free(pk);
+}
+
#ifndef COCCI
#define DIR_LEGACY(name) \
{ #name, test_dir_ ## name , TT_FORK, NULL, NULL }
@@ -7298,5 +7594,10 @@ struct testcase_t dir_tests[] = {
DIR(platform_str, 0),
DIR(networkstatus_consensus_has_ipv6, TT_FORK),
DIR(format_versions_list, TT_FORK),
+ DIR(add_fingerprint, TT_FORK),
+ DIR(dirserv_load_fingerprint_file, TT_FORK),
+ DIR(dirserv_router_get_status, TT_FORK),
+ DIR(dirserv_would_reject_router, TT_FORK),
+ DIR(dirserv_add_own_fingerprint, TT_FORK),
END_OF_TESTCASES
};
1
0
commit 84d8dd831474fb92c22e018826c1bbe8c49ae980
Author: Neel Chauhan <neel(a)neelc.org>
Date: Sat Dec 14 13:26:42 2019 -0500
Update tor.1 man page for Bug #22029
---
doc/tor.1.txt | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index ae08c31c1..c6a89ab8e 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -3619,13 +3619,14 @@ __DataDirectory__/**`hashed-fingerprint`**::
identity key. (That is, the hash of the hash of the identity key.)
__DataDirectory__/**`approved-routers`**::
- Only used by authoritative directory servers. This file lists the status of
- routers by their identity fingerprint. Each line lists a status and a
- fingerprint separated by whitespace. See your **`fingerprint`** file in the
- __DataDirectory__ for an example line. If the status is **!reject**, then
- the descriptors from the given identity (fingerprint) are rejected by this
- server. If it is **!invalid**, then the descriptors are accepted but marked
- in the directory as not valid, that is, not recommended.
+ Only used by authoritative directory servers. This file lists the status
+ and a fingerprint/pubkey. Each line lists a status and a fingerprint
+ separated by whitespace. See your **fingerprint** file in the
+ __DataDirectory__ for an example fingerprint line. If the status is
+ **!reject** then descriptors from the given identity (fingerprint/pubkey)
+ are rejected by this server. If it is **!invalid** then descriptors are
+ accepted but marked in the directory as not valid, that is, not
+ recommended.
__DataDirectory__/**`v3-status-votes`**::
Only for v3 authoritative directory servers. This file contains status
1
0
commit 686c5e90a31c6a47a6b3ef6946fc2019b2015c78
Author: Neel Chauhan <neel(a)neelc.org>
Date: Sat Dec 14 13:27:26 2019 -0500
Add changes file for Bug #22029
---
changes/bug22029 | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/changes/bug22029 b/changes/bug22029
new file mode 100644
index 000000000..6bfb7012f
--- /dev/null
+++ b/changes/bug22029
@@ -0,0 +1,5 @@
+ o Major features (directory authority, ed25519):
+ Add support for banning a relay's ed25519 keys in the approved-routers
+ file. This will allow us to migrate away from RSA keys in the future.
+ Previously, only RSA keys could be banned in approved-routers. Resolves
+ ticket 22029. Patch by Neel Chauhan.
1
0

09 Jan '20
commit 93894fb770afbbea9850e850ff9e1bb23d7cc4e1
Merge: e45810113 686c5e90a
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Thu Jan 9 15:27:32 2020 -0500
Merge branch 'ticket22029_attempt_squashed'
changes/bug22029 | 5 +
doc/tor.1.txt | 15 +-
src/feature/dirauth/process_descs.c | 197 +++++++++++++++--------
src/feature/dirauth/process_descs.h | 55 ++++++-
src/feature/nodelist/routerlist.c | 13 +-
src/feature/relay/router.c | 6 +-
src/test/test_dir.c | 301 ++++++++++++++++++++++++++++++++++++
7 files changed, 515 insertions(+), 77 deletions(-)
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 09 Jan '20
by translation@torproject.org 09 Jan '20
09 Jan '20
commit 1d444a2b8ae6f924744d02bce5677823a12d2905
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Jan 9 20:23:24 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ru.po | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/contents+ru.po b/contents+ru.po
index 7df64f3df8..c3bffee164 100644
--- a/contents+ru.po
+++ b/contents+ru.po
@@ -7238,6 +7238,10 @@ msgid ""
"Unfortunately, JavaScript can also enable attacks on the security of the "
"[web browser](#web-browser), which might lead to deanonymization."
msgstr ""
+"Язык программирования. Широко используется на веб-сайтах для создания "
+"интерактивных элементов, таких как видео, аудио, временные шкалы. К "
+"сожалению, JavaScript также открывает возможности для атак на [браузер"
+"](#web-browser), что может привести к деанонимизации пользователя."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7246,6 +7250,9 @@ msgid ""
"Browser](#tor-browser) can be used to manage JavaScript on different "
"websites."
msgstr ""
+"В [Tor Browser](#tor-browser) установлено [дополнение](#add-on-extension-or-"
+"plugin) [NoScript](#noscript). Оно может использоваться для управления "
+"JavaScript на разных сайтах."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 09 Jan '20
by translation@torproject.org 09 Jan '20
09 Jan '20
commit 9b04eafb133907d63ffde6f7632ed54f149e8cc4
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Jan 9 19:53:47 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ru.po | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/contents+ru.po b/contents+ru.po
index ffe834df99..7df64f3df8 100644
--- a/contents+ru.po
+++ b/contents+ru.po
@@ -7102,6 +7102,9 @@ msgid ""
"[traffic](#traffic) moving between [relays](#relay) in a "
"[circuit](#circuit)."
msgstr ""
+"В контексте [Tor](#tor-/-tor-network/-core-tor) термин \"hop\" (\"переход\")"
+" относится к [трафику](#traffic), который перемещается между "
+"[узлами](#relay) в [цепочке](#circuit)."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7116,6 +7119,10 @@ msgid ""
"only web pages, it is now relied upon to deliver many forms of data and "
"communication."
msgstr ""
+"[Hypertext Transfer Protocol, HTTP](#http) – протокол гипертекстовой "
+"передачи данных. Набор правил передачи файлов и прочих данных между сетевыми"
+" устройствами. Изначально применялся только для веб-страниц. Сегодня "
+"применяется для передачи разных форм данных и коммуникаций."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7136,7 +7143,7 @@ msgstr ""
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### HTTPS Everywhere"
-msgstr ""
+msgstr "### HTTPS Everywhere"
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7145,15 +7152,15 @@ msgid ""
"](#add-on-extension-or-plugin) that makes [HTTPS](#https) the default on "
"websites that have set up HTTPS but have not made it the default."
msgstr ""
-"HTTPS Everywhere – [extension](#add-on-extension-or-plugin) для браузеров "
+"HTTPS Everywhere – [дополнение](#add-on-extension-or-plugin) для браузеров "
"[Firefox](#firefox), Chrome и Opera. Определяет [HTTPS](#https) как протокол"
-" по умолчанию на веб-сайтах, у которых есть HTTPS-версия, но она не "
-"установлена по умолчанию."
+" по умолчанию на веб-сайтах, где HTTPS-версия есть, но не установлена по "
+"умолчанию."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "HTTPS Everywhere is installed in [Tor Browser](#tor-browser)."
-msgstr "HTTPS Everywhere уже установлено в [Tor Browser](#tor-browser)."
+msgstr "HTTPS Everywhere входит в состав [Tor Browser](#tor-browser)."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7200,6 +7207,8 @@ msgid ""
"The IP address is the location address of the device, similar to the "
"addresses of physical locations."
msgstr ""
+"IP-адрес отражает местонахождение устройства, играя в сети ту же роль, что и"
+" физические адреса в офлайновом мире."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 09 Jan '20
by translation@torproject.org 09 Jan '20
09 Jan '20
commit 70e918e35e81e2dcb048bc4aae27c91cb2445aaa
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Jan 9 18:53:30 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ru.po | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/contents+ru.po b/contents+ru.po
index aa3d9cb3a2..ffe834df99 100644
--- a/contents+ru.po
+++ b/contents+ru.po
@@ -6957,6 +6957,15 @@ msgid ""
"network/-core-tor) because their firewall blocks Tor connections. You can "
"reconfigure or disable your firewall and restart Tor to test this."
msgstr ""
+"Брандмауэр (межсетевой экран, файруолл). Сетевая система обеспечения "
+"безопасности. Осуществляет мониторинг и контроль входящего и исходящего "
+"[трафика](#traffic). Фильтры такой системы основаны на заранее определенных "
+"правилах. По сути брандмауэр создает барьер между доверенной, безопасной "
+"внутренней сетью и всем остальным. Брандмауэр также можно использовать как "
+"инструмент [цензуры](#network-censorship), фильтруя содержимое коммуникаций."
+" Иногда у пользователей возникают проблемы подключения к [Tor](#tor-/-tor-"
+"network/-core-tor), потому что брандмауэр блокирует Tor-соединения. В таком "
+"случае можно перенастроить или отключить брандмауэр и перезапустить Tor."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -6972,6 +6981,11 @@ msgid ""
"services that use Flash also offer an HTML5 alternative, which should work "
"in the Tor Browser."
msgstr ""
+"Flash-плеер, [плагин к браузеру](#add-on-extension-or-plugin), позволяет "
+"интернет-[приложениям](#app) просматривать аудио- и видеоматериалы. Не "
+"следует включать Flash при работе [Tor Browser](#tor-browser), это "
+"небезопасно. У многих ресурсов, которые используют Flash, есть альтернатива "
+"в виде HTML5, которая должна работать с Tor Browser."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7034,9 +7048,9 @@ msgid ""
"[bridge](#bridge). When using a bridge, the bridge takes the place of the "
"guard."
msgstr ""
-"Входной [узел](#relay) в [цепочке Tor](#circuit). Является первым, если не "
-"используется [мост](#bridge). При использовании моста тот занимает место "
-"входного узла."
+"Входной (\"сторожевой\") [узел](#relay) в [цепочке Tor](#circuit). Является "
+"первым, если не используется [мост](#bridge). При использовании моста тот "
+"занимает место входного узла."
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
@@ -7046,7 +7060,7 @@ msgstr "## H"
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### hash"
-msgstr ""
+msgstr "### hash"
#: https//support.torproject.org/misc/glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
1
0