Plug a leak in ls.
authorJim Meyering <jim@meyering.net>
Mon, 29 Jan 2007 13:18:28 +0000 (14:18 +0100)
committerJim Meyering <jim@meyering.net>
Mon, 29 Jan 2007 13:18:28 +0000 (14:18 +0100)
* src/ls.c (print_dir): Don't leak a "DIR"+fd upon failure to
determine dev/inode or upon detecting a symlink loop.

ChangeLog
src/ls.c

index a90e169..d0de2f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-01-29  Jim Meyering  <jim@meyering.net>
 
+       Plug a leak in ls.
+       * src/ls.c (print_dir): Don't leak a "DIR"+fd upon failure to
+       determine dev/inode or upon detecting a symlink loop.
+
        * src/ls.c: Rename three global variables.
        (cwd_file): Rename from 'files'.
        (cwd_n_alloc): Rename from 'nfiles'.
index 4a6d7c1..dbcc83e 100644 (file)
--- a/src/ls.c
+++ b/src/ls.c
@@ -2342,6 +2342,7 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
        {
          file_failure (command_line_arg,
                        _("cannot determine device and inode of %s"), name);
+         closedir (dirp);
          return;
        }
 
@@ -2351,6 +2352,7 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
        {
          error (0, 0, _("%s: not listing already-listed directory"),
                 quotearg_colon (name));
+         closedir (dirp);
          return;
        }