in case of absolute library path, search origin for dependencies
---
src/openvpn/pkcs11.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
needs https://github.com/OpenSC/pkcs11-helper/pull/59
diff --git a/src/openvpn/pkcs11.c b/src/openvpn/pkcs11.c
index 6ef26eb0..65693aed 100644
--- a/src/openvpn/pkcs11.c
+++ b/src/openvpn/pkcs11.c
@@ -406,7 +406,13 @@ pkcs11_addProvider(
{
PKCS11H_BOOL allow_protected_auth = protected_auth;
PKCS11H_BOOL cert_is_private = cert_private;
-
+ unsigned loader_flags = 0;
+#if defined(_WIN32)
+ if (platform_absolute_pathname(provider))
+ {
+ loader_flags = LOAD_LIBRARY_SEARCH_DEFAULT_DIRS |
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR;
+ }
+#endif
if (allow_protected_auth
&& (rv = pkcs11h_setProviderProperty(provider,
PKCS11H_PROVIDER_PROPERTY_ALLOW_PROTECTED_AUTH, &allow_protected_auth,
sizeof(allow_protected_auth))) != CKR_OK)
{
@@ -422,7 +428,13 @@ pkcs11_addProvider(
{
msg(M_WARN, "PKCS#11: Cannot set provider properties '%s'
%ld-'%s'", provider, rv, pkcs11h_getMessage(rv));
}
-
+#if defined(PKCS11H_PROVIDER_PROPERTY_LOADER_FLAGS)
+ if (loader_flags
+ && (rv = pkcs11h_setProviderProperty(provider,
PKCS11H_PROVIDER_PROPERTY_LOADER_FLAGS, &loader_flags,
sizeof(loader_flags))) != CKR_OK)
+ {
+ msg(M_WARN, "PKCS#11: Cannot set alternative loader flags
'%s' %ld-'%s'", provider, rv, pkcs11h_getMessage(rv));
+ }
+#endif
if ((rv = pkcs11h_initializeProvider(provider)) != CKR_OK)
{
pkcs11h_removeProvider(provider);
--
2.38.1.windows.1
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel