diff options
| author | Xusheng <xusheng@vector35.com> | 2021-04-19 17:04:24 +0800 |
|---|---|---|
| committer | Xusheng <xusheng@vector35.com> | 2021-05-04 14:04:39 +0800 |
| commit | ad71a51fef925779f5ae30b597efb9979607b693 (patch) | |
| tree | 5f5275f7dc9501c1c3ac824a67d497fc7f39f8fa /python/binaryview.py | |
| parent | 1e2bb984e2fe601b78a4afff3c9097f8f181f9c9 (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.py | 26 |
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. |
