From: teor Date: Sun, 11 Jan 2015 08:33:04 +0000 (+1100) Subject: Don't crash on torrc Vi[rtualAddrNetworkIPv[4|6]] with no option value X-Git-Tag: tor-0.2.6.3-alpha~182^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b08cfc65a78527cc97f4d0aeff3217d5f1c93e08;p=thirdparty%2Ftor.git 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. --- 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",