diff options
author | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2008-01-21 19:00:43 +0000 |
---|---|---|
committer | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2008-01-21 19:00:43 +0000 |
commit | e342be3fcd0bb1208cb2e7dc003042cc14bcdb36 (patch) | |
tree | acfd7530098bf1a4aac27697877614154f37011c | |
parent | Define ALLOW_NON_CBC_CIPHERS for people who don't (diff) | |
download | openvpn-e342be3fcd0bb1208cb2e7dc003042cc14bcdb36.tar.xz |
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
-rw-r--r-- | plugin.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -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()); |