aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/sa/ikev1/keymat_v1.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-09 17:15:52 +0200
committerMartin Willi <martin@revosec.ch>2012-07-16 14:55:06 +0200
commit87dd205b61ae8c0125b459959fcc7349fa27bb74 (patch)
treea6c138a105bf40ce5a4b1b60047ed3a76cbe22ca /src/libcharon/sa/ikev1/keymat_v1.c
parente185612dd8011ca4f3de460640f74e6a652cbf32 (diff)
downloadstrongswan-87dd205b61ae8c0125b459959fcc7349fa27bb74.tar.bz2
strongswan-87dd205b61ae8c0125b459959fcc7349fa27bb74.tar.xz
Add a return value to hasher_t.allocate_hash()
Diffstat (limited to 'src/libcharon/sa/ikev1/keymat_v1.c')
-rw-r--r--src/libcharon/sa/ikev1/keymat_v1.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/libcharon/sa/ikev1/keymat_v1.c b/src/libcharon/sa/ikev1/keymat_v1.c
index 8f6da3ca4..e2db13a13 100644
--- a/src/libcharon/sa/ikev1/keymat_v1.c
+++ b/src/libcharon/sa/ikev1/keymat_v1.c
@@ -554,7 +554,11 @@ METHOD(keymat_v1_t, derive_ike_keys, bool,
/* initial IV = hash(g^xi | g^xr) */
data = chunk_cata("cc", g_xi, g_xr);
- this->hasher->allocate_hash(this->hasher, data, &this->phase1_iv.iv);
+ if (!this->hasher->allocate_hash(this->hasher, data, &this->phase1_iv.iv))
+ {
+ chunk_free(&dh_me);
+ return FALSE;
+ }
if (this->phase1_iv.iv.len > this->aead->get_block_size(this->aead))
{
this->phase1_iv.iv.len = this->aead->get_block_size(this->aead);
@@ -975,10 +979,15 @@ static bool generate_iv(private_keymat_v1_t *this, iv_data_t *iv)
else
{
/* initial phase 2 IV = hash(last_phase1_block | mid) */
- u_int32_t net = htonl(iv->mid);
- chunk_t data = chunk_cata("cc", this->phase1_iv.iv,
- chunk_from_thing(net));
- this->hasher->allocate_hash(this->hasher, data, &iv->iv);
+ u_int32_t net;;
+ chunk_t data;
+
+ net = htonl(iv->mid);
+ data = chunk_cata("cc", this->phase1_iv.iv, chunk_from_thing(net));
+ if (!this->hasher->allocate_hash(this->hasher, data, &iv->iv))
+ {
+ return FALSE;
+ }
if (iv->iv.len > this->aead->get_block_size(this->aead))
{
iv->iv.len = this->aead->get_block_size(this->aead);