From c0fb84321d4e2fcb9e8de02c6b0faaf9d8365f37 Mon Sep 17 00:00:00 2001 From: Alex Cameron Date: Wed, 15 Sep 2021 11:02:48 +1000 Subject: Use new types outside of `isinstance` checks to satisfy PyRight --- python/architecture.py | 18 +++++++++--------- python/lowlevelil.py | 12 ++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'python') diff --git a/python/architecture.py b/python/architecture.py index 88ca8819..539e62af 100644 --- a/python/architecture.py +++ b/python/architecture.py @@ -1442,7 +1442,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): elif isinstance(reg, lowlevelil.ILRegister): return reg.index elif isinstance(reg, int): - return reg + return RegisterIndex(reg) raise Exception("Attempting to get register index of non-existant register") def get_reg_stack_index(self, reg_stack:RegisterStackType) -> RegisterStackIndex: @@ -1453,7 +1453,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): elif isinstance(reg_stack, lowlevelil.ILRegisterStack): return reg_stack.index elif isinstance(reg_stack, int): - return reg_stack + return RegisterStackIndex(reg_stack) raise Exception("reg_stack is not convertable to index") def get_flag_index(self, flag:FlagType) -> FlagIndex: @@ -1462,16 +1462,16 @@ class Architecture(metaclass=_ArchitectureMetaClass): elif isinstance(flag, lowlevelil.ILFlag): return flag.index elif isinstance(flag, int): - return flag + return FlagIndex(flag) raise Exception("flag is not convertable to index") def get_semantic_flag_class_index(self, sem_class:SemanticClassType) -> SemanticClassIndex: if isinstance(sem_class, str): - return self._semantic_flag_classes[sem_class] + return self._semantic_flag_classes[SemanticClassName(sem_class)] elif isinstance(sem_class, lowlevelil.ILSemanticFlagClass): return sem_class.index elif isinstance(sem_class, int): - return sem_class + return SemanticClassIndex(sem_class) raise Exception("sem_class is not convertable to index") def get_semantic_flag_class_name(self, class_index:SemanticClassIndex) -> SemanticClassName: @@ -1530,11 +1530,11 @@ class Architecture(metaclass=_ArchitectureMetaClass): :rtype: IntrinsicIndex """ if isinstance(intrinsic, str): - return self._intrinsics[intrinsic] + return self._intrinsics[IntrinsicName(intrinsic)] elif isinstance(intrinsic, lowlevelil.ILIntrinsic): return intrinsic.index elif isinstance(intrinsic, int): - return intrinsic + return IntrinsicIndex(intrinsic) raise Exception("intrinsic is not convertable to index") def get_flag_write_type_name(self, write_type:FlagWriteTypeIndex) -> FlagWriteTypeName: @@ -1632,7 +1632,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): operand = operands[i] if isinstance(operand, str): operand_list[i].constant = False - operand_list[i].reg = self.regs[operand].index + operand_list[i].reg = self.regs[RegisterName(operand)].index elif isinstance(operand, lowlevelil.ILRegister): operand_list[i].constant = False operand_list[i].reg = operand.index @@ -2330,7 +2330,7 @@ class CoreArchitecture(Architecture): operand = operands[i] if isinstance(operand, str): operand_list[i].constant = False - operand_list[i].reg = self.regs[operand].index + operand_list[i].reg = self.regs[RegisterName(operand)].index elif isinstance(operand, lowlevelil.ILRegister): operand_list[i].constant = False operand_list[i].reg = operand.index diff --git a/python/lowlevelil.py b/python/lowlevelil.py index f9d70196..7a0c0a18 100644 --- a/python/lowlevelil.py +++ b/python/lowlevelil.py @@ -98,7 +98,7 @@ class ILRegister: def __eq__(self, other): if isinstance(other, str) and other in self.arch.regs: - index = self.arch.regs[other].index + index = self.arch.regs[architecture.RegisterName(other)].index assert index is not None other = ILRegister(self.arch, index) elif not isinstance(other, self.__class__): @@ -3046,7 +3046,7 @@ class LowLevelILFunction: elif isinstance(operation, LowLevelILOperation): operation = operation.value if isinstance(flags, str): - _flags = self.arch.get_flag_write_type_by_name(flags) + _flags = self.arch.get_flag_write_type_by_name(architecture.FlagWriteTypeName(flags)) elif isinstance(flags, ILFlag): _flags = flags.index elif flags is None: @@ -3068,12 +3068,12 @@ class LowLevelILFunction: if isinstance(original, LowLevelILInstruction): original = original.expr_index elif isinstance(original, int): - original = original + original = ExpressionIndex(original) if isinstance(new, LowLevelILInstruction): new = new.expr_index elif isinstance(new, int): - new = new + new = ExpressionIndex(new) core.BNReplaceLowLevelILExpr(self.handle, original, new) @@ -3869,7 +3869,7 @@ class LowLevelILFunction: if sem_class is not None: class_index = self.arch.get_semantic_flag_class_index(sem_class) assert isinstance(class_index, int) - return self.expr(LowLevelILOperation.LLIL_FLAG_COND, cond, class_index) + return self.expr(LowLevelILOperation.LLIL_FLAG_COND, cond, architecture.SemanticClassIndex(class_index)) def flag_group(self, sem_group) -> ExpressionIndex: """ @@ -4431,7 +4431,7 @@ class LowLevelILFunction: for i in range(len(operands)): op = operands[i] if isinstance(op, int): - operand_list[i] = op + operand_list[i] = ExpressionIndex(op) else: raise Exception("Invalid operand type") return ExpressionIndex(core.BNLowLevelILAddOperandList(self.handle, operand_list, len(operands))) -- cgit v1.3.1