summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2005-01-14 03:27:51 +0000
committerKen Raeburn <raeburn@mit.edu>2005-01-14 03:27:51 +0000
commit5128c4817a9cc9032019bd0c3ed876435ac783d5 (patch)
tree1cef4639dba53c164ff62b165219149f889ab260 /src/lib
parenta8f849034f097e92e1967068bc530d8ce7412515 (diff)
* prng.c (krb5int_prng_init): Incorporate do_yarrow_init body. Don't check
inited variable. (inited): Variable deleted. (krb5_c_random_make_octets, krb5int_prng_cleanup): Don't check it. (do_yarrow_init): Deleted. ticket: 2878 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17033 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/crypto/ChangeLog9
-rw-r--r--src/lib/crypto/prng.c38
2 files changed, 19 insertions, 28 deletions
diff --git a/src/lib/crypto/ChangeLog b/src/lib/crypto/ChangeLog
index f77c170b2..feccaa791 100644
--- a/src/lib/crypto/ChangeLog
+++ b/src/lib/crypto/ChangeLog
@@ -1,3 +1,12 @@
+2005-01-13 Ken Raeburn <raeburn@mit.edu>
+
+ * prng.c (krb5int_prng_init): Incorporate do_yarrow_init body.
+ Don't check inited variable.
+ (inited): Variable deleted.
+ (krb5_c_random_make_octets, krb5int_prng_cleanup): Don't check
+ it.
+ (do_yarrow_init): Deleted.
+
2005-01-12 Tom Yu <tlyu@mit.edu>
* prng.c (read_entropy_from_device): Use ssize_t, not size_t, so
diff --git a/src/lib/crypto/prng.c b/src/lib/crypto/prng.c
index 7371e974e..54a68e067 100644
--- a/src/lib/crypto/prng.c
+++ b/src/lib/crypto/prng.c
@@ -30,7 +30,7 @@
#include "yarrow.h"
static Yarrow_CTX y_ctx;
-static int inited, init_error;
+static int init_error;
#define yarrow_lock krb5int_yarrow_lock
k5_mutex_t yarrow_lock = K5_MUTEX_PARTIAL_INITIALIZER;
@@ -57,42 +57,27 @@ entropy_estimate (unsigned int randsource, size_t length)
return (0);
}
-static void do_yarrow_init(void);
int krb5int_prng_init(void)
{
- do_yarrow_init();
- if (init_error)
- return KRB5_CRYPTO_INTERNAL;
- return 0;
-}
-
-static void do_yarrow_init(void)
-{
unsigned i;
int yerr;
yerr = k5_mutex_finish_init(&yarrow_lock);
- if (yerr) {
- init_error = yerr;
- return;
- }
+ if (yerr)
+ return yerr;
yerr = krb5int_yarrow_init (&y_ctx, NULL);
- if ((yerr != YARROW_OK) && (yerr != YARROW_NOT_SEEDED)) {
- init_error = yerr;
- return;
- }
+ if ((yerr != YARROW_OK) && (yerr != YARROW_NOT_SEEDED))
+ return KRB5_CRYPTO_INTERNAL;
for (i=0; i < KRB5_C_RANDSOURCE_MAX; i++ ) {
unsigned source_id;
- if (krb5int_yarrow_new_source (&y_ctx, &source_id) != YARROW_OK ) {
- init_error = 17;
- return;
- }
+ if (krb5int_yarrow_new_source (&y_ctx, &source_id) != YARROW_OK )
+ return KRB5_CRYPTO_INTERNAL;
assert (source_id == i);
}
- inited=1;
- init_error = 0;
+
+ return 0;
}
krb5_error_code KRB5_CALLCONV
@@ -124,7 +109,6 @@ krb5_error_code KRB5_CALLCONV
krb5_c_random_make_octets(krb5_context context, krb5_data *data)
{
int yerr;
- assert (inited);
yerr = krb5int_yarrow_output (&y_ctx, data->data, data->length);
if (yerr == YARROW_NOT_SEEDED) {
yerr = krb5int_yarrow_reseed (&y_ctx, YARROW_SLOW_POOL);
@@ -138,10 +122,8 @@ krb5_c_random_make_octets(krb5_context context, krb5_data *data)
void krb5int_prng_cleanup (void)
{
- if (inited)
- krb5int_yarrow_final (&y_ctx);
+ krb5int_yarrow_final (&y_ctx);
k5_mutex_destroy(&yarrow_lock);
- inited = 0;
}