io.joern.x2cpg.passes.callgraph
Type members
Classlikes
We compute the set of possible call-targets for each dynamic call, and add them as CALL edges to the graph, based on call.methodFullName, method.name and method.signature, the inheritance hierarchy and the AST of typedecls and methods.
We compute the set of possible call-targets for each dynamic call, and add them as CALL edges to the graph, based on call.methodFullName, method.name and method.signature, the inheritance hierarchy and the AST of typedecls and methods.
This pass intentionally ignores the vtable mechanism based on BINDING nodes but does check for an existing call edge before adding one. It assumes non-circular inheritance, on pain of endless recursion / stack overflow.
Based on the algorithm by Jang, Dongseok & Tatlock, Zachary & Lerner, Sorin. (2014). SAFEDISPATCH: Securing C++ Virtual Calls from Memory Corruption Attacks. 10.14722/ndss.2014.23287.
- Companion:
- object
This pass has MethodStubCreator and TypeDeclStubCreator as prerequisite for language frontends which do not provide method stubs and type decl stubs.
This pass has MethodStubCreator and TypeDeclStubCreator as prerequisite for language frontends which do not provide method stubs and type decl stubs.
- Companion:
- object