aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-09-22 10:07:04 +0200
committerMartin Willi <martin@strongswan.org>2009-09-22 10:07:04 +0200
commitf1092e20f48d461eef9d65d3d0176fd194f63b69 (patch)
tree49b975b4da25c106c6b0d7176c5b10b9052df6bd
parentcb64b21217f7cd3d3d90c3212a951542556a2247 (diff)
downloadstrongswan-f1092e20f48d461eef9d65d3d0176fd194f63b69.tar.bz2
strongswan-f1092e20f48d461eef9d65d3d0176fd194f63b69.tar.xz
Fixed encoding of hash-and-url cert payload
-rw-r--r--src/charon/sa/tasks/ike_cert_post.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/charon/sa/tasks/ike_cert_post.c b/src/charon/sa/tasks/ike_cert_post.c
index e6ecce0b5..c831df975 100644
--- a/src/charon/sa/tasks/ike_cert_post.c
+++ b/src/charon/sa/tasks/ike_cert_post.c
@@ -58,6 +58,7 @@ static cert_payload_t *build_cert_payload(private_ike_cert_post_t *this,
chunk_t hash, encoded ;
enumerator_t *enumerator;
char *url;
+ cert_payload_t *payload = NULL;
if (!this->ike_sa->supports_extension(this->ike_sa, EXT_HASH_AND_URL))
{
@@ -73,25 +74,24 @@ static cert_payload_t *build_cert_payload(private_ike_cert_post_t *this,
encoded = cert->get_encoding(cert);
hasher->allocate_hash(hasher, encoded, &hash);
+ chunk_free(&encoded);
+ hasher->destroy(hasher);
id = identification_create_from_encoding(ID_KEY_ID, hash);
- enumerator = charon->credentials->create_cdp_enumerator(
- charon->credentials, CERT_X509, id);
- if (!enumerator->enumerate(enumerator, &url))
+ enumerator = charon->credentials->create_cdp_enumerator(charon->credentials,
+ CERT_X509, id);
+ if (enumerator->enumerate(enumerator, &url))
{
- url = NULL;
+ payload = cert_payload_create_from_hash_and_url(hash, url);
}
- enumerator->destroy(enumerator);
-
- id->destroy(id);
- chunk_free(&hash);
- chunk_free(&encoded);
- hasher->destroy(hasher);
- if (url)
+ else
{
- return cert_payload_create_from_hash_and_url(hash, url);
+ payload = cert_payload_create_from_cert(cert);
}
- return cert_payload_create_from_cert(cert);
+ enumerator->destroy(enumerator);
+ chunk_free(&hash);
+ id->destroy(id);
+ return payload;
}
/**