重构key keeper创建keyring的代码。修复除 #97 外的valgrind definitely lost。

This commit is contained in:
zhengchao
2018-11-29 19:02:07 +08:00
parent cc5420d158
commit a5ca97d91e
5 changed files with 36 additions and 103 deletions

View File

@@ -50,11 +50,11 @@ static void keyring_set_key(struct keyring_private* kyr, EVP_PKEY *key)
static void keyring_set_cert(struct keyring_private* kry, X509 *cert)
{
pthread_mutex_lock(&kry->mutex);
if ((kry->head).cert)
if (kry->head.cert)
{
X509_free((kry->head).cert);
}
(kry->head).cert = cert;
kry->head.cert = cert;
if (cert)
{
ssl_x509_refcount_inc((kry->head).cert);
@@ -64,24 +64,24 @@ static void keyring_set_cert(struct keyring_private* kry, X509 *cert)
static void keyring_set_chain(struct keyring_private* kyr, STACK_OF(X509) *chain)
{
pthread_mutex_lock(&kyr->mutex);
if ((kyr->head).chain)
pthread_mutex_lock(&(kyr->mutex));
if (kyr->head.chain)
{
sk_X509_pop_free((kyr->head).chain, X509_free);
sk_X509_pop_free(kyr->head.chain, X509_free);
}
if (chain)
{
(kyr->head).chain = sk_X509_dup(chain);
kyr->head.chain = sk_X509_dup(chain);
int i = 0;
for (i = 0; i < sk_X509_num((kyr->head).chain); i++)
for (i = 0; i < sk_X509_num(kyr->head.chain); i++)
{
ssl_x509_refcount_inc(sk_X509_value((kyr->head).chain, i));
ssl_x509_refcount_inc(sk_X509_value(kyr->head.chain, i));
}
} else
{
(kyr->head).chain = NULL;
kyr->head.chain = NULL;
}
pthread_mutex_unlock(&kyr->mutex);
pthread_mutex_unlock(&(kyr->mutex));
}
static X509* transform_cert_to_x509(const char* str)