This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch 2/3] Fix abort() on missing section headers


On Sat, 2014-02-22 at 22:08 +0100, Jan Kratochvil wrote:
> probably obvious, easy to debug with [patch 3/3] applied.
>
> > 2014-02-22  Jan Kratochvil  <jan.kratochvil@redhat.com>
> > 
> > 	Fix abort() on missing section headers.
> > 	* dwarf_begin_elf.c (check_section): Replace abort call by a return;
> > [...]
> > @@ -187,9 +187,9 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
> >    /* Get the section header data.  */
> >    shdr = gelf_getshdr (scn, &shdr_mem);
> >    if (shdr == NULL)
> > -    /* This should never happen.  If it does something is
> > -       wrong in the libelf library.  */
> > -    abort ();
> > +    /* We may read /proc/PID/mem with only program headers mapped and section
> > +       headers out of the mapped pages.  */
> > +    return result;

We certainly shouldn't abort on bad data!
But do we even need to continue at this point?

return result; means we will keep searching through the section table,
which apparently is busted anyway. So I think it makes sense to cleanup
and return NULL; instead.

See how we cleanup and return NULL just below this code when elf_strptr
fails.

Thanks,

Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]