summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorChinmay <chinmay1dd@gmail.com>2020-08-17 22:53:09 -0700
committerChinmay Deshpande <chinmay1dd@gmail.com>2020-09-08 09:29:18 -0700
commit73b649e79d5cd219cb56866abf2ee5e6a64d976a (patch)
tree07bbd8c4e5f8b6d743760a3e226a975cc83c2c15 /function.cpp
parent62aa529de8a169578c80b14e3969b076f65be205 (diff)
UI changes for user-informed dataflow
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/function.cpp b/function.cpp
index ecb81a67..168decc2 100644
--- a/function.cpp
+++ b/function.cpp
@@ -1773,17 +1773,18 @@ Ref<FlowGraph> Function::GetUnresolvedStackAdjustmentGraph()
void Function::SetUserVariableValue(const Variable& var, uint64_t defAddr, PossibleValueSet& value)
{
- auto mlil = GetMediumLevelIL();
- auto varDefs = mlil->GetVariableDefinitions(var);
+ Ref<MediumLevelILFunction> mlil = GetMediumLevelIL();
+ const set<size_t>& varDefs = mlil->GetVariableDefinitions(var);
if (varDefs.size() == 0)
{
LogError("Could not get definition for Variable");
return;
}
bool found = false;
- for (const auto& site : varDefs)
+ for (auto& site : varDefs)
{
- if (site == defAddr)
+ const MediumLevelILInstruction& instr = mlil->GetInstruction(site);
+ if (instr.address == defAddr)
{
found = true;
break;
@@ -1810,16 +1811,18 @@ void Function::SetUserVariableValue(const Variable& var, uint64_t defAddr, Possi
void Function::ClearUserVariableValue(const Variable& var, uint64_t defAddr)
{
- auto mlil = GetMediumLevelIL();
- auto varDefs = mlil->GetVariableDefinitions(var);
+ Ref<MediumLevelILFunction> mlil = GetMediumLevelIL();
+ const set<size_t>& varDefs = mlil->GetVariableDefinitions(var);
if (varDefs.size() == 0)
{
LogError("Could not get definition for Variable");
+ return;
}
bool found = false;
- for (auto site : varDefs)
+ for (auto& site : varDefs)
{
- if (site == defAddr)
+ const MediumLevelILInstruction& instr = mlil->GetInstruction(site);
+ if (instr.address == defAddr)
{
found = true;
break;