summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorteor <teor2345@gmail.com>2015-01-11 19:33:04 +1100
committerNick Mathewson <nickm@torproject.org>2015-01-11 11:05:00 -0500
commitb08cfc65a78527cc97f4d0aeff3217d5f1c93e08 (patch)
treec3230af788dec3640932ebb33090067ac9019ba0
parent2b9d48791d0b5245e3ccfd267150dfa34541c87c (diff)
downloadtor-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.
-rw-r--r--changes/bug14142-parse-virtual-addr7
-rw-r--r--src/or/addressmap.c6
2 files changed, 13 insertions, 0 deletions
diff --git a/changes/bug14142-parse-virtual-addr b/changes/bug14142-parse-virtual-addr
new file mode 100644
index 0000000000..f78b7c7d81
--- /dev/null
+++ b/changes/bug14142-parse-virtual-addr
@@ -0,0 +1,7 @@
+ o Minor bugfixes (client):
+ - 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.
+ Patch by "teor".
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",