diff options
| author | Peter LaFosse <peter@vector35.com> | 2021-09-16 10:50:57 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2021-09-16 10:50:57 -0400 |
| commit | bcb6c1e89995248f46bad12a08a329e505072cdb (patch) | |
| tree | ebfc9b6ab78989b7ebe34166009cf5669ccb80bd /python | |
| parent | a0a7b91801f087f2dc4e808b3061df4a2f6fc3fe (diff) | |
fix get_semantic_flag_class_index
Diffstat (limited to 'python')
| -rw-r--r-- | python/architecture.py | 15 | ||||
| -rw-r--r-- | python/lowlevelil.py | 5 |
2 files changed, 7 insertions, 13 deletions
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: |
