diff options
author | teor <teor2345@gmail.com> | 2015-01-11 19:33:04 +1100 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-01-11 11:05:00 -0500 |
commit | b08cfc65a78527cc97f4d0aeff3217d5f1c93e08 (patch) | |
tree | c3230af788dec3640932ebb33090067ac9019ba0 /src/or/addressmap.c | |
parent | 2b9d48791d0b5245e3ccfd267150dfa34541c87c (diff) | |
download | tor-b08cfc65a78527cc97f4d0aeff3217d5f1c93e08.tar.gz tor-b08cfc65a78527cc97f4d0aeff3217d5f1c93e08.zip |
Don't crash on torrc Vi[rtualAddrNetworkIPv[4|6]] with no option value
Check for a missing option value in parse_virtual_addr_network
before asserting on the NULL in tor_addr_parse_mask_ports.
This avoids crashing on torrc lines like Vi[rtualAddrNetworkIPv[4|6]]
when no value follows the option.
Bugfix on 0.2.3 (de4cc126cbb5 on 24 November 2012), fixes #14142.
Diffstat (limited to 'src/or/addressmap.c')
-rw-r--r-- | src/or/addressmap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/or/addressmap.c b/src/or/addressmap.c index 998770a3db..4253532cec 100644 --- a/src/or/addressmap.c +++ b/src/or/addressmap.c @@ -738,6 +738,12 @@ parse_virtual_addr_network(const char *val, sa_family_t family, const int max_bits = ipv6 ? 40 : 16; virtual_addr_conf_t *conf = ipv6 ? &virtaddr_conf_ipv6 : &virtaddr_conf_ipv4; + if (!val || val[0] == '\0') { + if (msg) + tor_asprintf(msg, "Value not present (%s) after VirtualAddressNetwork%s", + val?"Empty":"NULL", ipv6?"IPv6":""); + return -1; + } if (tor_addr_parse_mask_ports(val, 0, &addr, &bits, NULL, NULL) < 0) { if (msg) tor_asprintf(msg, "Error parsing VirtualAddressNetwork%s %s", |