pluto: Locking fixed in cert_add.

This commit is contained in:
Tobias Brunner 2010-10-22 11:05:10 +02:00
parent 1f2c328355
commit 71711b67b4
1 changed files with 7 additions and 6 deletions

View File

@ -74,20 +74,21 @@ void cert_free(cert_t *cert)
cert_t* cert_add(cert_t *cert)
{
certificate_t *certificate = cert->cert;
cert_t *c = certs;
cert_t *c;
while (c != NULL)
lock_certs_and_keys("cert_add");
for (c = certs; c != NULL; c = c->next)
{
if (certificate->equals(certificate, c->cert)) /* already in chain, free cert */
{
if (certificate->equals(certificate, c->cert))
{ /* already in chain, free cert */
unlock_certs_and_keys("cert_add");
cert_free(cert);
return c;
}
c = c->next;
}
/* insert new cert at the root of the chain */
lock_certs_and_keys("cert_add");
cert->next = certs;
certs = cert;
DBG(DBG_CONTROL | DBG_PARSING,