From ad71a51fef925779f5ae30b597efb9979607b693 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 19 Apr 2021 17:04:24 +0800 Subject: render non-member access to type on a new line add Python API for retrieving all type fields referenced by code change m_updatesRequired to std::atomic_bool fix potential UAF after calling AnalysisCompletionEvent::Cancel() --- python/binaryview.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'python') diff --git a/python/binaryview.py b/python/binaryview.py index 43f2e9db..5adbff87 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -3705,6 +3705,32 @@ class BinaryView(object): core.BNRemoveUserDataReference(self.handle, from_addr, to_addr) + def get_all_type_fields_referenced_by_code(self, name): + """ + ``get_all_type_fields_referenced_by_code`` returns a list of offsets in the QualifiedName + specified by name, which are referenced by code. + + :param QualifiedName name: name of type to query for references + :return: List of offsets + :rtype: list(integer) + :Example: + + >>> bv.get_all_type_fields_referenced_by_code('A') + ['', ''] + >>> + + """ + count = ctypes.c_ulonglong(0) + name = types.QualifiedName(name)._get_core_struct() + refs = core.BNGetAllFieldsReferencedByCode(self.handle, name, count) + + result = [] + for i in range(0, count.value): + result.append(refs[i]) + + core.BNFreeDataReferences(refs, count.value) + return result + def get_callers(self, addr): """ ``get_callers`` returns a list of ReferenceSource objects (xrefs or cross-references) that call the provided virtual address. -- cgit v1.3.1