summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2021-04-19 17:04:24 +0800
committerXusheng <xusheng@vector35.com>2021-05-04 14:04:39 +0800
commitad71a51fef925779f5ae30b597efb9979607b693 (patch)
tree5f5275f7dc9501c1c3ac824a67d497fc7f39f8fa /python/binaryview.py
parent1e2bb984e2fe601b78a4afff3c9097f8f181f9c9 (diff)
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()
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py26
1 files changed, 26 insertions, 0 deletions
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')
+ ['<type D, offset 0x8, direct>', '<type C, offset 0x10, indirect>']
+ >>>
+
+ """
+ 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.