diff options
Diffstat (limited to 'ckcapi-session.c')
-rw-r--r-- | ckcapi-session.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/ckcapi-session.c b/ckcapi-session.c index 0745cb7..6142760 100644 --- a/ckcapi-session.c +++ b/ckcapi-session.c @@ -51,6 +51,7 @@ CK_RV ckcapi_session_create(CK_SLOT_ID slot, CkCapiSession** ret) { CkCapiSession* sess; + const char *store; DWORD err; sess = calloc(1, sizeof(CkCapiSession)); @@ -70,19 +71,22 @@ ckcapi_session_create(CK_SLOT_ID slot, CkCapiSession** ret) return CKR_HOST_MEMORY; } - sess->store = CertOpenSystemStore((HCRYPTPROV)NULL, - ckcapi_token_get_store_name(slot)); - if(sess->store == NULL) + store = ckcapi_token_get_store_name(slot); + if(store) { - err = GetLastError(); - - /* Store not found, we don't care */ - if(err != ERROR_FILE_NOT_FOUND) + sess->store = CertOpenSystemStore((HCRYPTPROV)NULL, store); + if(sess->store == NULL) { - ckcapi_hash_free(sess->object_data, NULL); - CloseHandle(sess->mutex); - free(sess); - return ckcapi_winerr_to_ckr(err); + err = GetLastError(); + + /* Store not found, we don't care */ + if(err != ERROR_FILE_NOT_FOUND) + { + ckcapi_hash_free(sess->object_data, NULL); + CloseHandle(sess->mutex); + free(sess); + return ckcapi_winerr_to_ckr(err); + } } } |