authorgravatar for nia@netbsd.orgnia <nia@netbsd.org> 2020-05-01 17:23:27+01:00
committergravatar for nia@netbsd.orgnia <nia@netbsd.org> 2020-05-01 17:23:27+01:00
log74ad31536051e68b4b9edf924662b34c30b09da7
tree4f56bc641a1c8b4050584a2a6f8f470590efbdb7
parent14a954f3507d97e1a6e6c995f3e4d3db76c64b3d

In init_rand avoid reading from /dev/urandom on NetBSD/FreeBSD

Use the KERN_ARND sysctl instead.

1 files changed, 8 insertions(+), 0 deletions(-)

src/os.cpp+8
...@@ -1462,6 +1462,14 @@ static void init_rand() {...@@ -1462,6 +1462,14 @@ static void init_rand() {
1462 unsigned seed;1462 unsigned seed;
1463 memcpy(&seed, ptr_random, sizeof(seed));1463 memcpy(&seed, ptr_random, sizeof(seed));
1464 srand(seed);1464 srand(seed);
1465#elif defined(ZIG_OS_FREEBSD) || defined(ZIG_OS_NETBSD)
1466 unsigned seed;
1467 size_t len = sizeof(seed);
1468 int mib[2] = { CTL_KERN, KERN_ARND };
1469 if (sysctl(mib, 2, &seed, &len, NULL, 0) != 0) {
1470 zig_panic("unable to query random data from sysctl");
1471 }
1472 srand(seed);
1465#else1473#else
1466 int fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);1474 int fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC);
1467 if (fd == -1) {1475 if (fd == -1) {