summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/drand48.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/stdlib/drand48.c')
-rw-r--r--src/lib/libc/stdlib/drand48.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/drand48.c b/src/lib/libc/stdlib/drand48.c
index b6c046c831..bbeedf8a8a 100644
--- a/src/lib/libc/stdlib/drand48.c
+++ b/src/lib/libc/stdlib/drand48.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: drand48.c,v 1.3 2005/08/08 08:05:36 espie Exp $ */ 1/* $OpenBSD: drand48.c,v 1.4 2014/12/08 21:45:20 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 1993 Martin Birgmeier 3 * Copyright (c) 1993 Martin Birgmeier
4 * All rights reserved. 4 * All rights reserved.
@@ -19,5 +19,13 @@ extern unsigned short __rand48_seed[3];
19double 19double
20drand48(void) 20drand48(void)
21{ 21{
22 if (__rand48_deterministic == 0) {
23 short rseed[3];
24
25 arc4random_buf(rseed, sizeof rseed);
26 return ldexp((double) rseed[0], -48) +
27 ldexp((double) rseed[1], -32) +
28 ldexp((double) rseed[2], -16);
29 }
22 return erand48(__rand48_seed); 30 return erand48(__rand48_seed);
23} 31}