has_rsa_private_key() must also be protected by keys_mutex
authorAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 10 Aug 2007 12:10:36 +0000 (12:10 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 10 Aug 2007 12:10:36 +0000 (12:10 -0000)
src/charon/config/credentials/local_credential_store.c

index 6400cff..60a0177 100644 (file)
@@ -382,8 +382,10 @@ static bool has_rsa_private_key(private_local_credential_store_t *this, rsa_publ
 {
        bool found = FALSE;
        rsa_private_key_t *current;
+       iterator_t *iterator;
 
-       iterator_t *iterator = this->private_keys->create_iterator(this->private_keys, TRUE);
+       pthread_mutex_lock(&(this->keys_mutex));
+       iterator = this->private_keys->create_iterator(this->private_keys, TRUE);
 
        while (iterator->iterate(iterator, (void**)&current))
        {
@@ -394,6 +396,7 @@ static bool has_rsa_private_key(private_local_credential_store_t *this, rsa_publ
                }
        }
        iterator->destroy(iterator);
+       pthread_mutex_unlock(&(this->keys_mutex));
        return found;
 }