Skip to content

Commit

Permalink
Use getentropy() instead of /dev/urandom on Emscripten
Browse files Browse the repository at this point in the history
`/dev/urandom` is usually available on Emscripten, except when using
the special `NODERAWFS` filesystem backend, which replaces all normal
filesystem access with direct Node.js operations.

Since this filesystem backend directly access the filesystem on the
OS, it is not recommended to depend on `/dev/urandom`, especially
when trying to run the Wasm binary on OSes that are not Unix-based.

This can be considered a non-functional change, since Emscripten
implements `/dev/urandom` in the same way as `getentropy()` when not
linking with `-sNODERAWFS`.
  • Loading branch information
kleisauke committed Mar 14, 2023
1 parent 0058748 commit e303661
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions library/std/src/sys/unix/rand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ pub fn hashmap_random_keys() -> (u64, u64) {
not(target_os = "netbsd"),
not(target_os = "fuchsia"),
not(target_os = "redox"),
not(target_os = "vxworks")
not(target_os = "vxworks"),
not(target_os = "emscripten")
))]
mod imp {
use crate::fs::File;
Expand Down Expand Up @@ -174,7 +175,7 @@ mod imp {
}
}

#[cfg(target_os = "openbsd")]
#[cfg(any(target_os = "openbsd", target_os = "emscripten"))]
mod imp {
use crate::sys::os::errno;

Expand Down

0 comments on commit e303661

Please sign in to comment.