Module Name: src
Committed By: nia
Date: Sun Oct 31 10:47:18 UTC 2021
Modified Files:
src/usr.sbin/timed/timed: timed.c
Log Message:
timed(8): avoid hand-rolling arc4random_uniform
To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/usr.sbin/timed/timed/timed.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/timed/timed/timed.c
diff -u src/usr.sbin/timed/timed/timed.c:1.26 src/usr.sbin/timed/timed/timed.c:1.27
--- src/usr.sbin/timed/timed/timed.c:1.26 Sun Feb 4 09:01:13 2018
+++ src/usr.sbin/timed/timed/timed.c Sun Oct 31 10:47:18 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: timed.c,v 1.26 2018/02/04 09:01:13 mrg Exp $ */
+/* $NetBSD: timed.c,v 1.27 2021/10/31 10:47:18 nia Exp $ */
/*-
* Copyright (c) 1985, 1993 The Regents of the University of California.
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1985, 19
#if 0
static char sccsid[] = "@(#)timed.c 8.2 (Berkeley) 3/26/95";
#else
-__RCSID("$NetBSD: timed.c,v 1.26 2018/02/04 09:01:13 mrg Exp $");
+__RCSID("$NetBSD: timed.c,v 1.27 2021/10/31 10:47:18 nia Exp $");
#endif
#endif /* not lint */
@@ -239,11 +239,8 @@ main(int argc, char *argv[])
err(EXIT_FAILURE, "bind");
}
- /* choose a unique seed for random number generation */
- (void)gettimeofday(&ntime, 0);
- srandom((unsigned long)(ntime.tv_sec + ntime.tv_usec));
-
- sequence = (u_short)random(); /* initial seq number */
+ /* initial seq number */
+ sequence = (u_short)arc4random_uniform(UINT16_MAX);
/* rounds kernel variable time to multiple of 5 ms. */
ntime.tv_sec = 0;
@@ -334,11 +331,10 @@ main(int argc, char *argv[])
/* microseconds to delay before responding to a broadcast */
- delay1 = casual(1L, 100*1000L);
+ delay1 = 1L + arc4random_uniform((100 * 1000L) - 1L);
/* election timer delay in secs. */
- delay2 = casual((long)MINTOUT, (long)MAXTOUT);
-
+ delay2 = MINTOUT + arc4random_uniform(MAXTOUT - MINTOUT);
if (!debug) {
daemon(debug, 0);
@@ -654,18 +650,6 @@ pickslavenet(struct netinfo *ntp)
makeslave(ntp);
}
-/*
- * returns a random number in the range [inf, sup]
- */
-long
-casual(long inf, long sup)
-{
- double value;
-
- value = ((double)(random() & 0x7fffffff)) / (0x7fffffff*1.0);
- return(inf + (sup - inf)*value);
-}
-
char *
date(void)
{