From: Tobias Brunner Date: Fri, 22 Oct 2010 09:05:10 +0000 (+0200) Subject: pluto: Locking fixed in cert_add. X-Git-Tag: 4.5.0~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71711b67b404ac399ba63943d268e55605844ebd;p=thirdparty%2Fstrongswan.git pluto: Locking fixed in cert_add. --- diff --git a/src/pluto/certs.c b/src/pluto/certs.c index a9179c4492..e866022df5 100644 --- a/src/pluto/certs.c +++ b/src/pluto/certs.c @@ -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,