summaryrefslogtreecommitdiff
path: root/python/function.py
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-06-03 13:42:04 -0600
committerRusty Wagner <rusty.wagner@gmail.com>2025-06-03 13:42:54 -0600
commit9c8d4eac3dadf6273b34ba193c219de9283285b3 (patch)
treed2df35ae70c77ef83dd320a29f97baa738a956d6 /python/function.py
parent37d52c95d94b8a586c5d59fb500a7b35f3e272dc (diff)
Add UI action and API to control early returns in HLIL
Diffstat (limited to 'python/function.py')
-rw-r--r--python/function.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/python/function.py b/python/function.py
index ae3af65b..afd9d5b7 100644
--- a/python/function.py
+++ b/python/function.py
@@ -29,7 +29,7 @@ from . import _binaryninjacore as core
from .enums import (
AnalysisSkipReason, FunctionGraphType, SymbolType, InstructionTextTokenType, HighlightStandardColor,
HighlightColorStyle, DisassemblyOption, IntegerDisplayType, FunctionAnalysisSkipOverride, FunctionUpdateType,
- BuiltinType, ExprFolding
+ BuiltinType, ExprFolding, EarlyReturn
)
from . import associateddatastore # Required in the main scope due to being an argument for _FunctionAssociatedDataStore
@@ -3476,6 +3476,16 @@ class Function:
addr = addr.address
core.BNSetConditionInverted(self.handle, addr, invert)
+ def get_early_return(self, addr: Union[int, highlevelil.HighLevelILInstruction]) -> EarlyReturn:
+ if isinstance(addr, highlevelil.HighLevelILInstruction):
+ addr = addr.address
+ return EarlyReturn(core.BNGetEarlyReturn(self.handle, addr))
+
+ def set_early_return(self, addr: Union[int, highlevelil.HighLevelILInstruction], value: EarlyReturn):
+ if isinstance(addr, highlevelil.HighLevelILInstruction):
+ addr = addr.address
+ core.BNSetEarlyReturn(self.handle, addr, value)
+
class AdvancedFunctionAnalysisDataRequestor:
def __init__(self, func: Optional['Function'] = None):