diff options
Diffstat (limited to 'src/wasi.rs')
-rw-r--r-- | src/wasi.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wasi.rs b/src/wasi.rs index 4674f43..2d413e0 100644 --- a/src/wasi.rs +++ b/src/wasi.rs @@ -12,8 +12,12 @@ use core::num::NonZeroU32; use wasi::random_get; pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> { - unsafe { random_get(dest.as_mut_ptr(), dest.len()) }.map_err(|e: wasi::Error| { - // convert wasi's Error into getrandom's NonZeroU32 error - NonZeroU32::new(e.raw_error() as u32).unwrap().into() - }) + unsafe { + random_get(dest.as_mut_ptr(), dest.len()).map_err(|e: wasi::Error| { + // convert wasi's Error into getrandom's NonZeroU32 error + // SAFETY: `wasi::Error` is `NonZeroU16` internally, so `e.raw_error()` + // will never return 0 + NonZeroU32::new_unchecked(e.raw_error() as u32).into() + }) + } } |