Commit 5c2233f2 authored by David du Colombier's avatar David du Colombier

runtime: don't use /dev/random on Plan 9

Plan 9 provides a /dev/random device to return a
stream of random numbers. However, the method used
to generate random numbers on Plan 9 is slow and
reading from /dev/random may block.

We don't want our Go programs to be significantly
slowed down just to slightly improve the distribution
of hash values.

So, we do the same thing as NaCl and rely exclusively
on extendRandom to generate pseudo-random numbers.

Fixes #10028.

Change-Id: I7e11a9b109c22f23608eb09c406b7c3dba31f26a
Reviewed-on: https://go-review.googlesource.com/6386Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent f0bd95b8
......@@ -85,14 +85,9 @@ func crash() {
*(*int)(nil) = 0
}
var random_dev = []byte("/dev/random\x00")
//go:nosplit
func getRandomData(r []byte) {
fd := open(&random_dev[0], 0 /* O_RDONLY */, 0)
n := read(fd, unsafe.Pointer(&r[0]), int32(len(r)))
close(fd)
extendRandom(r, int(n))
extendRandom(r, 0)
}
func goenvs() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment