You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
target_account.info.balance += current_account_balance; : The value of current_account_balance has no check for overflow, causing a panic in the executor.
#[test]fntest_arithmetic_operation_overflow_selfdestruct(){letmut vm = new_vm_with_bytecode(Bytes::copy_from_slice(&[50,255]));letmut current_call_frame = vm.call_frames.pop().unwrap();
vm.execute(&mut current_call_frame);}
Backtrace
--- tests::test_arithmetic_operation_overflow_selfdestruct stdout ----
thread 'tests::test_arithmetic_operation_overflow_selfdestruct' panicked at /home/.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/primitive-types-0.12.2/src/lib.rs:38:1:
arithmetic operation overflow
stack backtrace:0: rust_begin_unwind
at /rustc/59e2c01c2217a01546222e4d9ff4e6695ee8a1db/library/std/src/panicking.rs:658:51: core::panicking::panic_fmt
at /rustc/59e2c01c2217a01546222e4d9ff4e6695ee8a1db/library/core/src/panicking.rs:74:142: <primitive_types::U256as core::ops::arith::AddAssign>::add_assign
at /home/.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/uint-0.9.5/src/uint.rs:1403:53: ethereum_rust_levm::opcode_handlers::system::<impl ethereum_rust_levm::vm::VM>::op_selfdestruct
at ./src/opcode_handlers/system.rs:340:94: ethereum_rust_levm::vm::VM::execute
at ./src/vm.rs:244:415: lib::tests::test_arithmetic_operation_overflow_selfdestruct
at ./tests/tests.rs:76:56: lib::tests::test_arithmetic_operation_overflow_selfdestruct::{{closure}}
at ./tests/tests.rs:72:537: core::ops::function::FnOnce::call_once
at /rustc/59e2c01c2217a01546222e4d9ff4e6695ee8a1db/library/core/src/ops/function.rs:250:58: core::ops::function::FnOnce::call_once
at /rustc/59e2c01c2217a01546222e4d9ff4e6695ee8a1db/library/core/src/ops/function.rs:250:5
The text was updated successfully, but these errors were encountered:
Our team (@FuzzingLabs) discovered a bug was identified in the op_selfdestruct function, which does not check for any overflow.
Root cause
target_account.info.balance += current_account_balance;
: The value of current_account_balance has no check for overflow, causing a panic in the executor.Step to reproduce
Add to [test](https://github.com/lambdaclass/lambda_ethereum_rust/blob/main/crates/vm/levm/tests/tests.rs) :
Backtrace
The text was updated successfully, but these errors were encountered: