From: Tobias Brunner Date: Mon, 25 Jun 2012 14:00:48 +0000 (+0200) Subject: Check rng return value when generating fake NAT detection payloads X-Git-Tag: 5.0.1~349 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92f207477cf17d324e5ac6900e7e3ae868fb2951;p=thirdparty%2Fstrongswan.git Check rng return value when generating fake NAT detection payloads --- diff --git a/src/libcharon/sa/ikev1/tasks/isakmp_natd.c b/src/libcharon/sa/ikev1/tasks/isakmp_natd.c index 44910175a6..cd3bc21b0e 100644 --- a/src/libcharon/sa/ikev1/tasks/isakmp_natd.c +++ b/src/libcharon/sa/ikev1/tasks/isakmp_natd.c @@ -123,12 +123,13 @@ static chunk_t generate_natd_hash_faked(private_isakmp_natd_t *this) return chunk_empty; } rng = lib->crypto->create_rng(lib->crypto, RNG_WEAK); - if (!rng) + if (!rng || + !rng->allocate_bytes(rng, hasher->get_hash_size(hasher), &chunk)) { DBG1(DBG_IKE, "unable to get random bytes for NAT-D fake"); + DESTROY_IF(rng); return chunk_empty; } - rng->allocate_bytes(rng, hasher->get_hash_size(hasher), &chunk); rng->destroy(rng); return chunk; } diff --git a/src/libcharon/sa/ikev2/tasks/ike_natd.c b/src/libcharon/sa/ikev2/tasks/ike_natd.c index 44a2be10b4..55c028686f 100644 --- a/src/libcharon/sa/ikev2/tasks/ike_natd.c +++ b/src/libcharon/sa/ikev2/tasks/ike_natd.c @@ -121,12 +121,12 @@ static chunk_t generate_natd_hash_faked(private_ike_natd_t *this) chunk_t chunk; rng = lib->crypto->create_rng(lib->crypto, RNG_WEAK); - if (!rng) + if (!rng || !rng->allocate_bytes(rng, HASH_SIZE_SHA1, &chunk)) { DBG1(DBG_IKE, "unable to get random bytes for NATD fake"); + DESTROY_IF(rng); return chunk_empty; } - rng->allocate_bytes(rng, HASH_SIZE_SHA1, &chunk); rng->destroy(rng); return chunk; }