mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 00:03:10 +00:00
Add assert to range check memory values
This commit is contained in:
parent
715c350ee8
commit
304299a007
@ -426,22 +426,20 @@ impl<'a> Interpreter<'a> {
|
||||
|
||||
fn run_mload_general(&mut self) {
|
||||
let context = self.pop().as_usize();
|
||||
let segment = self.pop().as_usize();
|
||||
let segment = Segment::all()[self.pop().as_usize()];
|
||||
let offset = self.pop().as_usize();
|
||||
let value = self
|
||||
.memory
|
||||
.mload_general(context, Segment::all()[segment], offset);
|
||||
let value = self.memory.mload_general(context, segment, offset);
|
||||
assert!(value < U256::one() << segment.bit_range());
|
||||
self.push(value);
|
||||
}
|
||||
|
||||
fn run_mstore_general(&mut self) {
|
||||
// stack: context, segment, offset, value
|
||||
let context = self.pop().as_usize();
|
||||
let segment = self.pop().as_usize();
|
||||
let segment = Segment::all()[self.pop().as_usize()];
|
||||
let offset = self.pop().as_usize();
|
||||
let value = self.pop();
|
||||
self.memory
|
||||
.mstore_general(context, Segment::all()[segment], offset, value);
|
||||
assert!(value < U256::one() << segment.bit_range());
|
||||
self.memory.mstore_general(context, segment, offset, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -55,5 +55,18 @@ impl Segment {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate)
|
||||
#[allow(dead_code)]
|
||||
pub(crate) fn bit_range(&self) -> usize {
|
||||
match self {
|
||||
Segment::Code => 8,
|
||||
Segment::Stack => 256,
|
||||
Segment::MainMemory => 8,
|
||||
Segment::Calldata => 8,
|
||||
Segment::Returndata => 8,
|
||||
Segment::Metadata => 8,
|
||||
Segment::KernelGeneral => 8,
|
||||
Segment::TxnData => 8,
|
||||
Segment::RlpRaw => 8,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user