[PATCH] libelf: More checking of valid sh_addralign values.

Mark Wielaard mjw at redhat.com
Mon May 18 13:52:42 UTC 2015


On Tue, 2015-05-12 at 15:40 +0200, Mark Wielaard wrote:
> There were two issues with bogus sh_addralign values. First we would only
> check the individual Elf_Data d_align values were powerof2. But not the
> actual shdr addralign value. This would cause an issue if the shdr addralign
> was bigger than all of the individual d_align values. Then we could write
> out a bogus (! powerof2) shdr addralign value for the sections. Secondly
> when reading in the Elf_Data we would set the d_align value to the value
> of the shdr addralign value. But we would not check it was valid at all.
> In practice there are ELF files with incorrect sh_addralign values (they
> are a powerof2, but aren't aligned to the ELF image offset). We would try
> to fix that up in elf_update by adding extra padding. But this could bloat
> the ELF image a lot for large alignment values. So for too large alignments
> that are bigger than the offset in the ELF file clamp them to the offset
> value. This could lead us to reject to write out the data again when the
> offset was not a powerof2. But this will only happen for aligment values
> bigger than 64. Which are uncommon in practice.

Pushed to master.


More information about the elfutils-devel mailing list