version krb5support_0_MIT not defined

Nico Williams nico at cryptonector.com
Wed Feb 8 14:27:30 EST 2012


On Wed, Feb 8, 2012 at 9:07 AM, Tom Yu <tlyu at mit.edu> wrote:
> A lot of this mystery may revolve around whether the runtime linker
> has a way to disambiguate different shared libraries that happen to
> have the same SONAME but reside in different files and have different
> contents.  I've heard it claimed that the Solaris runtime linker
> tracks pairs of device numbers with inode numbers to disambiguate
> libraries that have the same SONAME, but I don't know if the Linux one
> does, and skimming its source code did not make it obvious to me.

Here's the OpenSolaris (last open build, 151a) RTLD function that
checks the st_dev and st_ino:

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sgs/rtld/common/analyze.c#1026
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sgs/rtld/common/analyze.c#1259
http://src.opensolaris.org/source/s?refs=is_devinode_loaded&project=onnv

The glibc rtld does too, as you can see here:

http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/dl-load.c;h=f3717ea58ca69dcd4dac0971ca794213f83d5943;hb=HEAD#l943

But this is almost certainly a red herring.  The main thing is to
prevent DLL hell.  The RTLD must be finding the SONAME (and probably
version number) listed as a dependency in is already on the main link
map, thus not even opening nor stat-ing the shared object ELF to find
that the shared object that really ought to be loaded is distinct from
the one on the link map that has the same SONAME.

Nico
--



More information about the Kerberos mailing list