summaryrefslogtreecommitdiff
path: root/flowgraph.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2019-05-10 16:15:48 -0400
committerRusty Wagner <rusty@vector35.com>2019-05-10 16:15:48 -0400
commitf6659517c08799cf52fddd09424eaea867ff3ed7 (patch)
treeab06cf065b7c152dff91658c7247946cb7ffaec8 /flowgraph.cpp
parent63a4020845a81cf8793ddb02c7d5c95e3317d2a1 (diff)
Fix memory leak and use after free bugs in BinaryView and FlowGraph objects
Diffstat (limited to 'flowgraph.cpp')
-rw-r--r--flowgraph.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/flowgraph.cpp b/flowgraph.cpp
index 3de9c90e..9e3466c8 100644
--- a/flowgraph.cpp
+++ b/flowgraph.cpp
@@ -76,6 +76,11 @@ FlowGraph::FlowGraph()
callbacks.prepareForLayout = PrepareForLayoutCallback;
callbacks.populateNodes = PopulateNodesCallback;
callbacks.completeLayout = CompleteLayoutCallback;
+ callbacks.update = UpdateCallback;
+ callbacks.freeObject = FreeObjectCallback;
+ callbacks.externalRefTaken = nullptr;
+ callbacks.externalRefReleased = nullptr;
+ AddRefForRegistration();
m_object = BNCreateCustomFlowGraph(&callbacks);
}
@@ -117,6 +122,13 @@ BNFlowGraph* FlowGraph::UpdateCallback(void* ctxt)
}
+void FlowGraph::FreeObjectCallback(void* ctxt)
+{
+ FlowGraph* graph = (FlowGraph*)ctxt;
+ graph->ReleaseForRegistration();
+}
+
+
void FlowGraph::FinishPrepareForLayout()
{
BNFinishPrepareForLayout(m_object);