diff --git a/src/test/test_addr.c b/src/test/test_addr.c index 05d8bf6c7b..a961a46854 100644 --- a/src/test/test_addr.c +++ b/src/test/test_addr.c @@ -788,6 +788,10 @@ test_addr_parse(void *arg) r= tor_addr_parse(&addr, "11:22:33:44:55:66:77:88:1.2.3.4"); tt_int_op(r,OP_EQ, -1); + /* IPv6 address with port and no brackets */ + r= tor_addr_parse(&addr, "11:22::33:44:12345"); + tt_int_op(r, OP_EQ, -1); + /* Correct call. */ r= tor_addr_port_parse(LOG_DEBUG, "192.0.2.1:1234", @@ -834,6 +838,18 @@ test_addr_parse(void *arg) tt_int_op(r, OP_EQ, 0); tt_int_op(port,OP_EQ,400); + /* Allow IPv6 without square brackets, when there is no port */ + r= tor_addr_port_parse(LOG_DEBUG, + "::1", + &addr, &port, -1); + tt_int_op(r, OP_EQ, -1); + + r= tor_addr_port_parse(LOG_DEBUG, + "::1", + &addr, &port, 600); + tt_int_op(r, OP_EQ, 0); + tt_int_op(port,OP_EQ,600); + /* Bad port. */ r= tor_addr_port_parse(LOG_DEBUG, "192.0.2.2:66666", @@ -854,12 +870,29 @@ test_addr_parse(void *arg) &addr, &port, 200); tt_int_op(r, OP_EQ, -1); - /* Bad IP address */ + /* Bad IPv4 address */ r= tor_addr_port_parse(LOG_DEBUG, "192.0.2:1234", &addr, &port, -1); tt_int_op(r, OP_EQ, -1); + /* Bad IPv4 address and port: brackets */ + r= tor_addr_port_parse(LOG_DEBUG, + "[192.0.2.3]:12345", + &addr, &port, -1); + tt_int_op(r, OP_EQ, -1); + + /* Bad IPv6 addresses and ports: no brackets */ + r= tor_addr_port_parse(LOG_DEBUG, + "::1:12345", + &addr, &port, -1); + tt_int_op(r, OP_EQ, -1); + + r= tor_addr_port_parse(LOG_DEBUG, + "11:22::33:44:12345", + &addr, &port, -1); + tt_int_op(r, OP_EQ, -1); + /* Make sure that the default port has lower priority than the real one */ r= tor_addr_port_parse(LOG_DEBUG,