Source code for angr.errors

# pylint:disable=missing-class-docstring


[docs] class AngrError(Exception): pass
[docs] class AngrValueError(AngrError, ValueError): pass
[docs] class AngrLifterError(AngrError): pass
[docs] class AngrExitError(AngrError): pass
[docs] class AngrPathError(AngrError): pass
[docs] class AngrVaultError(AngrError): pass
[docs] class PathUnreachableError(AngrPathError): pass
[docs] class SimulationManagerError(AngrError): pass
[docs] class AngrInvalidArgumentError(AngrError): pass
[docs] class AngrSurveyorError(AngrError): pass
[docs] class AngrAnalysisError(AngrError): pass
[docs] class AngrBladeError(AngrError): pass
[docs] class AngrBladeSimProcError(AngrBladeError): pass
[docs] class AngrAnnotatedCFGError(AngrError): pass
[docs] class AngrBackwardSlicingError(AngrError): pass
[docs] class AngrGirlScoutError(AngrError): pass
[docs] class AngrCallableError(AngrSurveyorError): pass
[docs] class AngrCallableMultistateError(AngrCallableError): pass
[docs] class AngrSyscallError(AngrError): pass
[docs] class AngrSimOSError(AngrError): pass
[docs] class AngrAssemblyError(AngrError): pass
[docs] class AngrTypeError(AngrError, TypeError): pass
[docs] class AngrMissingTypeError(AngrTypeError): pass
# Congruency check failure
[docs] class AngrIncongruencyError(AngrAnalysisError): pass
# # ForwardAnalysis errors #
[docs] class AngrForwardAnalysisError(AngrError): pass
[docs] class AngrSkipJobNotice(AngrForwardAnalysisError): pass
[docs] class AngrDelayJobNotice(AngrForwardAnalysisError): pass
[docs] class AngrJobMergingFailureNotice(AngrForwardAnalysisError): pass
[docs] class AngrJobWideningFailureNotice(AngrForwardAnalysisError): pass
# # CFG errors #
[docs] class AngrCFGError(AngrError): pass
# # VFG Errors and notices #
[docs] class AngrVFGError(AngrError): pass
[docs] class AngrVFGRestartAnalysisNotice(AngrVFGError): pass
# # Data graph errors #
[docs] class AngrDataGraphError(AngrAnalysisError): # TODO: deprecated pass
[docs] class AngrDDGError(AngrAnalysisError): pass
# # Loop analysis #
[docs] class AngrLoopAnalysisError(AngrAnalysisError): pass
# # Exploration techniques #
[docs] class AngrExplorationTechniqueError(AngrError): pass
[docs] class AngrExplorerError(AngrExplorationTechniqueError): pass
[docs] class AngrDirectorError(AngrExplorationTechniqueError): pass
[docs] class AngrTracerError(AngrExplorationTechniqueError): pass
# # VariableRecovery errors #
[docs] class AngrVariableRecoveryError(AngrAnalysisError): pass
# # AngrDB errors #
[docs] class AngrDBError(AngrError): pass
[docs] class AngrCorruptDBError(AngrDBError): pass
[docs] class AngrIncompatibleDBError(AngrDBError): pass
# # Tracer #
[docs] class TracerEnvironmentError(AngrError): pass
# # Simulation errors #
[docs] class SimError(Exception): bbl_addr = None stmt_idx = None ins_addr = None executed_instruction_count = None guard = None
[docs] def record_state(self, state): self.bbl_addr = state.scratch.bbl_addr self.stmt_idx = state.scratch.stmt_idx self.ins_addr = state.scratch.ins_addr self.executed_instruction_count = state.history.recent_instruction_count self.guard = state.scratch.guard return self
# # State-related errors #
[docs] class SimStateError(SimError): pass
[docs] class SimMergeError(SimStateError): pass
[docs] class SimMemoryError(SimStateError): pass
[docs] class SimMemoryMissingError(SimMemoryError):
[docs] def __init__(self, missing_addr, missing_size, *args): super().__init__(missing_addr, missing_size, *args) self.missing_addr = missing_addr self.missing_size = missing_size
[docs] class SimAbstractMemoryError(SimMemoryError): pass
[docs] class SimRegionMapError(SimMemoryError): pass
[docs] class SimMemoryLimitError(SimMemoryError): pass
[docs] class SimMemoryAddressError(SimMemoryError): pass
[docs] class SimFastMemoryError(SimMemoryError): pass
[docs] class SimEventError(SimStateError): pass
[docs] class SimPosixError(SimStateError): pass
[docs] class SimFilesystemError(SimError): pass
[docs] class SimSymbolicFilesystemError(SimFilesystemError): pass
[docs] class SimFileError(SimMemoryError, SimFilesystemError): pass
[docs] class SimHeapError(SimStateError): pass
# # Error class during VEX parsing #
[docs] class SimUnsupportedError(SimError): pass
# # Solver-related errors #
[docs] class SimSolverError(SimError): pass
[docs] class SimSolverModeError(SimSolverError): pass
[docs] class SimSolverOptionError(SimSolverError): pass
[docs] class SimValueError(SimSolverError): pass
[docs] class SimUnsatError(SimValueError): pass
# # SimIROp errors #
[docs] class SimOperationError(SimError): pass
[docs] class UnsupportedIROpError(SimOperationError, SimUnsupportedError): pass
# # SimIRExpr errors #
[docs] class SimExpressionError(SimError): pass
[docs] class UnsupportedIRExprError(SimExpressionError, SimUnsupportedError): pass
[docs] class SimCCallError(SimExpressionError): pass
[docs] class UnsupportedCCallError(SimCCallError, SimUnsupportedError): pass
[docs] class SimUninitializedAccessError(SimExpressionError):
[docs] def __init__(self, expr_type, expr): SimExpressionError.__init__(self) self.expr_type = expr_type self.expr = expr
def __repr__(self): return f"SimUninitializedAccessError (expr {self.expr} is used as {self.expr_type})" def __reduce__(self): return (SimUninitializedAccessError, (self.expr_type, self.expr))
# # SimIRStmt errors #
[docs] class SimStatementError(SimError): pass
[docs] class UnsupportedIRStmtError(SimStatementError, SimUnsupportedError): pass
[docs] class UnsupportedDirtyError(UnsupportedIRStmtError, SimUnsupportedError): pass
[docs] class SimMissingTempError(SimValueError, IndexError): pass
# # Engine-related errors #
[docs] class SimEngineError(SimError): pass
[docs] class SimIRSBError(SimEngineError): pass
[docs] class SimTranslationError(SimEngineError): pass
[docs] class SimProcedureError(SimEngineError): pass
[docs] class SimProcedureArgumentError(SimProcedureError): pass
[docs] class SimShadowStackError(SimProcedureError): pass
[docs] class SimFastPathError(SimEngineError): pass
[docs] class SimIRSBNoDecodeError(SimIRSBError): pass
[docs] class AngrUnsupportedSyscallError(AngrSyscallError, SimProcedureError, SimUnsupportedError): pass
UnsupportedSyscallError = AngrUnsupportedSyscallError
[docs] class SimReliftException(SimEngineError):
[docs] def __init__(self, state): super().__init__() self.state = state
# # SimSlicer errors #
[docs] class SimSlicerError(SimError): pass
# # SimAction errors #
[docs] class SimActionError(SimError): pass
# # SimCC errors #
[docs] class SimCCError(SimError): pass
# # UCManager errors #
[docs] class SimUCManagerError(SimError): pass
[docs] class SimUCManagerAllocationError(SimUCManagerError): pass
# # SimUnicorn errors #
[docs] class SimUnicornUnsupport(SimError): pass
[docs] class SimUnicornError(SimError): pass
[docs] class SimUnicornSymbolic(SimError): pass
# # Call-stack Errors #
[docs] class SimEmptyCallStackError(SimError): pass
# # SimStateOptions Errors #
[docs] class SimStateOptionsError(SimError): pass
# # Errors that may be handled by exception handling #
[docs] class SimException(SimError): pass
[docs] class SimSegfaultException(SimException, SimMemoryError):
[docs] def __init__(self, addr, reason, original_addr=None): self.addr = addr self.reason = reason self.original_addr = original_addr super(SimSegfaultError, self).__init__(f"{addr:#x} ({reason})")
def __repr__(self): return "SimSegfaultException({:#x} ({}{})".format( self.addr, self.reason, (", original %s" % self.original_addr.__repr__(max_depth=3)) if self.original_addr is not None else "", ) def __reduce__(self): return (SimSegfaultException, (self.addr, self.reason, self.original_addr))
SimSegfaultError = SimSegfaultException
[docs] class SimZeroDivisionException(SimException, SimOperationError): pass
[docs] class AngrNoPluginError(AngrError): pass
# # Concrete Targets Execution errors #
[docs] class SimConcreteMemoryError(AngrError): pass
[docs] class SimConcreteRegisterError(AngrError): pass
[docs] class SimConcreteBreakpointError(AngrError): pass
# # Decompiler errors #
[docs] class UnsupportedNodeTypeError(AngrError, NotImplementedError): pass