1class AngrError(Exception): 2 pass 3 4class AngrValueError(AngrError, ValueError): 5 pass 6 7class AngrLifterError(AngrError): 8 pass 9 10class AngrExitError(AngrError): 11 pass 12 13class AngrPathError(AngrError): 14 pass 15 16class AngrVaultError(AngrError): 17 pass 18 19class PathUnreachableError(AngrPathError): 20 pass 21 22class SimulationManagerError(AngrError): 23 pass 24 25class AngrInvalidArgumentError(AngrError): 26 pass 27 28class AngrSurveyorError(AngrError): 29 pass 30 31class AngrAnalysisError(AngrError): 32 pass 33 34class AngrBladeError(AngrError): 35 pass 36 37class AngrBladeSimProcError(AngrBladeError): 38 pass 39 40class AngrAnnotatedCFGError(AngrError): 41 pass 42 43class AngrBackwardSlicingError(AngrError): 44 pass 45 46class AngrGirlScoutError(AngrError): 47 pass 48 49class AngrCallableError(AngrSurveyorError): 50 pass 51 52class AngrCallableMultistateError(AngrCallableError): 53 pass 54 55class AngrSyscallError(AngrError): 56 pass 57 58class AngrSimOSError(AngrError): 59 pass 60 61class AngrAssemblyError(AngrError): 62 pass 63 64# Congruency check failure 65class AngrIncongruencyError(AngrAnalysisError): 66 pass 67 68# 69# ForwardAnalysis errors 70# 71 72class AngrForwardAnalysisError(AngrError): 73 pass 74 75class AngrSkipJobNotice(AngrForwardAnalysisError): 76 pass 77 78class AngrDelayJobNotice(AngrForwardAnalysisError): 79 pass 80 81class AngrJobMergingFailureNotice(AngrForwardAnalysisError): 82 pass 83 84class AngrJobWideningFailureNotice(AngrForwardAnalysisError): 85 pass 86 87# 88# CFG errors 89# 90 91class AngrCFGError(AngrError): 92 pass 93 94# 95# VFG Errors and notices 96# 97 98class AngrVFGError(AngrError): 99 pass 100 101class AngrVFGRestartAnalysisNotice(AngrVFGError): 102 pass 103 104# 105# Data graph errors 106# 107 108class AngrDataGraphError(AngrAnalysisError): 109 # TODO: deprecated 110 pass 111 112class AngrDDGError(AngrAnalysisError): 113 pass 114 115# 116# Loop analysis 117# 118 119class AngrLoopAnalysisError(AngrAnalysisError): 120 pass 121 122# 123# Exploration techniques 124# 125 126class AngrExplorationTechniqueError(AngrError): 127 pass 128 129class AngrExplorerError(AngrExplorationTechniqueError): 130 pass 131 132class AngrDirectorError(AngrExplorationTechniqueError): 133 pass 134 135class AngrTracerError(AngrExplorationTechniqueError): 136 pass 137 138 139# 140# VariableRecovery errors 141# 142 143class AngrVariableRecoveryError(AngrAnalysisError): 144 pass 145 146 147# 148# AngrDB errors 149# 150 151 152class AngrDBError(AngrError): 153 pass 154 155 156class AngrCorruptDBError(AngrDBError): 157 pass 158 159class AngrIncompatibleDBError(AngrDBError): 160 pass 161 162# 163# Tracer 164# 165 166class TracerEnvironmentError(AngrError): 167 pass 168 169# 170# Simulation errors 171# 172 173class SimError(Exception): 174 bbl_addr = None 175 stmt_idx = None 176 ins_addr = None 177 executed_instruction_count = None 178 guard = None 179 180 def record_state(self, state): 181 self.bbl_addr = state.scratch.bbl_addr 182 self.stmt_idx = state.scratch.stmt_idx 183 self.ins_addr = state.scratch.ins_addr 184 self.executed_instruction_count = state.history.recent_instruction_count 185 self.guard = state.scratch.guard 186 return self 187 188# 189# State-related errors 190# 191 192class SimStateError(SimError): 193 pass 194 195class SimMergeError(SimStateError): 196 pass 197 198class SimMemoryError(SimStateError): 199 pass 200 201class SimMemoryMissingError(SimMemoryError): 202 pass 203 204class SimAbstractMemoryError(SimMemoryError): 205 pass 206 207class SimRegionMapError(SimMemoryError): 208 pass 209 210class SimMemoryLimitError(SimMemoryError): 211 pass 212 213class SimMemoryAddressError(SimMemoryError): 214 pass 215 216class SimFastMemoryError(SimMemoryError): 217 pass 218 219class SimEventError(SimStateError): 220 pass 221 222class SimPosixError(SimStateError): 223 pass 224 225 226class SimFilesystemError(SimError): 227 pass 228 229class SimSymbolicFilesystemError(SimFilesystemError): 230 pass 231 232class SimFileError(SimMemoryError, SimFilesystemError): 233 pass 234 235class SimHeapError(SimStateError): 236 pass 237 238# 239# Error class during VEX parsing 240# 241 242class SimUnsupportedError(SimError): 243 pass 244 245# 246# Solver-related errors 247# 248 249class SimSolverError(SimError): 250 pass 251 252class SimSolverModeError(SimSolverError): 253 pass 254 255class SimSolverOptionError(SimSolverError): 256 pass 257 258class SimValueError(SimSolverError): 259 pass 260 261class SimUnsatError(SimValueError): 262 pass 263 264# 265# SimIROp errors 266# 267 268class SimOperationError(SimError): 269 pass 270 271class UnsupportedIROpError(SimOperationError, SimUnsupportedError): 272 pass 273 274# 275# SimIRExpr errors 276# 277 278class SimExpressionError(SimError): 279 pass 280 281class UnsupportedIRExprError(SimExpressionError, SimUnsupportedError): 282 pass 283 284class SimCCallError(SimExpressionError): 285 pass 286 287class UnsupportedCCallError(SimCCallError, SimUnsupportedError): 288 pass 289 290class SimUninitializedAccessError(SimExpressionError): 291 def __init__(self, expr_type, expr): 292 SimExpressionError.__init__(self) 293 self.expr_type = expr_type 294 self.expr = expr 295 296 def __repr__(self): 297 return "SimUninitializedAccessError (expr %s is used as %s)" % (self.expr, self.expr_type) 298 299 def __reduce__(self): 300 return (SimUninitializedAccessError, (self.expr_type, self.expr)) 301 302# 303# SimIRStmt errors 304# 305 306class SimStatementError(SimError): 307 pass 308 309class UnsupportedIRStmtError(SimStatementError, SimUnsupportedError): 310 pass 311 312class UnsupportedDirtyError(UnsupportedIRStmtError, SimUnsupportedError): 313 pass 314 315# 316# Engine-related errors 317# 318 319class SimEngineError(SimError): 320 pass 321 322class SimIRSBError(SimEngineError): 323 pass 324 325class SimTranslationError(SimEngineError): 326 pass 327 328class SimProcedureError(SimEngineError): 329 pass 330 331class SimProcedureArgumentError(SimProcedureError): 332 pass 333 334class SimShadowStackError(SimProcedureError): 335 pass 336 337class SimFastPathError(SimEngineError): 338 pass 339 340class SimIRSBNoDecodeError(SimIRSBError): 341 pass 342 343class AngrUnsupportedSyscallError(AngrSyscallError, SimProcedureError, SimUnsupportedError): 344 pass 345 346UnsupportedSyscallError = AngrUnsupportedSyscallError 347 348class SimReliftException(SimEngineError): 349 def __init__(self, state): 350 super(SimReliftException, self).__init__() 351 self.state = state 352 353# 354# SimSlicer errors 355# 356 357class SimSlicerError(SimError): 358 pass 359 360# 361# SimAction errors 362# 363 364class SimActionError(SimError): 365 pass 366 367# 368# SimCC errors 369# 370 371class SimCCError(SimError): 372 pass 373 374# 375# UCManager errors 376# 377 378class SimUCManagerError(SimError): 379 pass 380 381class SimUCManagerAllocationError(SimUCManagerError): 382 pass 383 384# 385# SimUnicorn errors 386# 387 388class SimUnicornUnsupport(SimError): 389 pass 390 391class SimUnicornError(SimError): 392 pass 393 394class SimUnicornSymbolic(SimError): 395 pass 396 397 398# 399# Call-stack Errors 400# 401 402class SimEmptyCallStackError(SimError): 403 pass 404 405# 406# SimStateOptions Errors 407# 408 409class SimStateOptionsError(SimError): 410 pass 411 412# 413# Errors that may be handled by exception handling 414# 415 416class SimException(SimError): 417 pass 418 419class SimSegfaultException(SimException, SimMemoryError): 420 def __init__(self, addr, reason, original_addr=None): 421 self.addr = addr 422 self.reason = reason 423 self.original_addr = original_addr 424 super(SimSegfaultError, self).__init__('%#x (%s)' % (addr, reason)) 425 426 def __repr__(self): 427 return 'SimSegfaultException(%#x (%s%s)' % ( 428 self.addr, 429 self.reason, 430 (', original %s' % self.original_addr.__repr__(max_depth=3)) if self.original_addr is not None else '' 431 ) 432 433 def __reduce__(self): 434 return (SimSegfaultException, (self.addr, self.reason, self.original_addr)) 435 436SimSegfaultError = SimSegfaultException 437 438class SimZeroDivisionException(SimException, SimOperationError): 439 pass 440 441 442class AngrNoPluginError(AngrError): 443 pass 444 445# 446# Concrete Targets Execution errors 447# 448 449 450class SimConcreteMemoryError(AngrError): 451 pass 452 453 454class SimConcreteRegisterError(AngrError): 455 pass 456 457 458class SimConcreteBreakpointError(AngrError): 459 pass 460 461# 462# Decompiler errors 463# 464 465class UnsupportedNodeTypeError(AngrError, NotImplementedError): 466 pass 467