On Sun, Jul 14, 2013 at 09:23:05AM +0200, J??r??mie Courr??ges-Anglas wrote: > David Hill <dh...@mindcry.org> writes: > > > Hello - > > Hi, > > > doit() was not free()'ing memory or close()'ing the file descriptor if > > realpath() failed or dlopen() returned NULL. > > > > This diff just moves close() and free() up once we are done using them. > > Makes sense. ok?
Makes sense to me too. ok krw@ .... Ken > > > Index: ldd/ldd.c > > =================================================================== > > RCS file: /cvs/src/libexec/ld.so/ldd/ldd.c,v > > retrieving revision 1.15 > > diff -u -p -r1.15 ldd.c > > --- ldd/ldd.c 29 Apr 2011 07:19:19 -0000 1.15 > > +++ ldd/ldd.c 5 Jul 2013 18:12:43 -0000 > > @@ -126,12 +126,14 @@ doit(char *name) > > free(phdr); > > return 1; > > } > > + close(fd); > > > > for (i = 0; i < ehdr.e_phnum; i++) > > if (phdr[i].p_type == PT_INTERP) { > > interp = 1; > > break; > > } > > + free(phdr); > > > > if (ehdr.e_type == ET_DYN && !interp) { > > printf("%s:\n", name); > > @@ -144,13 +146,8 @@ doit(char *name) > > printf("%s\n", dlerror()); > > return 1; > > } > > - close(fd); > > - free(phdr); > > return 0; > > } > > - > > - close(fd); > > - free(phdr); > > > > if (i == ehdr.e_phnum) { > > warnx("%s: not a dynamic executable", name); > > >