diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2016-01-31 02:38:32 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2016-01-31 02:38:32 -0500 |
| commit | a48ce3f4aa1266d5b8619cf320a703ba4f697854 (patch) | |
| tree | b8312cccc35b75b51e0b0e99519460c3e9c2240c /plugin.cpp | |
| parent | bbb74ee011e2b482e1895a513203c11affbac229 (diff) | |
Refactor API to fix design bug that causes use-after-free on many plugin objects
Diffstat (limited to 'plugin.cpp')
| -rw-r--r-- | plugin.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
@@ -210,24 +210,23 @@ bool PluginCommand::IsValid(const PluginCommandContext& ctxt) const case DefaultPluginCommand: if (!m_command.defaultIsValid) return true; - return m_command.defaultIsValid(m_command.context, ctxt.view->GetViewObject()); + return m_command.defaultIsValid(m_command.context, ctxt.view->GetObject()); case AddressPluginCommand: if (!m_command.addressIsValid) return true; - return m_command.addressIsValid(m_command.context, ctxt.view->GetViewObject(), ctxt.address); + return m_command.addressIsValid(m_command.context, ctxt.view->GetObject(), ctxt.address); case RangePluginCommand: if (ctxt.length == 0) return false; if (!m_command.rangeIsValid) return true; - return m_command.rangeIsValid(m_command.context, ctxt.view->GetViewObject(), ctxt.address, ctxt.length); + return m_command.rangeIsValid(m_command.context, ctxt.view->GetObject(), ctxt.address, ctxt.length); case FunctionPluginCommand: if (!ctxt.function) return false; if (!m_command.functionIsValid) return true; - return m_command.functionIsValid(m_command.context, ctxt.view->GetViewObject(), - ctxt.function->GetFunctionObject()); + return m_command.functionIsValid(m_command.context, ctxt.view->GetObject(), ctxt.function->GetObject()); default: return false; } @@ -242,16 +241,16 @@ void PluginCommand::Execute(const PluginCommandContext& ctxt) const switch (m_command.type) { case DefaultPluginCommand: - m_command.defaultCommand(m_command.context, ctxt.view->GetViewObject()); + m_command.defaultCommand(m_command.context, ctxt.view->GetObject()); break; case AddressPluginCommand: - m_command.addressCommand(m_command.context, ctxt.view->GetViewObject(), ctxt.address); + m_command.addressCommand(m_command.context, ctxt.view->GetObject(), ctxt.address); break; case RangePluginCommand: - m_command.rangeCommand(m_command.context, ctxt.view->GetViewObject(), ctxt.address, ctxt.length); + m_command.rangeCommand(m_command.context, ctxt.view->GetObject(), ctxt.address, ctxt.length); break; case FunctionPluginCommand: - m_command.functionCommand(m_command.context, ctxt.view->GetViewObject(), ctxt.function->GetFunctionObject()); + m_command.functionCommand(m_command.context, ctxt.view->GetObject(), ctxt.function->GetObject()); break; default: break; |
