runtime: clean up & go-ify the hash function seeder
Change-Id: I0e95f8a5962c547da20e19a356ae1cf8375c9107
Reviewed-on: https://go-review.googlesource.com/1270
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/src/runtime/os1_darwin.go b/src/runtime/os1_darwin.go
index 2fbf2ca..12642aa 100644
--- a/src/runtime/os1_darwin.go
+++ b/src/runtime/os1_darwin.go
@@ -45,20 +45,14 @@
}
}
-var urandom_data [_HashRandomBytes]byte
var urandom_dev = []byte("/dev/random\x00")
//go:nosplit
-func get_random_data(rnd *unsafe.Pointer, rnd_len *int32) {
+func getRandomData(r []byte) {
fd := open(&urandom_dev[0], 0 /* O_RDONLY */, 0)
- if read(fd, unsafe.Pointer(&urandom_data), _HashRandomBytes) == _HashRandomBytes {
- *rnd = unsafe.Pointer(&urandom_data[0])
- *rnd_len = _HashRandomBytes
- } else {
- *rnd = nil
- *rnd_len = 0
- }
+ n := read(fd, unsafe.Pointer(&r[0]), int32(len(r)))
close(fd)
+ extendRandom(r, int(n))
}
func goenvs() {