summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@riseup.net>2021-04-08 14:20:53 +0300
committerGeorge Kadianakis <desnacked@riseup.net>2021-04-08 14:20:53 +0300
commitb07ed22cbb43fe0aaac3f1b13f4902cea895d724 (patch)
tree00f696438fc25816ae27ab90e2c8bf025666b431
parent5ebf2b81a1db144a933b2971d580452d0eafcd31 (diff)
parentd2c2204b2ac564cd71fd0be1ea3efabd6f84fc36 (diff)
downloadtor-b07ed22cbb43fe0aaac3f1b13f4902cea895d724.tar.gz
tor-b07ed22cbb43fe0aaac3f1b13f4902cea895d724.zip
Merge remote-tracking branch 'tor-gitlab/mr/273'
-rw-r--r--changes/bug401414
-rw-r--r--src/lib/fs/path.c10
-rw-r--r--src/test/test_util.c7
3 files changed, 10 insertions, 11 deletions
diff --git a/changes/bug40141 b/changes/bug40141
new file mode 100644
index 0000000000..cf2641cfde
--- /dev/null
+++ b/changes/bug40141
@@ -0,0 +1,4 @@
+ o Minor bugfixes (configuration):
+ - Fix globbing directories on all platforms when using %include options in
+ configuration files. This patch also fixes compilation on musl libc based
+ systems. Fixes bug 40141; bugfix on 0.4.5.1-alpha.
diff --git a/src/lib/fs/path.c b/src/lib/fs/path.c
index 8c4b08f50a..48d610ab7b 100644
--- a/src/lib/fs/path.c
+++ b/src/lib/fs/path.c
@@ -611,11 +611,13 @@ tor_glob(const char *pattern)
return NULL;
}
- // #40141: workaround for bug in glibc < 2.19 where patterns ending in path
- // separator match files and folders instead of folders only
+ // #40141, !249: workaround for glibc bug where patterns ending in path
+ // separator match files and folders instead of folders only.
+ // this could be in #ifdef __GLIBC__ but: 1. it might affect other libcs too,
+ // and 2. it doesn't cost much to stat each match again since libc is already
+ // supposed to do it (otherwise the file may be on slow NFS or something)
size_t pattern_len = strlen(pattern);
- bool dir_only = has_glob(pattern) &&
- pattern_len > 0 && pattern[pattern_len-1] == *PATH_SEPARATOR;
+ bool dir_only = pattern_len > 0 && pattern[pattern_len-1] == *PATH_SEPARATOR;
result = smartlist_new();
size_t i;
diff --git a/src/test/test_util.c b/src/test/test_util.c
index b8766ae9e0..f10aed71ac 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -4562,15 +4562,8 @@ test_util_glob(void *ptr)
TEST("file1");
EXPECT(results_test9);
-#if defined(__APPLE__) || defined(__darwin__) || \
- defined(__FreeBSD__) || defined(__NetBSD__) || defined(OpenBSD)
TEST("file1"PATH_SEPARATOR);
EXPECT_EMPTY();
-#else
- const char *results_test10[] = {"file1"};
- TEST("file1"PATH_SEPARATOR);
- EXPECT(results_test10);
-#endif /* defined(__APPLE__) || defined(__darwin__) || ... */
// test path separator at end - with wildcards and linux path separator
const char *results_test11[] = {"dir1", "dir2", "forbidden"};