From 286fdb4a383338173dbb31a355778b51f45f7c1c Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Sun, 30 Mar 1997 23:33:29 +0000 Subject: [PATCH] Use srandomdev() now Add range checking for invalid denominator values --- games/random/random.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/games/random/random.c b/games/random/random.c index acb882ba6b2b..4d17b5355862 100644 --- a/games/random/random.c +++ b/games/random/random.c @@ -62,7 +62,6 @@ main(argc, argv) char *argv[]; { extern int optind; - time_t now; double denom; int ch, random_exit, selected, unbuffer_output; char *ep; @@ -94,16 +93,18 @@ main(argc, argv) denom = strtod(*argv, &ep); if (errno == ERANGE) err(1, "%s", *argv); - if (denom == 0 || *ep != '\0') + if (denom <= 0 || *ep != '\0') errx(1, "denominator is not valid."); + if (random_exit && denom > 255) + errx(1, "denominator must be <= 255 for random exit."); break; default: usage(); /* NOTREACHED */ } - (void)time(&now); - srandom((unsigned long)(now ^ getpid())); + if (srandomdev() < 0) + srandom(time(NULL) ^ getpid()); /* Compute a random exit status between 0 and denom - 1. */ if (random_exit)