int ret;
smartlist_t *slout = NULL;
port_cfg_t *port_cfg = NULL;
- config_line_t *config_port_invalid = NULL, *config_port_valid = NULL;
slout = smartlist_new();
done:
smartlist_free(slout);
- tor_free(config_port_invalid);
- tor_free(config_port_valid);
}
static void
tt_int_op(ret, OP_EQ, -1);
// Test error when encounters an empty unix domain specification
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "unix:");
ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, NULL,
0, 0);
// Test failure if we have no ipv4 and no ipv6 (for unix domain sockets,
// this makes no sense - it should be fixed)
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort",
"unix:/tmp/foo/bar NoIPv4Traffic");
ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS",
// Test success with no ipv4 but take ipv6 (for unix domain sockets, this
// makes no sense - it should be fixed)
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "unix:/tmp/foo/bar "
"NoIPv4Traffic IPv6Traffic");
// Test success with both ipv4 and ipv6 (for unix domain sockets,
// this makes no sense - it should be fixed)
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "unix:/tmp/foo/bar "
"IPv4Traffic IPv6Traffic");
#endif
// Test failure if we specify world writable for an IP Port
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "42 WorldWritable");
ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test failure if we specify group writable for an IP Port
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "42 GroupWritable");
ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test success with only a port (this will fail without a default address)
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort", "42");
ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
// Test success with only a port and isolate destination port
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateDestPort");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT | ISO_DESTPORT);
// Test success with a negative isolate destination port, and plural
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoIsolateDestPorts");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT & ~ISO_DESTPORT);
// Test success with isolate destination address
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateDestAddr");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT | ISO_DESTADDR);
// Test success with isolate socks AUTH
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateSOCKSAuth");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT | ISO_SOCKSAUTH);
// Test success with isolate client protocol
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateClientProtocol");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT | ISO_CLIENTPROTO);
// Test success with isolate client address
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IsolateClientAddr");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
ISO_DEFAULT | ISO_CLIENTADDR);
// Test success with ignored unknown options
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort", "42 ThisOptionDoesntExist");
ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0,
"127.0.0.3", 0, 0);
tt_int_op(ret, OP_EQ, 0);
// Test success with no isolate socks AUTH
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoIsolateSOCKSAuth");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.socks_prefer_no_auth, OP_EQ, 1);
// Test success with prefer ipv6
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IPv6Traffic PreferIPv6");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS",
tt_int_op(port_cfg->entry_cfg.prefer_ipv6, OP_EQ, 1);
// Test success with cache ipv4 DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheIPv4DNS");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.cache_ipv6_answers, OP_EQ, 0);
// Test success with cache ipv6 DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheIPv6DNS");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.cache_ipv6_answers, OP_EQ, 1);
// Test success with no cache ipv4 DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoCacheIPv4DNS");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.cache_ipv6_answers, OP_EQ, 0);
// Test success with cache DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 CacheDNS");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.cache_ipv6_answers, OP_EQ, 1);
// Test success with use cached ipv4 DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseIPv4Cache");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.use_cached_ipv6_answers, OP_EQ, 0);
// Test success with use cached ipv6 DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseIPv6Cache");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.use_cached_ipv6_answers, OP_EQ, 1);
// Test success with use cached DNS
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 UseDNSCache");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.use_cached_ipv6_answers, OP_EQ, 1);
// Test success with not preferring ipv6 automap
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 NoPreferIPv6Automap");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.prefer_ipv6_virtaddr, OP_EQ, 0);
// Test success with prefer SOCKS no auth
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 PreferSOCKSNoAuth");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.socks_prefer_no_auth, OP_EQ, 1);
// Test failure with both a zero port and a non-zero port
- tor_free(config_port_invalid);
- tor_free(config_port_valid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "0");
config_port_valid = mock_config_line("DNSPort", "42");
tt_int_op(ret, OP_EQ, 0);
// Test success with both ipv4 and ipv6 but without stream options
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 IPv4Traffic "
"IPv6Traffic");
tt_int_op(port_cfg->entry_cfg.ipv6_traffic, OP_EQ, 0);
// Test failure for a SessionGroup argument with invalid value
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=invalid");
ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
// Potential bug.
// Test failure for a SessionGroup argument with valid value but with stream
// options allowed
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123");
ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
tt_int_op(ret, OP_EQ, -1);
// Test failure for more than one SessionGroup argument
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123 "
"SessionGroup=321");
tt_int_op(ret, OP_EQ, -1);
// Test success with a sessiongroup options
- tor_free(config_port_valid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "42 SessionGroup=1111122");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(port_cfg->entry_cfg.session_group, OP_EQ, 1111122);
// Test success with a zero unix domain socket, and doesnt add it to out
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "0");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_int_op(smartlist_len(slout), OP_EQ, 0);
// Test success with a one unix domain socket, and doesnt add it to out
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "something");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_str_op(port_cfg->unix_addr, OP_EQ, "something");
// Test success with a port of auto - it uses the default address
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "auto");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_assert(tor_addr_eq(&port_cfg->addr, &addr))
// Test success with parsing both an address and an auto port
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.122:auto");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_assert(tor_addr_eq(&port_cfg->addr, &addr))
// Test failure when asked to parse an invalid address followed by auto
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
config_port_invalid = mock_config_line("DNSPort", "invalidstuff!!:auto");
ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0,
"127.0.0.46", 0, 0);
tt_int_op(ret, OP_EQ, -1);
// Test success with parsing both an address and a real port
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.123:656");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0,
tt_assert(tor_addr_eq(&port_cfg->addr, &addr))
// Test failure if we can't parse anything at all
- tor_free(config_port_invalid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "something wrong");
ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
tt_int_op(ret, OP_EQ, -1);
// Test failure if we find both an address, a port and an auto
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.1.0:123:auto");
ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0,
// Test that default to group writeable default sets group writeable for
// domain socket
- tor_free(config_port_valid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "unix:/tmp/somewhere");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS",
done:
smartlist_free(slout);
- tor_free(config_port_invalid);
- tor_free(config_port_valid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
+ config_free_lines(config_port_valid); config_port_valid = NULL;
}
static void
slout = smartlist_new();
// Test success with NoAdvertise option
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
config_port_valid = mock_config_line("DNSPort",
"127.0.0.124:656 NoAdvertise");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
tt_int_op(port_cfg->server_cfg.no_listen, OP_EQ, 0);
// Test success with NoListen option
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
tt_int_op(port_cfg->server_cfg.no_listen, OP_EQ, 1);
// Test failure with both NoAdvertise and NoListen option
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen "
"NoAdvertise");
tt_int_op(ret, OP_EQ, -1);
// Test success with IPv4Only
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 IPv4Only");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
tt_int_op(port_cfg->server_cfg.bind_ipv6_only, OP_EQ, 0);
// Test success with IPv6Only
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "[::1]:656 IPv6Only");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
tt_int_op(port_cfg->server_cfg.bind_ipv6_only, OP_EQ, 1);
// Test failure with both IPv4Only and IPv6Only
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 IPv6Only "
"IPv4Only");
tt_int_op(ret, OP_EQ, -1);
// Test success with invalid parameter
- tor_free(config_port_valid);
+ config_free_lines(config_port_valid); config_port_valid = NULL;
smartlist_clear(slout);
config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 unknown");
ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0,
tt_int_op(smartlist_len(slout), OP_EQ, 1);
// Test failure when asked to bind only to ipv6 but gets an ipv4 address
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort",
"127.0.0.124:656 IPv6Only");
tt_int_op(ret, OP_EQ, -1);
// Test failure when asked to bind only to ipv4 but gets an ipv6 address
- tor_free(config_port_invalid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
smartlist_clear(slout);
config_port_invalid = mock_config_line("DNSPort", "[::1]:656 IPv4Only");
ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL,
done:
smartlist_free(slout);
- tor_free(config_port_invalid);
- tor_free(config_port_valid);
+ config_free_lines(config_port_invalid); config_port_invalid = NULL;
+ config_free_lines(config_port_valid); config_port_valid = NULL;
}
#define CONFIG_TEST(name, flags) \