|
|
@ -520,14 +520,16 @@ class Instruction: |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
concrete_memory_offset = helper.get_concrete_int(memory_offset) |
|
|
|
concrete_memory_offset = helper.get_concrete_int(memory_offset) |
|
|
|
except: |
|
|
|
except AttributeError: |
|
|
|
logging.debug("Unsupported symbolic memory offset in CODECOPY") |
|
|
|
logging.debug("Unsupported symbolic memory offset in CODECOPY") |
|
|
|
return [global_state] |
|
|
|
return [global_state] |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
concrete_size = helper.get_concrete_int(size) |
|
|
|
concrete_size = helper.get_concrete_int(size) |
|
|
|
|
|
|
|
global_state.mstate.mem_extend(concrete_memory_offset, concrete_size) |
|
|
|
|
|
|
|
|
|
|
|
except: |
|
|
|
except: |
|
|
|
logging.debug("Unsupported symbolic size in CODECOPY") |
|
|
|
# except both attribute error and Exception |
|
|
|
global_state.mstate.mem_extend(concrete_memory_offset, 1) |
|
|
|
global_state.mstate.mem_extend(concrete_memory_offset, 1) |
|
|
|
global_state.mstate.memory[concrete_memory_offset] = \ |
|
|
|
global_state.mstate.memory[concrete_memory_offset] = \ |
|
|
|
BitVec("code({})".format(global_state.environment.active_account.contract_name), 256) |
|
|
|
BitVec("code({})".format(global_state.environment.active_account.contract_name), 256) |
|
|
@ -535,7 +537,7 @@ class Instruction: |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
concrete_code_offset = helper.get_concrete_int(code_offset) |
|
|
|
concrete_code_offset = helper.get_concrete_int(code_offset) |
|
|
|
except: |
|
|
|
except AttributeError: |
|
|
|
logging.debug("Unsupported symbolic code offset in CODECOPY") |
|
|
|
logging.debug("Unsupported symbolic code offset in CODECOPY") |
|
|
|
global_state.mstate.mem_extend(concrete_memory_offset, concrete_size) |
|
|
|
global_state.mstate.mem_extend(concrete_memory_offset, concrete_size) |
|
|
|
for i in range(concrete_size): |
|
|
|
for i in range(concrete_size): |
|
|
|