diff options
author | Tobias Brunner <tobias@strongswan.org> | 2012-06-25 13:22:54 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-07-16 14:53:34 +0200 |
commit | 39e807728e275037fcc145015a6f3fa54c62221c (patch) | |
tree | 532ebc86d55c1e780afd32895f4bc7a0d3b3bbc1 /src/libstrongswan/plugins/pkcs11/pkcs11_rng.c | |
parent | 605985d122cd854ea7c1b85ce3ec107752c9f103 (diff) | |
download | strongswan-39e807728e275037fcc145015a6f3fa54c62221c.tar.bz2 strongswan-39e807728e275037fcc145015a6f3fa54c62221c.tar.xz |
RNGs' get_bytes and allocate_bytes return boolean
Diffstat (limited to 'src/libstrongswan/plugins/pkcs11/pkcs11_rng.c')
-rw-r--r-- | src/libstrongswan/plugins/pkcs11/pkcs11_rng.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libstrongswan/plugins/pkcs11/pkcs11_rng.c b/src/libstrongswan/plugins/pkcs11/pkcs11_rng.c index 45cf0b7c2..20e4b6f76 100644 --- a/src/libstrongswan/plugins/pkcs11/pkcs11_rng.c +++ b/src/libstrongswan/plugins/pkcs11/pkcs11_rng.c @@ -43,7 +43,7 @@ struct private_pkcs11_rng_t { }; -METHOD(rng_t, get_bytes, void, +METHOD(rng_t, get_bytes, bool, private_pkcs11_rng_t *this, size_t bytes, u_int8_t *buffer) { CK_RV rv; @@ -51,15 +51,21 @@ METHOD(rng_t, get_bytes, void, if (rv != CKR_OK) { DBG1(DBG_CFG, "C_GenerateRandom() failed: %N", ck_rv_names, rv); - abort(); + return FALSE; } + return TRUE; } -METHOD(rng_t, allocate_bytes, void, +METHOD(rng_t, allocate_bytes, bool, private_pkcs11_rng_t *this, size_t bytes, chunk_t *chunk) { *chunk = chunk_alloc(bytes); - get_bytes(this, chunk->len, chunk->ptr); + if (!get_bytes(this, chunk->len, chunk->ptr)) + { + chunk_clear(chunk); + return FALSE; + } + return TRUE; } METHOD(rng_t, destroy, void, |