wasmer_wasix/syscalls/wasi/
random_get.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%buf_len), ret)]
12pub fn random_get<M: MemorySize>(
13 ctx: FunctionEnvMut<'_, WasiEnv>,
14 buf: WasmPtr<u8, M>,
15 buf_len: M::Offset,
16) -> Errno {
17 let env = ctx.data();
18 let memory = unsafe { env.memory_view(&ctx) };
19 let buf_len64: u64 = buf_len.into();
20 let mut u8_buffer = vec![0; buf_len64 as usize];
21 let res = getrandom::getrandom(&mut u8_buffer);
22 match res {
23 Ok(()) => {
24 let buf = wasi_try_mem!(buf.slice(&memory, buf_len));
25 wasi_try_mem!(buf.write_slice(&u8_buffer));
26 Errno::Success
27 }
28 Err(_) => Errno::Io,
29 }
30}