From c33fa55e39f9ef715abe47cabdfd997a190da61d Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Mon, 11 Feb 2008 20:33:20 +0100 Subject: [PATCH] init_random_seed(): Use para_open() to open /dev/urandom. Clean up this function while at it. --- server.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/server.c b/server.c index aa8fdda5..e03d207a 100644 --- a/server.c +++ b/server.c @@ -325,25 +325,30 @@ err: static void init_random_seed(void) { - int fd, ret = -1; unsigned int seed; - size_t len = sizeof(unsigned int); + int fd, ret = para_open("/dev/urandom", O_RDONLY, 0); - fd = open("/dev/urandom", O_RDONLY); - if (fd < 0) + if (ret < 0) + goto err; + fd = ret; + ret = read(fd, &seed, sizeof(seed)); + if (ret < 0) { + ret = -ERRNO_TO_PARA_ERROR(errno); goto out; - ret = -2; - if (read(fd, &seed, len) != len) + } + if (ret != sizeof(seed)) { + ret = -ERRNO_TO_PARA_ERROR(EIO); goto out; + } srandom(seed); ret = 1; out: - if (fd >= 0) - close(fd); - if (ret > 0) + close(fd); + if (ret >= 0) return; - PARA_EMERG_LOG("can not seed pseudo random generator (ret = %d)\n", - ret); +err: + PARA_EMERG_LOG("can not seed pseudo random number generator: %s\n", + para_strerror(-ret)); exit(EXIT_FAILURE); } @@ -376,7 +381,6 @@ static void init_afs(void) (unsigned) afs_socket_cookie); } - static unsigned server_init(int argc, char **argv) { /* connector's address information */ -- 2.39.2