diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-09-28 09:49:30 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-28 09:49:30 -0400 |
commit | f71ff0cabc36b5aeb790f133c00ac1ccfdfefacb (patch) | |
tree | eb9bd5af71be147448385f6d912009cec283359e | |
parent | 5b6f2713cd7d6e1611fd3d8bc8e456a91d06e2f1 (diff) | |
download | tor-f71ff0cabc36b5aeb790f133c00ac1ccfdfefacb.tar.gz tor-f71ff0cabc36b5aeb790f133c00ac1ccfdfefacb.zip |
Unit test for case where %included dir exists but is unreadable
-rw-r--r-- | src/test/test_config.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/test_config.c b/src/test/test_config.c index 0941931bc9..e9cdf9ddb1 100644 --- a/src/test/test_config.c +++ b/src/test/test_config.c @@ -4949,6 +4949,41 @@ test_config_include_empty_file_folder(void *data) tor_free(dir); } +#ifndef _WIN32 +static void +test_config_include_no_permission(void *data) +{ + (void)data; + config_line_t *result = NULL; + + char *folder_path = NULL; + char *dir = tor_strdup(get_fname("test_include_forbidden_folder")); + tt_ptr_op(dir, OP_NE, NULL); + + tt_int_op(mkdir(dir, 0700), OP_EQ, 0); + + tor_asprintf(&folder_path, "%s"PATH_SEPARATOR"forbidden_dir", dir); + tt_int_op(mkdir(folder_path, 0100), OP_EQ, 0); + + char torrc_contents[1000]; + tor_snprintf(torrc_contents, sizeof(torrc_contents), + "%%include %s\n", + folder_path); + + int include_used; + tt_int_op(config_get_lines_include(torrc_contents, &result, 0,&include_used), + OP_EQ, -1); + tt_ptr_op(result, OP_EQ, NULL); + + done: + config_free_lines(result); + tor_free(folder_path); + if (dir) + chmod(dir, 0700); + tor_free(dir); +} +#endif + static void test_config_include_recursion_before_after(void *data) { @@ -5437,6 +5472,9 @@ struct testcase_t config_tests[] = { CONFIG_TEST(include_does_not_exist, 0), CONFIG_TEST(include_error_in_included_file, 0), CONFIG_TEST(include_empty_file_folder, 0), +#ifndef _WIN32 + CONFIG_TEST(include_no_permission, 0), +#endif CONFIG_TEST(include_recursion_before_after, 0), CONFIG_TEST(include_recursion_after_only, 0), CONFIG_TEST(include_folder_order, 0), |