hi all,

there's an OpenVPN bug report that is traced back to an issue with 
pkcs11h_logout; it seems that if you call this function before 
initializing the pkcs11 libs then it segfaults. I've added a line
  pkcs11h_logout()
to the tests/test-basic/test-basic.c  file from the pkcs11-helper 1.07 
tree and can reproduce this behaviour. The offending pieceof code is

1058 CK_RV
1059 pkcs11h_logout (void) {
1060     _pkcs11h_session_t current_session = NULL;
1061     CK_RV rv = CKR_OK;
1062
1063     _PKCS11H_DEBUG (
1064         PKCS11H_LOG_DEBUG2,
1065         "PKCS#11: pkcs11h_logout entry"
1066     );
1067
1068     for (
1069         current_session = _g_pkcs11h_data->sessions;
1070         current_session != NULL;
1071         current_session = current_session->next
1072     ) {
1073         CK_RV _rv;


A simple pointer check solves the issue:

--- pkcs11-helper-1.07/lib/pkcs11h-core.c       2009-02-27 
04:04:36.000000000 +0100
+++ pkcs11-helper-1.07jjk/lib/pkcs11h-core.c    2011-02-23 
11:39:14.000000000 +0100
@@ -1065,6 +1065,10 @@
                "PKCS#11: pkcs11h_logout entry"
        );

+    if (_g_pkcs11h_data == NULL) {
+               return rv;
+       }
+
        for (
                current_session = _g_pkcs11h_data->sessions;
                current_session != NULL;

I hope someone can incorporate this patch into the pkcs11-helper sources.

thx,

JJK / Jan Just Keijser

_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to