summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-10-06 10:40:54 -0400
committerPeter LaFosse <peter@vector35.com>2021-10-07 09:34:39 -0400
commitaf271c2ee7893cadb31a80715f1b35898b09b40c (patch)
treedf3029ee827004edde42990f924d0bafb1e2b0bb /python/binaryview.py
parenta396e114c14c5c1cf9fa12688fdbdafe2f07b61b (diff)
Make define_user_data_var return the created DataVariable
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index fe525bec..5104c4f2 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -3438,21 +3438,23 @@ class BinaryView:
name = _types.Symbol(SymbolType.DataSymbol, addr, name)
self.define_auto_symbol(name)
- def define_user_data_var(self, addr:int, var_type:StringOrType, name:Optional[Union[str, '_types.CoreSymbol']]=None) -> None:
+ def define_user_data_var(self, addr:int, var_type:StringOrType, name:Optional[Union[str, '_types.CoreSymbol']]=None) -> Optional['DataVariable']:
"""
``define_user_data_var`` defines a user data variable ``var_type`` at the virtual address ``addr``.
:param int addr: virtual address to define the given data variable
:param binaryninja.Type var_type: type to be defined at the given virtual address
:param Optional[Union[str, _types.CoreSymbol]] name: Optionally, additionally define a symbol at this same address
- :rtype: None
+ :rtype: Optional[DataVariable]
:Example:
>>> t = bv.parse_type_string("int foo")
>>> t
(<type: int32_t>, 'foo')
>>> bv.define_user_data_var(bv.entry_point, t[0])
+ <var 0x2394c: int32_t>
>>> bv.define_user_data_var(bv.entry_point + 4, "int", "foo")
+ <var 0x23950: int32_t>
>>> bv.get_symbol_at(bv.entry_point + 4)
<DataSymbol: "foo" @ 0x23950>
>>> bv.get_data_var_at(bv.entry_point + 4)
@@ -3469,6 +3471,8 @@ class BinaryView:
name = _types.Symbol(SymbolType.DataSymbol, addr, name)
self.define_user_symbol(name)
+ return self.get_data_var_at(addr)
+
def undefine_data_var(self, addr:int) -> None:
"""
``undefine_data_var`` removes the non-user data variable at the virtual address ``addr``.
@@ -7935,7 +7939,6 @@ class StructuredDataView(object):
return rv
-
@dataclass
class TypedDataReader:
type:'_types.Type'