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 (de4cc126cb on 24 November 2012), fixes #14142.
This commit is contained in:
teor 2015-01-11 19:33:04 +11:00 committed by Nick Mathewson
parent 2b9d48791d
commit b08cfc65a7
2 changed files with 13 additions and 0 deletions

View File

@ -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".

View File

@ -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",