Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def observe(self, ins_addr, stmt, block, state, ob_type):
if self._observation_points is not None and (ins_addr, ob_type) in self._observation_points:
if isinstance(stmt, pyvex.IRStmt.IRStmt):
# it's an angr block
vex_block = block.vex
# OP_BEFORE: stmt has to be IMark
if ob_type == OP_BEFORE and type(stmt) is pyvex.IRStmt.IMark:
self.observed_results[(ins_addr, ob_type)] = state.copy()
# OP_AFTER: stmt has to be last stmt of block or next stmt has to be IMark
elif ob_type == OP_AFTER:
idx = vex_block.statements.index(stmt)
if idx == len(vex_block.statements) - 1 or type(
vex_block.statements[idx + 1]) is pyvex.IRStmt.IMark:
self.observed_results[(ins_addr, ob_type)] = state.copy()
elif isinstance(stmt, ailment.Stmt.Statement):
# it's an AIL block
self.observed_results[(ins_addr, ob_type)] = state.copy()