From 79bdacff83a6bd5b70ff5ae5eb8b6de82c2f7c30 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 24 Aug 2023 12:54:51 -0400 Subject: glob: fix wrong return code when aborting before any matches when the result count was zero, glob was ignoring a possible GLOB_ABORTED error code and returning GLOB_NOMATCH. whether this happened could be nondeterministic and dependent on the order of dirent enumeration, in cases where multiple matches were present and only some produced errors. caught by Tor's test_util_glob. --- src/regex/glob.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/regex/glob.c b/src/regex/glob.c index a4906446..87bae084 100644 --- a/src/regex/glob.c +++ b/src/regex/glob.c @@ -265,7 +265,7 @@ int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, i if (append(&tail, pat, strlen(pat), 0)) return GLOB_NOSPACE; cnt++; - } else + } else if (!error) return GLOB_NOMATCH; } -- cgit v1.2.1