tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit a7ec493d88bfdd2735ee50893dfa890e60900e2b
parent 66074ad1e21cfe6c98a70b279ed690e357d1c41c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu, 12 Jul 2018 08:59:23 -0400

Merge remote-tracking branch 'imnotbad/bug26663'

Diffstat:
Achanges/ticket26663 | 3+++
Msrc/app/config/config.c | 2+-
Msrc/app/config/confparse.c | 2+-
Msrc/test/test_config.c | 14++++++++++++++
4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/changes/ticket26663 b/changes/ticket26663 @@ -0,0 +1,3 @@ + o Minor features(config): + - Parsing of "auto" keyword in torrc is now case insensitive. + Fixes bug 26663; bugfix on 0.3.5.0-alpha diff --git a/src/app/config/config.c b/src/app/config/config.c @@ -7001,7 +7001,7 @@ parse_port_config(smartlist_t *out, port = 0; else port = 1; - } else if (!strcmp(addrport, "auto")) { + } else if (!strcasecmp(addrport, "auto")) { port = CFG_AUTO_PORT; int af = tor_addr_parse(&addr, defaultaddr); tor_assert(af >= 0); diff --git a/src/app/config/confparse.c b/src/app/config/confparse.c @@ -267,7 +267,7 @@ config_assign_value(const config_format_t *fmt, void *options, break; case CONFIG_TYPE_AUTOBOOL: - if (!strcmp(c->value, "auto")) + if (!strcasecmp(c->value, "auto")) *(int *)lvalue = -1; else if (!strcmp(c->value, "0")) *(int *)lvalue = 0; diff --git a/src/test/test_config.c b/src/test/test_config.c @@ -4637,6 +4637,20 @@ test_config_parse_port_config__ports__ports_given(void *data) tor_addr_parse(&addr, "127.0.0.46"); tt_assert(tor_addr_eq(&port_cfg->addr, &addr)) + // Test success with a port of auto in mixed case + config_free_lines(config_port_valid); config_port_valid = NULL; + SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); + smartlist_clear(slout); + config_port_valid = mock_config_line("DNSPort", "AuTo"); + ret = parse_port_config(slout, config_port_valid, "DNS", 0, + "127.0.0.46", 0, 0); + tt_int_op(ret, OP_EQ, 0); + tt_int_op(smartlist_len(slout), OP_EQ, 1); + port_cfg = (port_cfg_t *)smartlist_get(slout, 0); + tt_int_op(port_cfg->port, OP_EQ, CFG_AUTO_PORT); + tor_addr_parse(&addr, "127.0.0.46"); + tt_assert(tor_addr_eq(&port_cfg->addr, &addr)) + // Test success with parsing both an address and an auto port config_free_lines(config_port_valid); config_port_valid = NULL; SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));