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);
> >
> 

Reply via email to