From 8cee68231fa81a4cff2eb3693f5a5d579b7871ad Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Tue, 10 Dec 2024 08:20:03 -0600 Subject: [PATCH] Kana Steimle reported: While glibc gracefully ignores calling closedir() on a null pointer, musl will instead segfault, which causes programs that rely on dirtree_recurse or dirtree_flagread (cp, du, find, tar...) to segfault if it encounters a directory it isn't able to open. (I used a different fix.) --- lib/dirtree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dirtree.c b/lib/dirtree.c index 2d120890..5634759e 100644 --- a/lib/dirtree.c +++ b/lib/dirtree.c @@ -201,7 +201,7 @@ int dirtree_recurse(struct dirtree *node, } done: - closedir(dir); + if (dir) closedir(dir); node->dirfd = -1; return (new == DIRTREE_ABORTVAL) ? DIRTREE_ABORT : flags; -- 2.39.5