Add concretization

pull/404/head
Joran Honig 6 years ago
parent e05940e06e
commit 01bf9ca812
  1. 16
      mythril/laser/ethereum/instructions.py

@ -1042,6 +1042,13 @@ class Instruction:
return [global_state]
try:
memory_out_offset = util.get_concrete_int(memory_out_offset) if isinstance(memory_out_offset, ExprRef) else memory_out_offset
memory_out_size = util.get_concrete_int(memory_out_size) if isinstance(memory_out_size, ExprRef) else memory_out_size
except AttributeError:
global_state.mstate.stack.append(BitVec("retval_" + str(instr['address']), 256))
return [global_state]
# Copy memory
global_state.mstate.mem_extend(memory_out_offset, min(memory_out_size.as_long(), len(global_state.last_return_data)))
for i in range(min(memory_out_size.as_long(), len(global_state.last_return_data))):
@ -1105,6 +1112,15 @@ class Instruction:
return [global_state]
try:
memory_out_offset = util.get_concrete_int(memory_out_offset) if isinstance(memory_out_offset,
ExprRef) else memory_out_offset
memory_out_size = util.get_concrete_int(memory_out_size) if isinstance(memory_out_size,
ExprRef) else memory_out_size
except AttributeError:
global_state.mstate.stack.append(BitVec("retval_" + str(instr['address']), 256))
return [global_state]
# Copy memory
global_state.mstate.mem_extend(memory_out_offset,
min(memory_out_size.as_long(), len(global_state.last_return_data)))

Loading…
Cancel
Save