From 87dd205b61ae8c0125b459959fcc7349fa27bb74 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 9 Jul 2012 17:15:52 +0200 Subject: Add a return value to hasher_t.allocate_hash() --- src/libcharon/sa/ikev1/keymat_v1.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/libcharon/sa/ikev1/keymat_v1.c') 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); -- cgit v1.2.3