fix some bugs that may cause segment fault or crash #17
+274
−152
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
pdg::TreeNode::TreeNode(const TreeNode &tree_node)
, but its _parent_node field remains uninitialized. While inexpandNode()
, new_child_node will callcomputeDerivedAddrVarsFromParent()
, in which may access root_node's parent_node throughgetParentNode()
, while root_node's parent_node is still uninitialized, if its value is illegal, when use it as pointer, such asgrand_parent_node->getAddrVars()
, there will be a segment fault.pdg::ProgramDependencyGraph::connectInterprocDependencies
, for indirect calls, the number of nodes for caller's ret_actual_in_tree and callee's ret_formal_in_tree may unequal, which will causeassert(src->numOfChild() == dst->numOfChild());
inpdg::ProgramDependencyGraph::connectInTrees
failed, so for each indirectCallCandidate, check the number of tree nodes before callconnectCallerAndCallee
, only when callee's nodes equals to caller's nodes, callee can be indeed indirectCallCandidate