Create a dummy pthread key for value "0", as some buggy PKCS#11 libraries mangle it
This commit is contained in:
@@ -413,6 +413,12 @@ void thread_exit(void *val)
|
||||
pthread_exit(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* A dummy thread value that reserved pthread_key_t value "0". A buggy PKCS#11
|
||||
* library mangles this key, without owning it, so we allocate it for them.
|
||||
*/
|
||||
static thread_value_t *dummy1;
|
||||
|
||||
/**
|
||||
* Described in header.
|
||||
*/
|
||||
@@ -420,6 +426,8 @@ void threads_init()
|
||||
{
|
||||
private_thread_t *main_thread = thread_create_internal();
|
||||
|
||||
dummy1 = thread_value_create(NULL);
|
||||
|
||||
main_thread->id = 0;
|
||||
main_thread->thread_id = pthread_self();
|
||||
current_thread = thread_value_create(NULL);
|
||||
@@ -443,6 +451,8 @@ void threads_deinit()
|
||||
{
|
||||
private_thread_t *main_thread = (private_thread_t*)thread_current();
|
||||
|
||||
dummy1->destroy(dummy1);
|
||||
|
||||
main_thread->mutex->lock(main_thread->mutex);
|
||||
thread_destroy(main_thread);
|
||||
current_thread->destroy(current_thread);
|
||||
|
||||
Reference in New Issue
Block a user