[tor-commits] [tor/master] Try another approach to fixing the bug in the #1922 test.

nickm at torproject.org nickm at torproject.org
Fri May 19 19:51:02 UTC 2017


commit 13034e1574bf5ee8c7bacba2c1c19a4a8adc8de8
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri May 19 15:50:27 2017 -0400

    Try another approach to fixing the bug in the #1922 test.
    
    This isn't elegant, but it seems to be the best way around all of
    the issues involved in escaping and quoting that we've gotten into
    over the years.
---
 src/test/test_config.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/test/test_config.c b/src/test/test_config.c
index 80579ea..eaf7e0d 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -5164,6 +5164,8 @@ test_config_include_path_syntax(void *data)
 
   config_line_t *result = NULL;
   char *dir = tor_strdup(get_fname("test_include_path_syntax"));
+  char *esc_dir = NULL, *dir_with_pathsep = NULL,
+    *esc_dir_with_pathsep = NULL, *torrc_contents = NULL;
   tt_ptr_op(dir, OP_NE, NULL);
 
 #ifdef _WIN32
@@ -5172,18 +5174,18 @@ test_config_include_path_syntax(void *data)
   tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
 #endif
 
-#ifdef _WIN32
-#define ESCAPED_PATH_SEPARATOR "\\" PATH_SEPARATOR
-#else
-#define ESCAPED_PATH_SEPARATOR PATH_SEPARATOR
-#endif
 
-  char torrc_contents[1000];
-  tor_snprintf(torrc_contents, sizeof(torrc_contents),
-               "%%include \"%s\"\n"
-               "%%include %s"PATH_SEPARATOR"\n"
-                "%%include \"%s"ESCAPED_PATH_SEPARATOR"\"\n",
-               dir, dir, dir);
+  esc_dir = esc_for_log(dir);
+  tor_asprintf(&dir_with_pathsep, "%s%s", dir, PATH_SEPARATOR);
+  esc_dir_with_pathsep = esc_for_log(dir_with_pathsep);
+
+  tor_asprintf(&torrc_contents,
+               "%%include %s\n"
+               "%%include %s%s \n" // space to avoid suppressing newline
+               "%%include %s\n",
+               esc_dir,
+               dir, PATH_SEPARATOR,
+               esc_dir_with_pathsep);
 
   int include_used;
   tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used),
@@ -5194,6 +5196,10 @@ test_config_include_path_syntax(void *data)
  done:
   config_free_lines(result);
   tor_free(dir);
+  tor_free(torrc_contents);
+  tor_free(esc_dir);
+  tor_free(dir_with_pathsep);
+  tor_free(esc_dir_with_pathsep);
 }
 
 static void



More information about the tor-commits mailing list