[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