Changeset 201


Ignore:
Timestamp:
06/17/11 18:42:14 (11 months ago)
Author:
alonbl
Message:

Do not set private to C_Initialize unless actually have one

From: Jonathan Giannuzzi <jonathan@…>
Date: Fri, Jun 17, 2011 at 2:55 PM
Subject: [opensc-devel] Patch for libp11 to fix compatibility with AET SafeSign? PKCS#11 library
To: opensc-devel@…

Hello,
When using libp11 to wrap around the AET SafeSign? PKCS#11 library, C_GetInfo fails with CKR_MUTEX_BAD. This is because an empty CK_C_INITIALIZE_ARGS structure is passed to C_Initialize.
I made a change in PKCS11_CTX_load so that when no init_args have been set, no CK_C_INITIALIZE_ARGS is given to C_Initialize.
It should not break any other P11 library loading.
Cheers,
Jonathan

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/p11_load.c

    r187 r201  
    5656{ 
    5757        PKCS11_CTX_private *priv = PRIVCTX(ctx); 
    58         CK_C_INITIALIZE_ARGS args; 
     58        CK_C_INITIALIZE_ARGS _args; 
     59        CK_C_INITIALIZE_ARGS *args = NULL; 
    5960        CK_INFO ck_info; 
    6061        int rv; 
     
    7172 
    7273        /* Tell the PKCS11 to initialize itself */ 
    73         memset(&args, 0, sizeof(args)); 
    74         args.pReserved = priv->init_args; 
    75         rv = priv->method->C_Initialize(&args); 
     74        if (priv->init_args != NULL) { 
     75                memset(&_args, 0, sizeof(_args)); 
     76                args = &_args; 
     77                args->pReserved = priv->init_args; 
     78        } 
     79        rv = priv->method->C_Initialize(args); 
    7680        if (rv && rv != CKR_CRYPTOKI_ALREADY_INITIALIZED) { 
    7781                PKCS11err(PKCS11_F_PKCS11_CTX_LOAD, rv); 
Note: See TracChangeset for help on using the changeset viewer.