summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlukem <lukem@NetBSD.org>2009-01-03 06:12:14 +0000
committerlukem <lukem@NetBSD.org>2009-01-03 06:12:14 +0000
commita2c38ed82e5cedcc634b5844f0cd34caaef7d7b3 (patch)
treef506e0cdcb8bdaacaa30c8bfc6280ada7f523363
parent2bd5b480332b0970c8fd56183b7a47ffa8e18ae0 (diff)
Ensure fts_close() doesn't spuriously close fd 0,
by testing FTS_SYMFOLLOW in fts_flags instead of fts_options. Fix provided by Ben Harris in PR 40319
-rw-r--r--lib/libc/gen/fts.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libc/gen/fts.c b/lib/libc/gen/fts.c
index d9faf5bad60..4822dab45b7 100644
--- a/lib/libc/gen/fts.c
+++ b/lib/libc/gen/fts.c
@@ -1,4 +1,4 @@
-/* $NetBSD: fts.c,v 1.34 2008/09/27 15:12:00 lukem Exp $ */
+/* $NetBSD: fts.c,v 1.35 2009/01/03 06:12:14 lukem Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#else
-__RCSID("$NetBSD: fts.c,v 1.34 2008/09/27 15:12:00 lukem Exp $");
+__RCSID("$NetBSD: fts.c,v 1.35 2009/01/03 06:12:14 lukem Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -256,7 +256,7 @@ fts_close(FTS *sp)
* list which has a valid parent pointer.
*/
if (sp->fts_cur) {
- if (ISSET(FTS_SYMFOLLOW))
+ if (sp->fts_cur->fts_flags & FTS_SYMFOLLOW)
(void)close(sp->fts_cur->fts_symfd);
for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) {
freep = p;