tor

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

commit 13034e1574bf5ee8c7bacba2c1c19a4a8adc8de8
parent 19615bce64cd381a925bc3910120ac39ca918e7c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri, 19 May 2017 15:50:27 -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.

Diffstat:
Msrc/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 @@ -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