Bug 97226 - PIE executables (e.g. /usr/bin/ls) are detected as application/x-sharedlib
Summary: PIE executables (e.g. /usr/bin/ls) are detected as application/x-sharedlib
Status: NEW
Alias: None
Product: shared-mime-info
Classification: Unclassified
Component: freedesktop.org.xml (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Shared Mime Info group
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-06 13:12 UTC by David Faure
Modified: 2017-09-20 21:07 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Faure 2016-08-06 13:12:36 UTC
/usr/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.0.0, BuildID[sha1]=339279bdac0d1a8c98b6bbb92afc8d8edb185d9f, stripped

This file is detected as application/x-sharedlib instead of application/x-executable, by the s-m-i test suite, if I add it there.

Patch for the test suite: http://www.davidfaure.fr/kde/smi.diff
+ downloading http://www.davidfaure.fr/kde/ls into tests/.

Result:
ls, 'data' test: expected application/x-executable, got application/x-sharedlib
ls, 'file' test: expected application/x-executable, got application/x-sharedlib

There must be a bug in the ELF magic for application/x-sharedlib and/or application/x-executable.
Comment 1 Bastien Nocera 2016-08-06 13:17:24 UTC
Or you could just dump the file into the staging-tests/ directory, and run "make local-test". Patch welcome, but I wonder how useful that magic (or lack of accuracy) actually is.
Comment 2 David Faure 2016-08-06 18:05:51 UTC
Well we need a way to find out that /bin/ls is an executable, and there's no extension, so working magic would be useful ;)

However I don't know anything about the ELF file format, so I don't know what the problem actually is (and whether it offers reliable magic).

Admittedly the magic for x-sharedlib is the one that's much less useful, shared libs are typically called *.so or *.so.[0-9\.]* :-)
But I wouldn't dare just removing all magic from x-sharedlib... unless someone can prove that the ELF file format makes no actual difference between shared libs and executables?
Comment 3 Alan Coopersmith 2017-01-05 01:25:47 UTC
The ELF file format distinguishes between traditional executables and shared
objects, but unfortunately PIE executables are treated as ELF shared objects
Comment 4 Yann Droneaud 2017-01-14 16:16:09 UTC
AFAIK, a shared object could be a PIE program if it has a (valid) interpretor header (PT_INTERP).

It should be noted that glibc's ELF loader (ld-linux.so, exact name depending on architecture) is a shared object and a valid program, but doesn't have an interpretor header, but that's the only exception I aware of.

IOTH, glibc's libc.so is a shared object with a valid interpretor, making it a valid program (try it !). Reporting such library as a program might be misleading for end user.

Anyway, PT_INTERP header not at a fixed location in the ELF file, so it cannot be described in shared-mime-info database.

(It's a pity PIE ELF files were not describe with a new ELF type or at least a flag :(
Comment 5 Daniel Kahn Gillmor 2017-09-06 21:34:59 UTC
This has been open for over a year, and is related to even older bugs in tools that depend on shared-mime-info (e.g. https://bugzilla.gnome.org/show_bug.cgi?id=737849 ).  This is also an issue in libmagic, and there is more discussion about ELF over there:  https://bugzilla.redhat.com/show_bug.cgi?id=1296868

It'd be great to have some sort of resolution here.
Comment 6 Bastien Nocera 2017-09-06 21:39:53 UTC
(In reply to Daniel Kahn Gillmor from comment #5)
> It'd be great to have some sort of resolution here.

That's not going to happen unless somebody has a patch. Reading comment 4, that seems unlikely. If you have applications that require this deep level of knowledge of the different formats, you'll probably want to use something more precise than the shared-mime spec.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.