aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ. Ryan Stinnett <jryans@gmail.com>2016-12-04 22:26:52 -0600
committerJ. Ryan Stinnett <jryans@gmail.com>2016-12-06 11:11:43 -1000
commit9b2b799d82e00286145d42b9c59cb4f820e4f8c7 (patch)
treee85a73b242499c5e82de56a99af6c6e69728b8c1
parent8a0ea3ee43da0063c2546092662fa7ce4900bc2c (diff)
downloadtor-9b2b799d82e00286145d42b9c59cb4f820e4f8c7.tar.gz
tor-9b2b799d82e00286145d42b9c59cb4f820e4f8c7.zip
Accept non-space whitespace characters in log severity syntax.
Adds a test_config_parse_log_severity unit test to verify behavior. Fixes #19965.
-rw-r--r--changes/199653
-rw-r--r--src/common/log.c4
-rw-r--r--src/test/test_config.c29
3 files changed, 32 insertions, 4 deletions
diff --git a/changes/19965 b/changes/19965
new file mode 100644
index 0000000000..904f5c9db0
--- /dev/null
+++ b/changes/19965
@@ -0,0 +1,3 @@
+ o Minor bugfix (configuration):
+ - Accept non-space whitespace characters after the severity level in the
+ `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
diff --git a/src/common/log.c b/src/common/log.c
index 3b0eb882c3..1c592c6bda 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -1319,10 +1319,8 @@ parse_log_severity_config(const char **cfg_ptr,
if (got_an_unqualified_range > 1)
return -1;
- space = strchr(cfg, ' ');
+ space = find_whitespace(cfg);
dash = strchr(cfg, '-');
- if (!space)
- space = strchr(cfg, '\0');
if (dash && dash < space) {
sev_lo = tor_strndup(cfg, dash-cfg);
sev_hi = tor_strndup(dash+1, space-(dash+1));
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 2fc37b0bb8..bf2beb8206 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -4890,6 +4890,33 @@ test_config_parse_port_config__ports__server_options(void *data)
config_free_lines(config_port_valid); config_port_valid = NULL;
}
+static void
+test_config_parse_log_severity(void *data)
+{
+ int ret;
+ const char *severity_log_lines[] = {
+ "debug file /tmp/debug.log",
+ "debug\tfile /tmp/debug.log",
+ "[handshake]debug [~net,~mm]info notice stdout",
+ "[handshake]debug\t[~net,~mm]info\tnotice\tstdout",
+ NULL
+ };
+ int i;
+ log_severity_list_t *severity;
+
+ (void) data;
+
+ severity = tor_malloc(sizeof(log_severity_list_t));
+ for (i = 0; severity_log_lines[i]; i++) {
+ memset(severity, 0, sizeof(log_severity_list_t));
+ ret = parse_log_severity_config(&severity_log_lines[i], severity);
+ tt_int_op(ret, OP_EQ, 0);
+ }
+
+ done:
+ tor_free(severity);
+}
+
#define CONFIG_TEST(name, flags) \
{ #name, test_config_ ## name, flags, NULL, NULL }
@@ -4916,6 +4943,6 @@ struct testcase_t config_tests[] = {
CONFIG_TEST(parse_port_config__ports__no_ports_given, 0),
CONFIG_TEST(parse_port_config__ports__server_options, 0),
CONFIG_TEST(parse_port_config__ports__ports_given, 0),
+ CONFIG_TEST(parse_log_severity, 0),
END_OF_TESTCASES
};
-