Assert valid operand length (#558)
* Assert valid bytecode and operand length EVM bytecode comes in 32-byte chunks, and contracts require at least one segment to be created. An example, originally written by @ggrieco-tob in issue #546, is included. Unsure what expected behavior should be, but initial state has a problem when a contract is created with a single byte. Also added some exception handling in `parse_operand()` to catch invalid instructions, e.g. a PUSH1 instruction followed by no bytes. Signed-off-by: Cole Lightfighter <cole@onicsla.bz> * Fix SLOAD invalid memory access Simple check to ensure address storage is in global_storage before attempting to load data. * Remove invalid assertions
This commit is contained in:
parent
fbe70f1bc5
commit
fccf451406
21
examples/evm/experiment.py
Normal file
21
examples/evm/experiment.py
Normal file
@ -0,0 +1,21 @@
|
||||
from seth import *
|
||||
|
||||
seth = ManticoreEVM()
|
||||
seth.verbosity(3)
|
||||
user_account = seth.create_account(balance=1000)
|
||||
|
||||
bytecode = '`'
|
||||
#Initialize contract
|
||||
contract_account = seth.create_contract(owner=user_account,
|
||||
balance=0,
|
||||
init=bytecode)
|
||||
|
||||
def explore(state):
|
||||
pass
|
||||
|
||||
seth.add_hook(None, explore)
|
||||
seth.transaction( caller=user_account,
|
||||
address=contract_account,
|
||||
value=None,
|
||||
data='',
|
||||
)
|
||||
Loading…
x
Reference in New Issue
Block a user