diff --git a/crates/wasi-common/src/snapshots/wasi_snapshot_preview1.rs b/crates/wasi-common/src/snapshots/wasi_snapshot_preview1.rs index 15dc7e3109..4002a58d40 100644 --- a/crates/wasi-common/src/snapshots/wasi_snapshot_preview1.rs +++ b/crates/wasi-common/src/snapshots/wasi_snapshot_preview1.rs @@ -8,7 +8,7 @@ use std::convert::TryInto; use std::io::{self, SeekFrom}; use std::ops::Deref; use tracing::{debug, trace}; -use wiggle::{GuestPtr, GuestSlice}; +use wiggle::{GuestPtr, GuestSliceMut}; impl<'a> WasiSnapshotPreview1 for WasiCtx { fn args_get<'b>( @@ -159,11 +159,11 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx { iovs: &types::IovecArray<'_>, offset: types::Filesize, ) -> Result { - let mut guest_slices: Vec> = Vec::new(); + let mut guest_slices: Vec> = Vec::new(); for iov_ptr in iovs.iter() { let iov_ptr = iov_ptr?; let iov: types::Iovec = iov_ptr.read()?; - guest_slices.push(iov.buf.as_array(iov.buf_len).as_slice()?); + guest_slices.push(iov.buf.as_array(iov.buf_len).as_slice_mut()?); } let required_rights = @@ -266,7 +266,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx { for iov_ptr in iovs.iter() { let iov_ptr = iov_ptr?; let iov: types::Iovec = iov_ptr.read()?; - guest_slices.push(iov.buf.as_array(iov.buf_len).as_slice()?); + guest_slices.push(iov.buf.as_array(iov.buf_len).as_slice_mut()?); } let required_rights = HandleRights::from_base(types::Rights::FD_READ); @@ -567,7 +567,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx { false, )? }; - let mut slice = buf.as_array(buf_len).as_slice()?; + let mut slice = buf.as_array(buf_len).as_slice_mut()?; let host_bufused = dirfd.readlink(&path, &mut *slice)?.try_into()?; Ok(host_bufused) } @@ -800,7 +800,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx { } fn random_get(&self, buf: &GuestPtr, buf_len: types::Size) -> Result<()> { - let mut slice = buf.as_array(buf_len).as_slice()?; + let mut slice = buf.as_array(buf_len).as_slice_mut()?; getrandom::getrandom(&mut *slice)?; Ok(()) }