Files
heimdal/lib/krb5
Nicolas Williams 3e74e2e3bb Fix some DLL hell: use dladdr() to find plugin dir
Normally one would dlopen() a shared object's basename, not its absolute
path.  However, lib/krb5/plugin.c, in an effort to be zero-conf-ish,
wants to readdir() to find plugins to load, and in the process it ends
up defeating the RTLD's search-the-caller's-rpath.

This commit partially addresses this by allowing the use of $ORIGIN in
plugin_dir values and using them for the default (except on OS X).

This allows multiple Heimdal versions installed on the same host, but
with different plugin ABIs, to co-exist.  A step forward for doing make
check on hosts where Heimdal is installed.

For now we hardcode $ORIGIN/../lib/plugin/krb5 (linux, Solaris, *BSD),
or $ORIGIN (Windows; for assemblies objects need to be in the same
directory) and we eval $ORIGIN by using dladdr() (Linux, Solaris) or
GetModuleHandleEx() (Win32, via a dladdr() wrapper in libroken) to find
the path to libkrb5 whose dirname to use as $ORIGIN.  For Windows,
because we need the plugins to be in the same directory as libkrb5, we
require a prefix on plugin DLLs ("plugin_krb5_") to distinguish them
from other objects.

We should add a special token to mean "look in $ORIGIN, sure, but
dlopen() the plugin basenames only (so the RTLD can search the rpath)".
2013-09-06 16:51:53 -05:00
..
2011-07-24 16:02:22 -07:00
2011-05-21 11:57:31 -07:00
2013-07-18 14:58:54 +02:00
2013-04-29 22:54:11 -07:00
2013-07-16 15:00:19 +02:00
2013-06-22 21:17:29 -04:00
2011-05-21 11:57:31 -07:00
2012-01-10 22:54:50 +01:00
2012-07-02 11:33:18 -04:00
2013-07-10 22:02:43 +02:00
2011-03-12 19:29:00 -08:00
2011-07-24 16:02:22 -07:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:16:51 +00:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2013-07-16 15:13:31 +02:00
2005-10-08 15:39:42 +00:00
2007-07-15 20:49:46 +00:00
2009-05-04 06:17:40 +00:00
2013-06-21 23:09:44 -05:00
2011-05-21 11:57:31 -07:00
2012-05-28 13:14:55 +01:00
2012-05-28 13:14:55 +01:00
2012-05-28 13:14:55 +01:00
2011-04-29 20:25:05 -07:00
2012-05-28 13:14:55 +01:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2010-09-18 14:45:33 -07:00
2011-05-21 11:57:31 -07:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:17:40 +00:00
2009-05-04 06:17:40 +00:00
2011-07-24 14:09:23 -07:00
2009-05-04 06:17:40 +00:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:17:40 +00:00
2011-05-21 11:57:31 -07:00
2011-12-08 13:34:02 -06:00
2009-05-04 06:17:40 +00:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:17:40 +00:00
2011-12-03 13:02:28 -08:00
2013-03-05 21:47:20 -06:00
2009-05-04 06:17:40 +00:00
2010-05-30 13:37:07 -07:00
2009-05-04 06:17:40 +00:00
2010-11-03 11:12:24 +00:00
2009-05-04 06:17:40 +00:00
2011-05-21 11:57:31 -07:00
2013-07-16 14:57:03 +02:00
2011-05-22 20:43:31 -07:00
2013-06-04 00:16:55 -07:00