From 1b551a9bfdd8f427596cd54048bf8d58ebc373e1 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2025 15:55:03 +0200 Subject: [PATCH] plugin-loader: Don't prevent dynamic linking in addition to static constructors When built with static plugins and constructors, we might still want to be able to load external plugins. Fixes: d860c26e9533 ("plugin-loader: Properly support compilation without dlopen()/dlsym() etc.") --- src/libstrongswan/plugins/plugin_loader.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libstrongswan/plugins/plugin_loader.c b/src/libstrongswan/plugins/plugin_loader.c index 786b18332..0d4659f12 100644 --- a/src/libstrongswan/plugins/plugin_loader.c +++ b/src/libstrongswan/plugins/plugin_loader.c @@ -46,6 +46,9 @@ typedef struct plugin_entry_t plugin_entry_t; * Statically registered constructors */ static hashtable_t *plugin_constructors = NULL; + +#elif !defined(HAVE_DLADDR) +#error Neither dynamic linking nor static plugin constructors are supported! #endif /** @@ -373,13 +376,12 @@ static status_t create_plugin(private_plugin_loader_t *this, void *handle, { constructor = plugin_constructors->get(plugin_constructors, name); } -#elif defined(HAVE_DLADDR) +#endif +#ifdef HAVE_DLADDR if (!constructor) { constructor = dlsym(handle, create); } -#else - #error Neither dynamic linking nor static plugin constructors are supported! #endif if (!constructor) {