Skip to content

Commit

Permalink
Fall back to /dev/urandom on EPERM for getrandom
Browse files Browse the repository at this point in the history
This can happen because of seccomp or some VMs.

Fixes #52609.
  • Loading branch information
tbu- committed May 1, 2019
1 parent 6cc24f2 commit bd8885d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/libstd/sys/unix/rand.rs
Expand Up @@ -47,7 +47,12 @@ mod imp {
let err = errno() as libc::c_int;
if err == libc::EINTR {
continue;
} else if err == libc::ENOSYS {
} else if err == libc::ENOSYS || err == libc::EPERM {
// Fall back to reading /dev/urandom if `getrandom` is not
// supported on the current kernel.
//
// Also fall back in case it is disabled by something like
// seccomp or inside of virtual machines.
GETRANDOM_UNAVAILABLE.store(true, Ordering::Relaxed);
return false;
} else if err == libc::EAGAIN {
Expand Down

0 comments on commit bd8885d

Please sign in to comment.