From: james Date: Mon, 21 Jan 2008 19:00:43 +0000 (+0000) Subject: Added PLUGIN_LIBDIR preprocessor string to prepend a default plugin X-Git-Tag: v2.1_rc5~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e342be3fcd0bb1208cb2e7dc003042cc14bcdb36;p=thirdparty%2Fopenvpn.git Added PLUGIN_LIBDIR preprocessor string to prepend a default plugin directory to the dlopen search list when the user specifies the basename of the plugin only (Marius Tomaschewski). git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@2637 e7ae566f-a301-0410-adde-c780ea21d3b5 --- diff --git a/plugin.c b/plugin.c index e841dc77e..7bf69124b 100644 --- a/plugin.c +++ b/plugin.c @@ -191,7 +191,26 @@ plugin_init_item (struct plugin *p, const struct plugin_option *o) #if defined(USE_LIBDL) - p->handle = dlopen (p->so_pathname, RTLD_NOW); + p->handle = NULL; +#if defined(PLUGIN_LIBDIR) + if (!strrchr(p->so_pathname, '/')) + { + char full[PATH_MAX]; + + openvpn_snprintf (full, sizeof(full), "%s/%s", PLUGIN_LIBDIR, p->so_pathname); + p->handle = dlopen (full, RTLD_NOW); +#if defined(ENABLE_PLUGIN_SEARCH) + if (!p->handle) + { + p->handle = dlopen (p->so_pathname, RTLD_NOW); + } +#endif + } + else +#endif + { + p->handle = dlopen (p->so_pathname, RTLD_NOW); + } if (!p->handle) msg (M_ERR, "PLUGIN_INIT: could not load plugin shared object %s: %s", p->so_pathname, dlerror());