瀏覽代碼

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.
Rich Felker 1 年之前
父節點
當前提交
79bdacff83
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/regex/glob.c

+ 1 - 1
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;
 	}