MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / validate_range

Method validate_range

crates/wiggle/src/lib.rs:274–298  ·  view source on GitHub ↗
(&self, offset: u32, len: u32)

Source from the content-addressed store, hash-verified

272 }
273
274 fn validate_range<T>(&self, offset: u32, len: u32) -> Result<Range<usize>, GuestError>
275 where
276 T: GuestTypeTransparent,
277 {
278 let byte_len = len
279 .checked_mul(T::guest_size())
280 .ok_or(GuestError::PtrOverflow)?;
281 let region = Region {
282 start: offset,
283 len: byte_len,
284 };
285 let offset = usize::try_from(offset)?;
286 let byte_len = usize::try_from(byte_len)?;
287
288 let range = offset..offset + byte_len;
289 let oob = match self {
290 GuestMemory::Unshared(b) => b.get(range.clone()).is_none(),
291 GuestMemory::Shared(b) => b.get(range.clone()).is_none(),
292 };
293 if oob {
294 Err(GuestError::PtrOutOfBounds(region))
295 } else {
296 Ok(range)
297 }
298 }
299
300 /// Returns whether this is a shared memory or not.
301 pub fn is_shared_memory(&self) -> bool {

Callers

nothing calls this directly

Calls 5

OkFunction · 0.85
checked_mulMethod · 0.80
is_noneMethod · 0.45
getMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected