open, fopen: close fd leak in last patch
authorEric Blake <ebb9@byu.net>
Wed, 24 Sep 2008 16:55:19 +0000 (10:55 -0600)
committerEric Blake <ebb9@byu.net>
Wed, 24 Sep 2008 16:55:19 +0000 (10:55 -0600)
* lib/open.c (rpl_open): Close fd before returning error.
* lib/fopen.c (rpl_fopen): Close fd before returning error.
* doc/posix-functions/open.texi (open): Document that Irix also
has the bug.
* doc/posix-functions/fopen.texi (fopen): Likewise.
Reported by Paolo Bonzini.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
doc/posix-functions/fopen.texi
doc/posix-functions/open.texi
lib/fopen.c
lib/open.c

index 22bf905..49c1b2f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-09-24  Eric Blake  <ebb9@byu.net>
+
+       open, fopen: close fd leak in last patch
+       * lib/open.c (rpl_open): Close fd before returning error.
+       * lib/fopen.c (rpl_fopen): Close fd before returning error.
+       * doc/posix-functions/open.texi (open): Document that Irix also
+       has the bug.
+       * doc/posix-functions/fopen.texi (fopen): Likewise.
+       Reported by Paolo Bonzini.
+
 2008-09-24  Bruno Haible  <bruno@clisp.org>
 
        Ensure that a filename ending in a slash cannot be used to access a
index 5fdb8da..57794fb 100644 (file)
@@ -12,7 +12,7 @@ Portability problems fixed by Gnulib:
 This function does not fail when the file name argument ends in a slash
 and (without the slash) names a nonexistent file or a file that is not a
 directory, on some platforms:
-HP-UX 11.00, Solaris 9.
+HP-UX 11.00, Solaris 9, Irix 5.3.
 @item
 On Windows platforms (excluding Cygwin), this function does usually not
 recognize the @file{/dev/null} filename.
index ed3155d..1986f0c 100644 (file)
@@ -12,7 +12,7 @@ Portability problems fixed by Gnulib:
 This function does not fail when the file name argument ends in a slash
 and (without the slash) names a nonexistent file or a file that is not a
 directory, on some platforms:
-HP-UX 11.00, Solaris 9.
+HP-UX 11.00, Solaris 9, Irix 5.3.
 @item
 On Windows platforms (excluding Cygwin), this function does usually not
 recognize the @file{/dev/null} filename.
index f64122b..d6e048b 100644 (file)
@@ -72,6 +72,7 @@ rpl_fopen (const char *filename, const char *mode)
 
        if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode))
          {
+           close (fd);
            errno = ENOTDIR;
            return NULL;
          }
index 317fb8a..97c30ce 100644 (file)
@@ -115,6 +115,7 @@ open (const char *filename, int flags, ...)
 
          if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode))
            {
+             close (fd);
              errno = ENOTDIR;
              return -1;
            }