From 697c4dc2d26bfb41206475f39a584bb0a177d605 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Mon, 8 Dec 2008 18:34:14 +0000 Subject: Support non certificate store slots properly throughout the code. --- ckcapi-session.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'ckcapi-session.c') 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); + } } } -- cgit v1.2.3