summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2021-11-01 23:17:40 -0400
committerKyleMiles <krm504@nyu.edu>2021-11-11 16:16:37 -0500
commit2c75c418ea472fca237df5b8f80e47c9cbe35467 (patch)
tree57b1967f3105246c2b027cb5294cd9813937e543 /function.cpp
parent53640fb603ef58baf02bb43746046f9f62603f30 (diff)
Adds MediumLevelILFunction.aliased_vars, HighLevelILFunction.aliased_vars, and the respective C and C++ functions; Addressed the API side of #2662
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp44
1 files changed, 40 insertions, 4 deletions
diff --git a/function.cpp b/function.cpp
index 45061a96..20c978ac 100644
--- a/function.cpp
+++ b/function.cpp
@@ -1123,8 +1123,26 @@ set<Variable> Function::GetMediumLevelILVariables()
BNVariable* vars = BNGetMediumLevelILVariables(mlil->GetObject(), &count);
set<Variable> result;
- for (size_t i = 0; i < count; i++)
- result.insert({vars[i]});
+ for (size_t i = 0; i < count; ++i)
+ result.emplace(vars[i]);
+
+ BNFreeVariableList(vars);
+ return result;
+}
+
+
+set<Variable> Function::GetMediumLevelILAliasedVariables()
+{
+ Ref<MediumLevelILFunction> mlil = this->GetMediumLevelIL();
+ if (!mlil)
+ return {};
+
+ size_t count;
+ BNVariable* vars = BNGetMediumLevelILAliasedVariables(mlil->GetObject(), &count);
+
+ set<Variable> result;
+ for (size_t i = 0; i < count; ++i)
+ result.emplace(vars[i]);
BNFreeVariableList(vars);
return result;
@@ -1141,8 +1159,26 @@ set<Variable> Function::GetHighLevelILVariables()
BNVariable* vars = BNGetHighLevelILVariables(hlil->GetObject(), &count);
set<Variable> result;
- for (size_t i = 0; i < count; i++)
- result.insert({vars[i]});
+ for (size_t i = 0; i < count; ++i)
+ result.emplace(vars[i]);
+
+ BNFreeVariableList(vars);
+ return result;
+}
+
+
+set<Variable> Function::GetHighLevelILAliasedVariables()
+{
+ Ref<HighLevelILFunction> hlil = this->GetHighLevelIL();
+ if (!hlil)
+ return {};
+
+ size_t count;
+ BNVariable* vars = BNGetHighLevelILAliasedVariables(hlil->GetObject(), &count);
+
+ set<Variable> result;
+ for (size_t i = 0; i < count; ++i)
+ result.emplace(vars[i]);
BNFreeVariableList(vars);
return result;