[tor-commits] [tor/master] Accept non-space whitespace characters in log severity syntax.

nickm at torproject.org nickm at torproject.org
Mon Dec 12 14:47:06 UTC 2016


commit 9b2b799d82e00286145d42b9c59cb4f820e4f8c7
Author: J. Ryan Stinnett <jryans at gmail.com>
Date:   Sun Dec 4 22:26:52 2016 -0600

    Accept non-space whitespace characters in log severity syntax.
    
    Adds a test_config_parse_log_severity unit test to verify behavior.
    
    Fixes #19965.
---
 changes/19965          |  3 +++
 src/common/log.c       |  4 +---
 src/test/test_config.c | 29 ++++++++++++++++++++++++++++-
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/changes/19965 b/changes/19965
new file mode 100644
index 0000000..904f5c9
--- /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 3b0eb88..1c592c6 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 2fc37b0..bf2beb8 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
 };
-





More information about the tor-commits mailing list