linked-list: Change return value of find_first() and signature of its callback
This avoids the unportable five pointer hack.
This commit is contained in:
@@ -812,11 +812,12 @@ static bool verify_trust_chain(private_credential_manager_t *this,
|
||||
return trusted;
|
||||
}
|
||||
|
||||
/**
|
||||
* List find match function for certificates
|
||||
*/
|
||||
static bool cert_equals(certificate_t *a, certificate_t *b)
|
||||
CALLBACK(cert_equals, bool,
|
||||
certificate_t *a, va_list args)
|
||||
{
|
||||
certificate_t *b;
|
||||
|
||||
VA_ARGS_VGET(args, b);
|
||||
return a->equals(a, b);
|
||||
}
|
||||
|
||||
@@ -896,8 +897,7 @@ METHOD(enumerator_t, trusted_enumerate, bool,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this->failed->find_first(this->failed, (void*)cert_equals,
|
||||
NULL, current) == SUCCESS)
|
||||
if (this->failed->find_first(this->failed, cert_equals, NULL, current))
|
||||
{ /* check each candidate only once */
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -149,8 +149,12 @@ METHOD(credential_set_t, create_cert_enumerator, enumerator_t*,
|
||||
cert_data_destroy);
|
||||
}
|
||||
|
||||
static bool certificate_equals(certificate_t *item, certificate_t *cert)
|
||||
CALLBACK(certificate_equals, bool,
|
||||
certificate_t *item, va_list args)
|
||||
{
|
||||
certificate_t *cert;
|
||||
|
||||
VA_ARGS_VGET(args, cert);
|
||||
return item->equals(item, cert);
|
||||
}
|
||||
|
||||
@@ -163,9 +167,8 @@ static certificate_t *add_cert_internal(private_mem_cred_t *this, bool trusted,
|
||||
{
|
||||
certificate_t *cached;
|
||||
this->lock->write_lock(this->lock);
|
||||
if (this->untrusted->find_first(this->untrusted,
|
||||
(linked_list_match_t)certificate_equals,
|
||||
(void**)&cached, cert) == SUCCESS)
|
||||
if (this->untrusted->find_first(this->untrusted, certificate_equals,
|
||||
(void**)&cached, cert))
|
||||
{
|
||||
cert->destroy(cert);
|
||||
cert = cached->get_ref(cached);
|
||||
@@ -201,9 +204,8 @@ METHOD(mem_cred_t, get_cert_ref, certificate_t*,
|
||||
certificate_t *cached;
|
||||
|
||||
this->lock->read_lock(this->lock);
|
||||
if (this->untrusted->find_first(this->untrusted,
|
||||
(linked_list_match_t)certificate_equals,
|
||||
(void**)&cached, cert) == SUCCESS)
|
||||
if (this->untrusted->find_first(this->untrusted, certificate_equals,
|
||||
(void**)&cached, cert))
|
||||
{
|
||||
cert->destroy(cert);
|
||||
cert = cached->get_ref(cached);
|
||||
|
||||
Reference in New Issue
Block a user