From bcb6c1e89995248f46bad12a08a329e505072cdb Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Thu, 16 Sep 2021 10:50:57 -0400 Subject: fix get_semantic_flag_class_index --- python/architecture.py | 15 ++++++--------- python/lowlevelil.py | 5 +---- 2 files changed, 7 insertions(+), 13 deletions(-) (limited to 'python') diff --git a/python/architecture.py b/python/architecture.py index 2dbbc5e1..db0c2a77 100644 --- a/python/architecture.py +++ b/python/architecture.py @@ -1472,7 +1472,9 @@ class Architecture(metaclass=_ArchitectureMetaClass): return FlagIndex(flag) raise Exception("flag is not convertable to index") - def get_semantic_flag_class_index(self, sem_class:SemanticClassType) -> SemanticClassIndex: + def get_semantic_flag_class_index(self, sem_class:Optional[SemanticClassType]) -> SemanticClassIndex: + if sem_class is None: + return SemanticClassIndex(0) if isinstance(sem_class, str): return self._semantic_flag_classes[SemanticClassName(sem_class)] elif isinstance(sem_class, lowlevelil.ILSemanticFlagClass): @@ -1668,8 +1670,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): :rtype: ExpressionIndex """ _class_index = None - if sem_class is not None: - _class_index = self.get_semantic_flag_class_index(sem_class) + _class_index = self.get_semantic_flag_class_index(sem_class) return lowlevelil.ExpressionIndex(core.BNGetDefaultArchitectureFlagConditionLowLevelIL(self.handle, cond, _class_index, il.handle)) @@ -2606,16 +2607,12 @@ class CoreArchitecture(Architecture): :rtype: FlagRole """ flag = self.get_flag_index(flag) - _sem_class = None - if sem_class is not None: - _sem_class = self.get_semantic_flag_class_index(sem_class) + _sem_class = self.get_semantic_flag_class_index(sem_class) return FlagRole(core.BNGetArchitectureFlagRole(self.handle, flag, _sem_class)) def get_flags_required_for_flag_condition(self, cond:LowLevelILFlagCondition, sem_class:Optional[SemanticClassType]=None) -> List[FlagName]: - _sem_class = None - if sem_class is not None: - _sem_class = self.get_semantic_flag_class_index(sem_class) + _sem_class = self.get_semantic_flag_class_index(sem_class) count = ctypes.c_ulonglong() flags = core.BNGetArchitectureFlagsRequiredForFlagCondition(self.handle, cond, _sem_class, count) assert flags is not None, "core.BNGetArchitectureFlagsRequiredForFlagCondition returned None" diff --git a/python/lowlevelil.py b/python/lowlevelil.py index 7d2585a9..c80cc5a2 100644 --- a/python/lowlevelil.py +++ b/python/lowlevelil.py @@ -3865,10 +3865,7 @@ class LowLevelILFunction: cond = LowLevelILFlagCondition[cond] elif isinstance(cond, LowLevelILFlagCondition): cond = cond.value - class_index = architecture.SemanticClassIndex(0) - if sem_class is not None: - class_index = self.arch.get_semantic_flag_class_index(sem_class) - assert isinstance(class_index, int) + class_index = self.arch.get_semantic_flag_class_index(sem_class) return self.expr(LowLevelILOperation.LLIL_FLAG_COND, cond, architecture.SemanticClassIndex(class_index)) def flag_group(self, sem_group) -> ExpressionIndex: -- cgit v1.3.1