summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-09-16 10:50:57 -0400
committerPeter LaFosse <peter@vector35.com>2021-09-16 10:50:57 -0400
commitbcb6c1e89995248f46bad12a08a329e505072cdb (patch)
treeebfc9b6ab78989b7ebe34166009cf5669ccb80bd /python
parenta0a7b91801f087f2dc4e808b3061df4a2f6fc3fe (diff)
fix get_semantic_flag_class_index
Diffstat (limited to 'python')
-rw-r--r--python/architecture.py15
-rw-r--r--python/lowlevelil.py5
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: