Use srandomdev() now

Add range checking for invalid denominator values
This commit is contained in:
Andrey A. Chernov 1997-03-30 23:33:29 +00:00
parent 5790155e89
commit 286fdb4a38
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=24420

View File

@ -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)