summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2021-01-14 17:56:04 +0800
committerXusheng <xusheng@vector35.com>2021-01-18 10:38:26 +0800
commit2dd9e2408b9fdadea180a07f6df82eaa18ba07a6 (patch)
treefac902fe1a0b8acc807a209363c4b1e7d091dd57
parentb47c5a64e466d2322a7072a3fd1d11aff5cfab43 (diff)
expose Function::IsVariableUserDefinded()
-rw-r--r--binaryninjaapi.h1
-rw-r--r--binaryninjacore.h1
-rw-r--r--function.cpp6
-rw-r--r--python/function.py7
4 files changed, 15 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 5b3307a4..2d8c1e5f 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -3124,6 +3124,7 @@ __attribute__ ((format (printf, 1, 2)))
bool ignoreDisjointUses = false);
void DeleteAutoVariable(const Variable& var);
void DeleteUserVariable(const Variable& var);
+ bool IsVariableUserDefinded(const Variable& var);
Confidence<Ref<Type>> GetVariableType(const Variable& var);
std::string GetVariableName(const Variable& var);
diff --git a/binaryninjacore.h b/binaryninjacore.h
index e90c4294..04dadf58 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -3278,6 +3278,7 @@ __attribute__ ((format (printf, 1, 2)))
const char* name, bool ignoreDisjointUses);
BINARYNINJACOREAPI void BNDeleteAutoVariable(BNFunction* func, const BNVariable* var);
BINARYNINJACOREAPI void BNDeleteUserVariable(BNFunction* func, const BNVariable* var);
+ BINARYNINJACOREAPI bool BNIsVariableUserDefined(BNFunction* func, const BNVariable* var);
BINARYNINJACOREAPI BNTypeWithConfidence BNGetVariableType(BNFunction* func, const BNVariable* var);
BINARYNINJACOREAPI char* BNGetVariableName(BNFunction* func, const BNVariable* var);
BINARYNINJACOREAPI uint64_t BNToVariableIdentifier(const BNVariable* var);
diff --git a/function.cpp b/function.cpp
index d7345248..ed50b4df 100644
--- a/function.cpp
+++ b/function.cpp
@@ -1082,6 +1082,12 @@ void Function::DeleteUserVariable(const Variable& var)
}
+bool Function::IsVariableUserDefinded(const Variable& var)
+{
+ return BNIsVariableUserDefined(m_object, &var);
+}
+
+
Confidence<Ref<Type>> Function::GetVariableType(const Variable& var)
{
BNTypeWithConfidence type = BNGetVariableType(m_object, &var);
diff --git a/python/function.py b/python/function.py
index 13d73435..a1f9163c 100644
--- a/python/function.py
+++ b/python/function.py
@@ -2607,6 +2607,13 @@ class Function(object):
var_data.storage = var.storage
core.BNDeleteUserVariable(self.handle, var_data)
+ def is_var_user_defined(self, var):
+ var_data = core.BNVariable()
+ var_data.type = var.source_type
+ var_data.index = var.index
+ var_data.storage = var.storage
+ return core.BNIsVariableUserDefined(self.handle, var_data)
+
def get_stack_var_at_frame_offset(self, offset, addr, arch=None):
if arch is None:
arch = self.arch