Commit b07ed22c authored by George Kadianakis's avatar George Kadianakis
Browse files

Merge remote-tracking branch 'tor-gitlab/mr/273'

parents 5ebf2b81 d2c2204b
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.
......@@ -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;
......
......@@ -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"};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment