summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2021-05-03 22:33:48 -0400
committerKyleMiles <krm504@nyu.edu>2021-05-03 22:33:48 -0400
commit677a2c3461d3c95b012367c07640987d608dc382 (patch)
tree4052961c26a8b36f1775c4214a0d470d121bba46
parent49d128abb779c91f634fb4ffad1275dc39a29992 (diff)
BinaryView.create_user_function() now returns the created function
Resolves #1318
-rw-r--r--binaryninjacore.h2
-rw-r--r--python/binaryview.py16
2 files changed, 9 insertions, 9 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index efea4444..0eabe6b1 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -3141,7 +3141,7 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI void BNAddFunctionForAnalysis(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
BINARYNINJACOREAPI void BNAddEntryPointForAnalysis(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
BINARYNINJACOREAPI void BNRemoveAnalysisFunction(BNBinaryView* view, BNFunction* func);
- BINARYNINJACOREAPI void BNCreateUserFunction(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
+ BINARYNINJACOREAPI BNFunction* BNCreateUserFunction(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
BINARYNINJACOREAPI void BNRemoveUserFunction(BNBinaryView* view, BNFunction* func);
BINARYNINJACOREAPI bool BNHasInitialAnalysis(BNBinaryView* view);
BINARYNINJACOREAPI void BNSetAnalysisHold(BNBinaryView* view, bool enable);
diff --git a/python/binaryview.py b/python/binaryview.py
index ca288486..43f2e9db 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -3039,7 +3039,7 @@ class BinaryView(object):
"""
if plat is None:
plat = self.platform
- core.BNCreateUserFunction(self.handle, plat.handle, addr)
+ return binaryninja.function.Function(self, core.BNCreateUserFunction(self.handle, plat.handle, addr))
def remove_user_function(self, func):
"""
@@ -5515,21 +5515,21 @@ class BinaryView(object):
graph_type):
return None
return result.value
-
+
class QueueGenerator:
def __init__(self, t, results):
self.thread = t
self.results = results
t.start()
-
+
def __iter__(self):
return self
-
+
def __next__(self):
while True:
if not self.results.empty():
return self.results.get()
-
+
if (not self.thread.is_alive()) and self.results.empty():
raise StopIteration
@@ -5672,7 +5672,7 @@ class BinaryView(object):
ctypes.POINTER(core.BNLinearDisassemblyLine))\
(lambda ctxt, addr, match, line: not match_callback(addr, match,\
self._LinearDisassemblyLine_convertor(line)) is False)
-
+
return core.BNFindAllTextWithProgress(self.handle, start, end, text,
settings.handle, flags, graph_type, None, progress_func_obj, None, match_callback_obj)
else:
@@ -5689,7 +5689,7 @@ class BinaryView(object):
return self.QueueGenerator(t, results)
- def find_all_constant(self, start, end, constant, settings = None,
+ def find_all_constant(self, start, end, constant, settings = None,
graph_type = FunctionGraphType.NormalFunctionGraph, progress_func = None,
match_callback = None):
"""
@@ -5748,7 +5748,7 @@ class BinaryView(object):
t = threading.Thread(target = lambda: core.BNFindAllConstantWithProgress(self.handle,
start, end, constant, settings.handle, graph_type, None, progress_func_obj, None,\
match_callback_obj))
-
+
return self.QueueGenerator(t, results)
def reanalyze(self):