[PATCH] libelf: Fixup SHF_COMPRESSED sh_addralign in elf_update if necessary.
Mark Wielaard
mark@klomp.org
Tue Aug 25 22:20:25 GMT 2020
On Wed, Aug 19, 2020 at 11:51:15PM +0200, Mark Wielaard wrote:
> In elf_getdata.c we have the following to compensate for possibly
> bad sh_addralign values of compressed sections:
>
> /* Compressed data has a header, but then compressed data.
> Make sure to set the alignment of the header explicitly,
> don't trust the file alignment for the section, it is
> often wrong. */
> if ((flags & SHF_COMPRESSED) != 0)
> {
> entsize = 1;
> align = __libelf_type_align (elf->class, ELF_T_CHDR);
> }
>
> Which makes sure the d_data alignment is correct for the Chdr struct
> at the start of the compressed section.
>
> But this means that if a user just reads such a compressed section
> without changing it, and then tries to write it out again using
> elf_update they get an error message about d_align and sh_addralign
> being out of sync.
>
> We already correct obviously incorrect sh_entsize fields.
> Do the same for the sh_addralign field of a SHF_COMPRESSED section.
Pushed to master and added to the Fedora rawhide package.
Cheers,
Mark
More information about the Elfutils-devel
mailing list