Skip to content

Commit 74984ed

Browse files
committed
f
1 parent 53c94c6 commit 74984ed

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
@@ -159,9 +159,15 @@ impl From<ExecutionResult> for sys::FizzyExecutionResult {
159159
}
160160

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

@@ -178,7 +184,7 @@ impl Instance {
178184
sys::fizzy_get_instance_memory_size(self.0.as_ptr()),
179185
)
180186
};
181-
target.copy_from_slice(&mem[self.checked_memory_range(offset)?]);
187+
target.copy_from_slice(&mem[self.checked_memory_range(offset, target.len())?]);
182188
Ok(())
183189
}
184190

@@ -190,7 +196,7 @@ impl Instance {
190196
sys::fizzy_get_instance_memory_size(self.0.as_ptr()),
191197
)
192198
};
193-
mem[self.checked_memory_range(offset)?].copy_from_slice(source);
199+
mem[self.checked_memory_range(offset, source.len())?].copy_from_slice(source);
194200
Ok(())
195201
}
196202

0 commit comments

Comments
 (0)