[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: getcwd.c fix: don't use closed FD
From: |
Jim Meyering |
Subject: |
FYI: getcwd.c fix: don't use closed FD |
Date: |
Mon, 19 Feb 2007 21:07:19 +0100 |
I don't know of a system on which this bug can be exercised.
I found it only by manually building getcwd.o, even though
this system already has a mostly-working one.
The symptom is that getcwd would always fail with ENOENT.
Don't use FD after a successful "fdopendir (fd)".
* lib/getcwd.c (__getcwd) [AT_FDCWD]: fdopendir (fd) usually closes fd.
Reset it by calling dirfd on the just-obtained DIR*.
Index: lib/getcwd.c
===================================================================
RCS file: /sources/gnulib/gnulib/lib/getcwd.c,v
retrieving revision 1.19
diff -u -p -r1.19 getcwd.c
--- lib/getcwd.c 19 Feb 2007 02:24:42 -0000 1.19
+++ lib/getcwd.c 19 Feb 2007 20:03:17 -0000
@@ -234,6 +234,8 @@ __getcwd (char *buf, size_t size)
dirstream = fdopendir (fd);
if (dirstream == NULL)
goto lose;
+ /* Reset fd. It may have been closed by fdopendir. */
+ fd = dirfd (dirstream);
fd_needs_closing = false;
#else
dirstream = __opendir (dotlist);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: getcwd.c fix: don't use closed FD,
Jim Meyering <=