Re: rpmlint+readelf corrupted interpreter on generated binaries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi! (Added nickc to the CC, see below)

On Wed, Jan 15, 2025 at 01:52:24PM +0100, Miro Hrončok wrote:
> On 15. 01. 25 10:18, Robin Jarry wrote:
> >I found out that rpmlint errors out without producing any meaningful result when the analyzed RPMs contain binaries:
> >
> ><mock-chroot> sh-5.2# strace -f -e trace=execve -s 65536 rpmlint build/RPMS/aerc-*.rpm
> >...
> >[pid   107] execve("/usr/bin/readelf", ["readelf", "-W", "-l", "/tmp/rpmlint.aerc-debuginfo-0.19.0-1.fc42.x86_64.rpm.5obt7_7n/usr/lib/debug/usr/bin/aerc-0.19.0-1.fc42.x86_64.debug", "--debug-dump=no-follow-links"], 0x7fe85e1a3590 /* 27 vars */) = 0
> >...
> >E: fatal error while reading aerc-debuginfo-0.19.0-1.fc42.x86_64.rpm: 'utf-8' codec can't decode byte 0xe4 in position 455: invalid continuation byte
> >
> >...
> >
> >Relevant package versions:
> >
> >binutils-2.43.50-9.fc42.x86_64
> >file-5.45-8.fc42.x86_64
> >gcc-14.2.1-6.fc42.x86_64
> >rpmlint-2.5.0-10.fc42.x86_64
> >
> >I suspect this is a bug in binutils/files which should not print binary code in lieu of the interpreter name. But maybe the culprit is in gcc.
> >
> >If anyone has an idea, I'd like some help.
> 
> This should be fixed in rpmlint 2.6 currently available in rawhide.
> I see you actually use rawhide, so just updating rpmlint should do.
> 
> https://github.com/rpm-software-management/rpmlint/issues/1147

I think that helps rpmlint not error out, so good!
But I also think this is a bug in binutils readelf (CCing nickc).

It really should not even try to print the "interpreter" of a separate
debuginfo file. For elfutils eu-readelf we have the following comment
(and code) to prevent printing gibberish for the interpreter when we
see a PT_INTERP segment:

          /* If we are sure the file offset is valid then we can show
             the user the name of the interpreter.  We check whether
             there is a section at the file offset.  Normally there
             would be a section called ".interp".  But in separate
             .debug files it is a NOBITS section (and so doesn't match
             with gelf_offscn).  Which probably means the offset is
             not valid another reason could be because the ELF file
             just doesn't contain any section headers, in that case
             just play it safe and don't display anything.  */

Cheers,

Mark
-- 
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux