Skip to content

Commit 2ead1b1

Browse files
committed
Fix race condition
1 parent 778e2d3 commit 2ead1b1

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

src/internal.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6917,6 +6917,9 @@ int WP11_Object_Find(WP11_Session* session, CK_OBJECT_HANDLE objHandle,
69176917
}
69186918
#ifdef WOLFPKCS11_NSS
69196919
if (ret == BAD_FUNC_ARG) {
6920+
/* Token lock is needed in case remove object is run, slot lock is
6921+
* needed in case remove session is run */
6922+
WP11_Lock_LockRO(&session->slot->lock);
69206923
WP11_Lock_LockRO(&session->slot->token.lock);
69216924
for (scan = session->slot->session; scan != NULL && ret != 0;
69226925
scan = scan->next) {
@@ -6930,6 +6933,7 @@ int WP11_Object_Find(WP11_Session* session, CK_OBJECT_HANDLE objHandle,
69306933
}
69316934
}
69326935
WP11_Lock_UnlockRO(&session->slot->token.lock);
6936+
WP11_Lock_UnlockRO(&session->slot->lock);
69336937
}
69346938
#endif
69356939
}

tests/pkcs11test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2318,7 +2318,7 @@ static CK_RV test_secret_key_check_value(void* args)
23182318
{
23192319
CK_SESSION_HANDLE session = *(CK_SESSION_HANDLE*)args;
23202320
CK_RV ret = CKR_OK;
2321-
CK_OBJECT_HANDLE key;
2321+
CK_OBJECT_HANDLE key = CK_INVALID_HANDLE;
23222322
CK_ATTRIBUTE checkValueTmpl[] = {
23232323
{ CKA_CHECK_VALUE, NULL, 0 }
23242324
};

0 commit comments

Comments
 (0)