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 /functiongraphblock.cpp | |
| parent | bbb74ee011e2b482e1895a513203c11affbac229 (diff) | |
Refactor API to fix design bug that causes use-after-free on many plugin objects
Diffstat (limited to 'functiongraphblock.cpp')
| -rw-r--r-- | functiongraphblock.cpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/functiongraphblock.cpp b/functiongraphblock.cpp index d598c4a1..58a384ab 100644 --- a/functiongraphblock.cpp +++ b/functiongraphblock.cpp @@ -4,63 +4,58 @@ using namespace BinaryNinja; using namespace std; -FunctionGraphBlock::FunctionGraphBlock(BNFunctionGraphBlock* block): m_block(block) +FunctionGraphBlock::FunctionGraphBlock(BNFunctionGraphBlock* block) { -} - - -FunctionGraphBlock::~FunctionGraphBlock() -{ - BNFreeFunctionGraphBlock(m_block); + m_object = block; } Ref<Architecture> FunctionGraphBlock::GetArchitecture() const { - return new CoreArchitecture(BNGetFunctionGraphBlockArchitecture(m_block)); + return new CoreArchitecture(BNGetFunctionGraphBlockArchitecture(m_object)); } uint64_t FunctionGraphBlock::GetStart() const { - return BNGetFunctionGraphBlockStart(m_block); + return BNGetFunctionGraphBlockStart(m_object); } uint64_t FunctionGraphBlock::GetEnd() const { - return BNGetFunctionGraphBlockEnd(m_block); + return BNGetFunctionGraphBlockEnd(m_object); } int FunctionGraphBlock::GetX() const { - return BNGetFunctionGraphBlockX(m_block); + return BNGetFunctionGraphBlockX(m_object); } int FunctionGraphBlock::GetY() const { - return BNGetFunctionGraphBlockY(m_block); + return BNGetFunctionGraphBlockY(m_object); } int FunctionGraphBlock::GetWidth() const { - return BNGetFunctionGraphBlockWidth(m_block); + return BNGetFunctionGraphBlockWidth(m_object); } int FunctionGraphBlock::GetHeight() const { - return BNGetFunctionGraphBlockHeight(m_block); + return BNGetFunctionGraphBlockHeight(m_object); } vector<FunctionGraphTextLine> FunctionGraphBlock::GetLines() const { size_t count; - BNFunctionGraphTextLine* lines = BNGetFunctionGraphBlockLines(m_block, &count); + BNFunctionGraphTextLine* lines = BNGetFunctionGraphBlockLines(m_object, &count); vector<FunctionGraphTextLine> result; for (size_t i = 0; i < count; i++) @@ -86,7 +81,7 @@ vector<FunctionGraphTextLine> FunctionGraphBlock::GetLines() const vector<FunctionGraphEdge> FunctionGraphBlock::GetOutgoingEdges() const { size_t count; - BNFunctionGraphEdge* edges = BNGetFunctionGraphBlockOutgoingEdges(m_block, &count); + BNFunctionGraphEdge* edges = BNGetFunctionGraphBlockOutgoingEdges(m_object, &count); vector<FunctionGraphEdge> result; for (size_t i = 0; i < count; i++) |
