pluto: Locking fixed in cert_add.

This commit is contained in:
Tobias Brunner
2010-10-26 09:58:13 +02:00
parent 1f2c328355
commit 71711b67b4
+7 -6
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,