aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_address.c
diff options
context:
space:
mode:
authorteor <teor@torproject.org>2019-09-19 15:24:01 +1000
committerteor <teor@torproject.org>2019-09-19 16:19:04 +1000
commit46fea1dfeeae1b575d427a9c3c6b4a8d1ab7f2b9 (patch)
tree3d8e1f89cee26acff65e9159fc70aa305a572f73 /src/test/test_address.c
parentd6d3e829dd20b78e2b80e52f0e3865a1002e653b (diff)
downloadtor-46fea1dfeeae1b575d427a9c3c6b4a8d1ab7f2b9.tar.gz
tor-46fea1dfeeae1b575d427a9c3c6b4a8d1ab7f2b9.zip
test: dirserv_router_has_valid_address() with zero-family addresses
Sometimes tor doesn't initialise an address, so its family is zero. Failing test for 31793. Future commits will fix the code.
Diffstat (limited to 'src/test/test_address.c')
-rw-r--r--src/test/test_address.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/test_address.c b/src/test/test_address.c
index ef6daa06b4..c186cda73b 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -1271,10 +1271,44 @@ test_address_dirserv_router_addr_private(void *ignored)
(void)ignored;
/* A stub routerinfo structure, with only its address fields set. */
routerinfo_t *ri = NULL;
+
CHECK_RI_ADDR("1.0.0.1", 0);
CHECK_RI_ADDR("10.0.0.1", -1);
+
CHECK_RI_ADDR6("2600::1", 0);
CHECK_RI_ADDR6("fe80::1", -1);
+
+ /* Null addresses */
+ /* IPv4 null fails, regardless of IPv6 */
+ CHECK_RI_ADDR("0.0.0.0", -1);
+
+ {
+ ri = tor_malloc_zero(sizeof(routerinfo_t));
+ ri->addr = 0; /* 0.0.0.0 */
+ tor_addr_parse(&ri->ipv6_addr, "::");
+ tt_int_op(dirserv_router_has_valid_address(ri), OP_EQ, -1);
+ tor_free(ri);
+ }
+
+ /* IPv6 null succeeds, because IPv4 is not null */
+ CHECK_RI_ADDR6("::", 0);
+
+ /* Byte-zeroed null addresses */
+ /* IPv4 null fails, regardless of IPv6 */
+ {
+ ri = tor_malloc_zero(sizeof(routerinfo_t));
+ tt_int_op(dirserv_router_has_valid_address(ri), OP_EQ, -1);
+ tor_free(ri);
+ }
+
+ /* IPv6 null succeeds, because IPv4 is not internal */
+ {
+ ri = tor_malloc_zero(sizeof(routerinfo_t));
+ ri->addr = 16777217; /* 1.0.0.1 */
+ tt_int_op(dirserv_router_has_valid_address(ri), OP_EQ, 0);
+ tor_free(ri);
+ }
+
done:
tor_free(ri);
}