From 0b581b00eeac232dc89a9b2e64d537f08ddd7a83 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Wed, 29 Sep 2021 15:32:29 -0400 Subject: Fix 'get_function_at' API for multi-arch binaries. --- python/binaryview.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'python/binaryview.py') diff --git a/python/binaryview.py b/python/binaryview.py index c5f8b500..1cf3a62d 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -3506,13 +3506,18 @@ class BinaryView: >>> """ if plat is None: - plat = self.platform - if plat is None: - return None - func = core.BNGetAnalysisFunction(self.handle, plat.handle, addr) - if func is None: - return None - return _function.Function(self, func) + funcs = self.get_functions_at(addr) + if not funcs: + return None + result = [func for func in funcs if (func.platform == self.platform)] + if not result: + result = funcs + return result[0] + else: + func = core.BNGetAnalysisFunction(self.handle, plat.handle, addr) + if func is None: + return None + return _function.Function(self, func) def get_functions_at(self, addr:int) -> List['_function.Function']: """ -- cgit v1.3.1