[pkg-opensc-commit] [engine-pkcs11] 01/07: Prevent double-locking CRYPTO_LOCK_ENGINE
Eric Dorland
eric at moszumanska.debian.org
Sun May 29 02:19:11 UTC 2016
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository engine-pkcs11.
commit 94800f571f7e40e6ee23a81b77ac89ae8d1523e3
Author: Michał Trojnara <Michal.Trojnara at stunnel.org>
Date: Mon Mar 28 15:49:13 2016 +0200
Prevent double-locking CRYPTO_LOCK_ENGINE
---
src/engine_pkcs11.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/engine_pkcs11.c b/src/engine_pkcs11.c
index 6c7cca6..ff30254 100644
--- a/src/engine_pkcs11.c
+++ b/src/engine_pkcs11.c
@@ -181,6 +181,7 @@ int pkcs11_finish(ENGINE * engine)
int pkcs11_init(ENGINE * engine)
{
char *mod = module;
+ int rc;
/*
* TODO: Save the libp11 context with:
@@ -197,8 +198,14 @@ int pkcs11_init(ENGINE * engine)
fprintf(stderr, "Initializing engine\n");
}
ctx = PKCS11_CTX_new();
- PKCS11_CTX_init_args(ctx, init_args);
- if (PKCS11_CTX_load(ctx, mod) < 0) {
+ PKCS11_CTX_init_args(ctx, init_args);
+
+ /* Temporarily unlock non-recursive CRYPTO_LOCK_ENGINE to prevent
+ * double-locking in C_GetSlotList() while loading p11-kit */
+ CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
+ rc = PKCS11_CTX_load(ctx, mod);
+ CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
+ if (rc < 0) {
fprintf(stderr, "Unable to load module %s\n", mod);
return 0;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/engine-pkcs11.git
More information about the pkg-opensc-commit
mailing list