| ... | @@ -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 | #else | 1473 | #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) { |