diff options
| author | bors <bors@rust-lang.org> | 2019-05-20 21:38:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-05-20 21:38:19 +0000 |
| commit | 09189591c4c4f6784ffd4bbe99eaefbfe1d5e4a4 (patch) | |
| tree | e2b332a585664a9225c26a37f9848501c9a7e8c5 /src/libstd/sys | |
| parent | d35181ad8785fa958e43580a29a982afe02c728f (diff) | |
| parent | 0c97800f93e13b5339773158502257b556db8392 (diff) | |
| download | rust-09189591c4c4f6784ffd4bbe99eaefbfe1d5e4a4.tar.gz rust-09189591c4c4f6784ffd4bbe99eaefbfe1d5e4a4.zip | |
Auto merge of #60986 - Centril:rollup-nhpgrfb, r=Centril
Rollup of 11 pull requests Successful merges: - #60383 (Fix position source code files toggle) - #60453 (Fall back to `/dev/urandom` on `EPERM` for `getrandom`) - #60487 (Fix search sidebar width when no crate select is present) - #60511 (Fix intra-doc link resolution failure on re-exporting libstd) - #60823 (Fix incremental compilation of cdylib emitting spurious unused_attributes lint) - #60915 (stable hashing: Remove unused field and add documentation.) - #60942 (Misc changes to rustc_metadata) - #60952 (Document BinaryHeap time complexity) - #60959 (rustc: Improve type size assertions) - #60972 (remove confusing remarks about mixed volatile and non-volatile accesses) - #60983 (Set -funwind-tables and -fno-exceptions unconditionally for LLVM's libunwind) Failed merges: r? @ghost
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/unix/rand.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/rand.rs b/src/libstd/sys/unix/rand.rs index 77f1439e17b..71c62461ee9 100644 --- a/src/libstd/sys/unix/rand.rs +++ b/src/libstd/sys/unix/rand.rs @@ -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 { |
