From 0036545ffa0dd0af7da7ce03ad7eee7fd6093813 Mon Sep 17 00:00:00 2001 From: sth Date: Fri, 28 Feb 2003 12:47:32 +0000 Subject: [PATCH] fix in C_GetSlotInfo that previously cleared the slotDescription and didnt clear the CKF_TOKEN_PRESENT flag git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@934 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/pkcs11/pkcs11-global.c | 4 +--- src/pkcs11/slot.c | 7 +++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pkcs11/pkcs11-global.c b/src/pkcs11/pkcs11-global.c index d2367d79..7ecde45c 100644 --- a/src/pkcs11/pkcs11-global.c +++ b/src/pkcs11/pkcs11-global.c @@ -201,10 +201,8 @@ CK_RV C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) rv = slot_get_slot(slotID, &slot); if (rv == CKR_OK) rv = card_detect(slot->reader); - if (rv == CKR_TOKEN_NOT_PRESENT) { + if (rv == CKR_TOKEN_NOT_PRESENT) rv = CKR_OK; - goto out; - } if (rv == CKR_OK) memcpy(pInfo, &slot->slot_info, sizeof(CK_SLOT_INFO)); diff --git a/src/pkcs11/slot.c b/src/pkcs11/slot.c index acc5c503..ef95cec5 100644 --- a/src/pkcs11/slot.c +++ b/src/pkcs11/slot.c @@ -271,6 +271,7 @@ CK_RV slot_token_removed(int id) int rv, token_was_present; struct sc_pkcs11_slot *slot; struct sc_pkcs11_object *object; + CK_SLOT_INFO saved_slot_info; rv = slot_get_slot(id, &slot); if (rv != CKR_OK) @@ -294,9 +295,11 @@ CK_RV slot_token_removed(int id) slot->card->num_slots--; } - /* Zap everything else */ + /* Zap everything else except for the slot_info + * (it contains the reader name, for instance) */ + saved_slot_info = slot->slot_info; memset(slot, 0, sizeof(*slot)); - init_slot_info(&slot->slot_info); + slot->slot_info = saved_slot_info; slot->login_user = -1; if (token_was_present)