diff options
author | Adam Chlipala <adam@chlipala.net> | 2017-05-14 12:25:36 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2017-05-14 12:25:36 -0400 |
commit | 431a0a00148fb0fec21dacedc7665b52a7b0c557 (patch) | |
tree | 08f815360793c32716112abbdb5d86528f22e11f | |
parent | 680da1afd0b8d2f4b4a6b4ec0ef3bad48d0babde (diff) |
Raise an error if we run out of randomness during client initialization
-rw-r--r-- | src/c/urweb.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c index afe8457b..6f2dde38 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -180,8 +180,11 @@ static uw_Basis_int my_rand() { return -1; } -static client *new_client() { +static client *new_client(uw_context ctx) { client *c; + int pass = my_rand(); + + if (pass < 0) uw_error(ctx, FATAL, "Random number generation failed during client initialization"); pthread_mutex_lock(&clients_mutex); @@ -205,7 +208,7 @@ static client *new_client() { pthread_mutex_lock(&c->lock); c->mode = USED; - c->pass = my_rand(); + c->pass = pass; c->sock = -1; c->last_contact = time(NULL); uw_buffer_reset(&c->msgs); @@ -817,7 +820,7 @@ void uw_login(uw_context ctx) { uw_error(ctx, FATAL, "Wrong client password (%u, %d) in subscription request", id, pass); } } else if (ctx->needs_push) { - client *c = new_client(); + client *c = new_client(ctx); if (c == NULL) uw_error(ctx, FATAL, "Limit exceeded on number of message-passing clients"); |