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
..
2013-06-22 21:17:32 -04:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01:00
2013-02-13 16:15:00 +08:00
2011-07-24 16:02:22 -07:00
2012-03-13 23:56:11 -04:00
2013-03-05 21:47:20 -06:00
2011-05-21 11:57:31 -07:00
2013-02-13 16:15:00 +08:00
2013-07-18 14:58:54 +02:00
2009-12-21 08:45:28 +01:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2010-09-18 23:50:38 -04:00
2012-11-27 21:58:06 -08:00
2011-05-17 23:12:51 -07:00
2013-06-22 21:17:32 -04:00
2013-06-22 21:17:32 -04:00
2013-04-29 22:54:11 -07:00
2013-09-06 16:51:53 -05:00
2011-05-17 23:12:51 -07:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2013-02-13 16:15:00 +08:00
2012-03-06 09:34:43 +00:00
2011-03-12 13:50:39 -08:00
2013-06-22 21:17:32 -04:00
2013-07-16 15:00:19 +02:00
2013-06-22 21:17:32 -04:00
2012-03-06 09:34:43 +00:00
2013-02-13 16:15:00 +08:00
2012-03-06 09:34:43 +00:00
2013-06-22 21:17:32 -04:00
2013-07-03 23:17:38 -05:00
2013-06-22 21:17:32 -04:00
2013-07-16 15:00:19 +02:00
2012-03-06 09:34:43 +00:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2012-03-13 23:56:11 -04:00
2013-06-22 21:17:29 -04:00
2013-02-13 16:15:00 +08:00
2012-02-20 19:45:41 +00:00
2013-06-03 21:46:20 -07:00
2011-05-21 11:57:31 -07:00
2012-05-09 08:15:42 +02:00
2012-01-10 22:54:50 +01:00
2012-07-02 11:33:18 -04:00
2012-03-10 10:23:57 -08:00
2013-02-13 16:15:00 +08:00
2013-07-10 22:02:43 +02:00
2013-06-22 21:17:32 -04:00
2013-07-16 12:44:36 +02:00
2009-12-21 08:45:28 +01:00
2009-12-21 08:45:28 +01:00
2010-09-01 21:00:07 -07:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2013-06-22 21:17:32 -04:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01:00
2013-02-10 19:02:52 -08:00
2013-07-19 14:56:01 +02:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2011-03-12 19:29:00 -08:00
2013-06-27 19:41:10 +02:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-07-24 16:02:22 -07:00
2011-05-21 11:57:31 -07:00
2008-12-11 04:54:33 +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
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-05-21 11:57:31 -07:00
2009-05-04 06:16:51 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2009-07-17 20:39:35 -07:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-05-04 21:31:10 -07:00
2011-05-21 11:57:31 -07:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-05-21 11:57:31 -07:00
2011-04-29 20:37:33 -07:00
2008-09-13 08:53:55 +00:00
2013-07-11 21:17:49 +02:00
2011-05-21 11:57:31 -07:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-05-21 11:57:31 -07:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2011-04-29 20:37:33 -07:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2008-09-13 08:53:55 +00:00
2012-02-05 16:26:32 -06:00
2009-12-21 08:45:28 +01:00
2013-07-27 03:21:12 -05:00
2013-07-16 15:13:31 +02:00
2005-10-08 15:39:42 +00:00
2011-04-29 20:37:33 -07:00
2007-07-15 20:49:46 +00:00
2009-05-04 06:17:40 +00:00
2013-06-22 21:17:32 -04:00
2012-10-07 11:28:28 -07:00
2013-04-24 16:25:59 -07:00
2013-06-21 23:09:44 -05:00
2013-02-10 19:02:52 -08:00
2013-06-22 21:17:32 -04:00
2013-04-29 12:30:21 -07:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2013-02-13 16:15:00 +08:00
2011-05-17 12:02:16 -04:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-06-22 21:17:32 -04:00
2009-12-21 08:45:28 +01:00
2011-05-17 12:02:16 -04:00
2012-02-20 19:45:41 +00:00
2013-02-14 16:46:40 +08:00
2012-05-09 08:15:42 +02:00
2011-05-21 11:57:31 -07:00
2013-06-22 21:17:19 -04:00
2013-06-22 21:17:32 -04:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01:00
2013-06-22 21:17:32 -04:00
2013-06-22 21:17:32 -04:00
2013-09-06 16:51:53 -05:00
2013-05-16 23:15:00 -04:00
2009-12-21 08:45:28 +01:00
2010-08-20 13:14:10 -04:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01:00
2009-12-21 08:45:28 +01:00
2013-02-13 16:15:00 +08:00
2013-07-31 18:17:17 -05:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-04-26 00:05:53 -07:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-13 16:15:00 +08:00
2013-02-10 19:02:52 -08:00
2013-06-22 21:17:32 -04:00
2012-09-27 14:26:29 -07:00
2013-02-13 16:15:00 +08:00
2009-12-21 08:45:28 +01: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
2012-05-28 15:10:09 +01:00
2012-02-20 19:45:41 +00:00
2011-05-21 11:57:31 -07:00
2010-09-18 14:45:33 -07:00
2012-02-21 11:17:55 +00:00
2011-05-21 11:57:31 -07:00
2011-10-22 14:54:26 -05:00
2013-05-16 00:34:36 -04:00
2010-12-03 01:12:31 -05:00
2011-05-21 11:57:31 -07:00
2009-08-18 15:56:29 +02:00
2009-05-04 06:17:40 +00:00
2012-07-15 01:30:09 -05: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
2011-11-15 21:53:34 -06:00
2012-07-15 00:55:08 -05: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
2009-12-21 08:45:28 +01:00
2011-05-22 20:43:31 -07:00
2012-12-22 00:23:18 +08:00
2010-08-20 13:06:54 -04:00
2009-04-25 16:27:19 +00:00
2013-07-11 21:17:49 +02:00
2013-02-13 16:15:00 +08:00
2013-06-04 00:16:55 -07:00
2009-12-07 21:16:43 -08:00
2011-11-02 23:20:55 -05:00
2009-12-21 08:45:28 +01:00