[PATCH] Fix section corruption bug
mjw at redhat.com
Wed Mar 11 12:46:12 UTC 2015
On Thu, 2014-06-12 at 14:30 +0200, Mark Wielaard wrote:
> On Tue, 2014-06-10 at 15:31 +0200, Thilo Schulz wrote:
> > > I was wondering whether we want to check scn->rawdata.s directly, or if
> > > we could rely on ELF_F_FILEDATA being set for scn->flags?
> > Seems reasonable though I don't know the code as well as you do I guess.
> I wish I understood the code very well :) But now that I wrote the
> testcase and you pointed out the second bug, I am not sure of the fix
> anymore. It does seem to fix the first issue, but then you immediately
> hit the second.
> > As a further note: A similar bug, albeit for slightly different reasons, occurs
> > when adding relocations. Adding a relocation with elf_newdata() then
> > elf_update()
> > results in the old data being "forgotten" if there was no elf_getdata() call
> > before to load that data into memory. The cause is a bit different because in
> > this case, there was not a call to elf_rawdata() before and this still
> > happened. I imagine, this might also be a problem for string tables.
> Indeed. The attached testcase shows both issues. Calling elf_getdata()
> and then elf_newdata() works as expected. But elf_newdata drops all
> existing data when elf_rawdata is called before and elf_newdata keeps
> the size, but not the actual content bytes of existing data of a section
> if elf_getdata isn't called before.
> Still scratching my head a little how to resolve both issues properly.
Sorry this took 9 months... But I believe these issues have finally been
resolved in current git elfutils. At least my testcase now works as
expected. Hope it also now works for your code.
More information about the elfutils-devel