io.joern.x2cpg.passes.callgraph
Members list
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.
Attributes
- Companion
- object
- Supertypes
-
class CpgPassclass ForkJoinParallelCpgPass[AnyRef]class NewStyleCpgPassBase[AnyRef]trait CpgPassBaseclass Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- class
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
DynamicCallLinker.type
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.
Attributes
- Supertypes
-
trait LinkingUtilclass CpgPassclass ForkJoinParallelCpgPass[AnyRef]class NewStyleCpgPassBase[AnyRef]trait CpgPassBaseclass Objecttrait Matchableclass AnyShow all
Link remaining unlinked calls to methods only by their name (not full name)
Link remaining unlinked calls to methods only by their name (not full name)
Value parameters
- cpg
-
the target code property graph.
Attributes
- Supertypes
-
class CpgPassclass ForkJoinParallelCpgPass[AnyRef]class NewStyleCpgPassBase[AnyRef]trait CpgPassBaseclass Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait LinkingUtilclass ForkJoinParallelCpgPass[Seq[Call]]class NewStyleCpgPassBase[Seq[Call]]trait CpgPassBaseclass Objecttrait Matchableclass AnyShow all