summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornia <nia@NetBSD.org>2020-07-21 03:05:40 +0000
committernia <nia@NetBSD.org>2020-07-21 03:05:40 +0000
commit71a4bdd386813a0bd96c205cf36b3faf3b1ea0e1 (patch)
tree6341cc28ea21fd5de737d174da7132dd4cd345c6
parent28db4ccb3e2ee071d561e6ab9f075e7deb65fdb6 (diff)
downloadbsdgames-darwin-71a4bdd386813a0bd96c205cf36b3faf3b1ea0e1.tar.gz
bsdgames-darwin-71a4bdd386813a0bd96c205cf36b3faf3b1ea0e1.tar.zst
bsdgames-darwin-71a4bdd386813a0bd96c205cf36b3faf3b1ea0e1.zip
fortune: arc4random_uniform for better uniform values than random() % ...
-rw-r--r--fortune/fortune/fortune.c23
-rw-r--r--fortune/strfile/strfile.c8
2 files changed, 11 insertions, 20 deletions
diff --git a/fortune/fortune/fortune.c b/fortune/fortune/fortune.c
index d5dd74f4..05783951 100644
--- a/fortune/fortune/fortune.c
+++ b/fortune/fortune/fortune.c
@@ -1,4 +1,4 @@
-/* $NetBSD: fortune.c,v 1.64 2012/06/19 05:46:08 dholland Exp $ */
+/* $NetBSD: fortune.c,v 1.65 2020/07/21 03:05:40 nia Exp $ */
/*-
* Copyright (c) 1986, 1993
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1986, 1993\
#if 0
static char sccsid[] = "@(#)fortune.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: fortune.c,v 1.64 2012/06/19 05:46:08 dholland Exp $");
+__RCSID("$NetBSD: fortune.c,v 1.65 2020/07/21 03:05:40 nia Exp $");
#endif
#endif /* not lint */
@@ -190,7 +190,6 @@ static size_t maxlen_in_list(FILEDESC *);
int
main(int ac, char *av[])
{
- struct timeval tv;
#ifdef OK_TO_WRITE_DISK
int fd;
#endif /* OK_TO_WRITE_DISK */
@@ -203,12 +202,6 @@ main(int ac, char *av[])
#endif
init_prob();
- if (gettimeofday(&tv, NULL) != 0)
- err(1, "gettimeofday()");
- srandom(((unsigned long)tv.tv_sec) *
- ((unsigned long)tv.tv_usec+1) *
- ((unsigned long)getpid()+1) *
- ((unsigned long)getppid()+1));
do {
get_fort();
} while ((Short_only && fortlen() > SLEN) ||
@@ -933,7 +926,7 @@ get_fort(void)
if (File_list->next == NULL || File_list->percent == NO_PROB)
fp = File_list;
else {
- choice = random() % 100;
+ choice = arc4random_uniform(100);
DPRINTF(1, (stderr, "choice = %d\n", choice));
for (fp = File_list; fp->percent != NO_PROB; fp = fp->next)
if (choice < fp->percent)
@@ -953,7 +946,7 @@ get_fort(void)
else {
if (fp->next != NULL) {
sum_noprobs(fp);
- choice = random() % Noprob_tbl.str_numstr;
+ choice = arc4random_uniform(Noprob_tbl.str_numstr);
DPRINTF(1, (stderr, "choice = %d (of %d) \n", choice,
Noprob_tbl.str_numstr));
while ((u_int32_t)choice >= fp->tbl.str_numstr) {
@@ -994,7 +987,7 @@ pick_child(FILEDESC *parent)
int choice;
if (Equal_probs) {
- choice = random() % parent->num_children;
+ choice = arc4random_uniform(parent->num_children);
DPRINTF(1, (stderr, " choice = %d (of %d)\n",
choice, parent->num_children));
for (fp = parent->child; choice--; fp = fp->next)
@@ -1004,7 +997,7 @@ pick_child(FILEDESC *parent)
}
else {
get_tbl(parent);
- choice = random() % parent->tbl.str_numstr;
+ choice = arc4random_uniform(parent->tbl.str_numstr);
DPRINTF(1, (stderr, " choice = %d (of %d)\n",
choice, parent->tbl.str_numstr));
for (fp = parent->child; (u_int32_t)choice >= fp->tbl.str_numstr;
@@ -1084,13 +1077,13 @@ get_pos(FILEDESC *fp)
#ifdef OK_TO_WRITE_DISK
if ((fd = open(fp->posfile, O_RDONLY)) < 0 ||
read(fd, &fp->pos, sizeof fp->pos) != sizeof fp->pos)
- fp->pos = random() % fp->tbl.str_numstr;
+ fp->pos = arc4random_uniform(fp->tbl.str_numstr);
else if (fp->pos >= fp->tbl.str_numstr)
fp->pos %= fp->tbl.str_numstr;
if (fd >= 0)
(void) close(fd);
#else
- fp->pos = random() % fp->tbl.str_numstr;
+ fp->pos = arc4random_uniform(fp->tbl.str_numstr);
#endif /* OK_TO_WRITE_DISK */
}
if ((u_int64_t)++(fp->pos) >= fp->tbl.str_numstr)
diff --git a/fortune/strfile/strfile.c b/fortune/strfile/strfile.c
index 891c77dd..29298955 100644
--- a/fortune/strfile/strfile.c
+++ b/fortune/strfile/strfile.c
@@ -1,4 +1,4 @@
-/* $NetBSD: strfile.c,v 1.40 2020/04/30 12:32:26 christos Exp $ */
+/* $NetBSD: strfile.c,v 1.41 2020/07/21 03:05:40 nia Exp $ */
/*-
* Copyright (c) 1989, 1993
@@ -47,7 +47,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 1993\
#if 0
static char sccsid[] = "@(#)strfile.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: strfile.c,v 1.40 2020/04/30 12:32:26 christos Exp $");
+__RCSID("$NetBSD: strfile.c,v 1.41 2020/07/21 03:05:40 nia Exp $");
#endif
#endif /* not lint */
#endif /* __NetBSD__ */
@@ -438,8 +438,6 @@ randomize(void)
off_t tmp;
off_t *sp;
- srandom((int)(time(NULL) + getpid()));
-
Tbl.str_flags |= STR_RANDOM;
cnt = Tbl.str_numstr;
@@ -448,7 +446,7 @@ randomize(void)
*/
for (sp = Seekpts; cnt > 0; cnt--, sp++) {
- i = random() % cnt;
+ i = arc4random_uniform(cnt);
tmp = sp[0];
sp[0] = sp[i];
sp[i] = tmp;