Skip to content

Commit ec2ea9f

Browse files
committed
f
1 parent e8d0b17 commit ec2ea9f

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

bindings/rust/src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,15 @@ impl From<ExecutionResult> for sys::FizzyExecutionResult {
160160
}
161161

162162
impl Instance {
163-
fn checked_memory_range(&self, offset: u32) -> Result<core::ops::Range<usize>, ()> {
163+
fn checked_memory_range(
164+
&self,
165+
offset: u32,
166+
size: usize,
167+
) -> Result<core::ops::Range<usize>, ()> {
164168
let offset = offset as usize;
165-
let size = 0 as usize;
169+
if (offset + size) > self.memory_size() {
170+
return Err(());
171+
}
166172
Ok(offset..offset + size)
167173
}
168174

@@ -179,7 +185,7 @@ impl Instance {
179185
sys::fizzy_get_instance_memory_size(self.0.as_ptr()),
180186
)
181187
};
182-
target.copy_from_slice(&mem[self.checked_memory_range(offset)?]);
188+
target.copy_from_slice(&mem[self.checked_memory_range(offset, target.len())?]);
183189
Ok(())
184190
}
185191

@@ -191,7 +197,7 @@ impl Instance {
191197
sys::fizzy_get_instance_memory_size(self.0.as_ptr()),
192198
)
193199
};
194-
mem[self.checked_memory_range(offset)?].copy_from_slice(source);
200+
mem[self.checked_memory_range(offset, source.len())?].copy_from_slice(source);
195201
Ok(())
196202
}
197203

0 commit comments

Comments
 (0)