[PATCH] libelf: Don't return unaligned data returned from elf_getdata[_rawchunk].

Mark Wielaard mark@klomp.org
Fri Jun 22 16:01:00 GMT 2018


On Wed, 2018-06-20 at 00:57 +0200, Mark Wielaard wrote:
> For i386 and x86_64 we allow some unaligned data accesses.
> We also return unaligned data from elf_getdata[_rawchunk].
> But that might go wrong if we then access the ELF types inside.
> When build with gcc -O3 for example the compiler might vectorize
> loops accessing ELF words or types. The instructions used do require
> the data is naturally aligned. If the function returnes unaligned
> data the program will segfault and crash. This happens for example
> with the code in dwfl_module_getdwarf.c that tries to iterate over
> the hash buckets gotten through elf_getdata_rawchunk based on the
> DT_[GNU]_HASH value.
> 
> This only happens when the underlying ELF file is mmapped, and it
> is meant as optimization so that we don't have to copy data first
> so that it is correctly aligned. In most cases the data is already
> naturally aligned though. But it might not be for non-native ELF
> files.
> 
> Given that it might even happen in our own code base and these
> are public functions that can be used by code that might rely on
> the data returned being correctly aligned for the ELF data type
> requested just always return correctly aligned data.

Pushed to master.



More information about the Elfutils-devel mailing list