diff options
| author | KyleMiles <krm504@nyu.edu> | 2021-11-01 23:17:40 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2021-11-11 16:16:37 -0500 |
| commit | 2c75c418ea472fca237df5b8f80e47c9cbe35467 (patch) | |
| tree | 57b1967f3105246c2b027cb5294cd9813937e543 /function.cpp | |
| parent | 53640fb603ef58baf02bb43746046f9f62603f30 (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.cpp | 44 |
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; |
