On 09/16/2015 03:47 PM, Dave Love wrote:
Michael Stahl <mstahl(a)redhat.com> writes:
>> Symbol interposition is used a lot for very useful features, blocking
>> interposition would break a lot of stuff.
>
> really? i've always thought that it was only useful for libc symbols,
> but maybe that's because i don't work on base OS stuff.
I'd guess most uses are not to do with base OS stuff. It's important in
a lot of cases in research-type computing support, though that doesn't
seem to count for much.
Profiling and other instrumentation in the high performance computing
world (where it's taken quite seriously) typically uses LD_PRELOAD
libraries.
I think it is important to keep the LD_PRELOAD case separate from
implicit interposition between the main program (if linked with -E) and
DSOs or between different DSOs. LD_PRELOAD is quite explicit in what it
wants to do.
What I'm really interested in is a use case where something pulls in a
library with DT_NEEDED and relies on predictable linking order to
override a specific symbol.
We have cases where this happens, but they all seem accidents to me.
--
Florian Weimer / Red Hat Product Security