Hi,

Masao Uebayashi wrote on Wed, Jun 24, 2015 at 12:16:35PM +0900:

> ls(1) omits fts_close(3) after fts_open(3), resulting in an FD leak.
> Found by Valgrind.

As far as i can see, the code is correct, there doesn't seem to be
a leak.  The function traverse() is static and only called at the
very end of ls_main().  The function ls_main() is only called at
the very end of main(), file main.c.  So your patch would close
the file descriptor right before exit.

Yours,
  Ingo


> Index: bin/ls/ls.c
> ===================================================================
> RCS file: /cvs/src/bin/ls/ls.c,v
> retrieving revision 1.40
> diff -u -p -r1.40 ls.c
> --- bin/ls/ls.c       18 Apr 2015 18:28:36 -0000      1.40
> +++ bin/ls/ls.c       24 Jun 2015 03:10:47 -0000
> @@ -403,6 +403,8 @@ traverse(int argc, char *argv[], int opt
>               }
>       if (errno)
>               err(1, "fts_read");
> +
> +     fts_close(ftsp);
>  }
>  
>  /*

Reply via email to