aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/crypto/crypto_tester.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-06-25 16:14:30 +0200
committerMartin Willi <martin@revosec.ch>2012-07-16 14:53:34 +0200
commit8a8364f26e45e3c02f704eff320d5d8041a67cba (patch)
tree21b172e54171c2aad34de294d5dfd9570361576b /src/libstrongswan/crypto/crypto_tester.c
parentce024c1662595f5cebf293e550c4dd7610955c2f (diff)
downloadstrongswan-8a8364f26e45e3c02f704eff320d5d8041a67cba.tar.bz2
strongswan-8a8364f26e45e3c02f704eff320d5d8041a67cba.tar.xz
Check rng return value in crypto tester
Diffstat (limited to 'src/libstrongswan/crypto/crypto_tester.c')
-rw-r--r--src/libstrongswan/crypto/crypto_tester.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/libstrongswan/crypto/crypto_tester.c b/src/libstrongswan/crypto/crypto_tester.c
index d4387d806..868128dcd 100644
--- a/src/libstrongswan/crypto/crypto_tester.c
+++ b/src/libstrongswan/crypto/crypto_tester.c
@@ -956,7 +956,11 @@ static u_int bench_rng(private_crypto_tester_t *this,
start_timing(&start);
while (end_timing(&start) < this->bench_time)
{
- rng->get_bytes(rng, buf.len, buf.ptr);
+ if (!rng->get_bytes(rng, buf.len, buf.ptr))
+ {
+ runs = 0;
+ break;
+ }
runs++;
}
free(buf.ptr);
@@ -986,8 +990,8 @@ METHOD(crypto_tester_t, test_rng, bool,
enumerator = this->rng->create_enumerator(this->rng);
while (enumerator->enumerate(enumerator, &vector))
{
+ chunk_t data = chunk_empty;
rng_t *rng;
- chunk_t data;
if (vector->quality != quality)
{
@@ -1007,24 +1011,22 @@ METHOD(crypto_tester_t, test_rng, bool,
failed = FALSE;
/* allocated bytes */
- rng->allocate_bytes(rng, vector->len, &data);
- if (data.len != vector->len)
- {
- failed = TRUE;
- }
- if (!vector->test(vector->user, data))
+ if (!rng->allocate_bytes(rng, vector->len, &data) ||
+ data.len != vector->len ||
+ !vector->test(vector->user, data))
{
failed = TRUE;
}
- /* bytes to existing buffer */
- memset(data.ptr, 0, data.len);
- rng->get_bytes(rng, vector->len, data.ptr);
- if (!vector->test(vector->user, data))
- {
- failed = TRUE;
+ if (!failed)
+ { /* write bytes into existing buffer */
+ memset(data.ptr, 0, data.len);
+ if (!rng->get_bytes(rng, vector->len, data.ptr) ||
+ !vector->test(vector->user, data))
+ {
+ failed = TRUE;
+ }
}
free(data.ptr);
-
rng->destroy(rng);
if (failed)
{