io.joern.x2cpg.passes.callgraph

Members list

Type members

Classlikes

class DynamicCallLinker(cpg: Cpg) extends CpgPass

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 CpgPass
class ForkJoinParallelCpgPass[AnyRef]
class NewStyleCpgPassBase[AnyRef]
trait CpgPassBase
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
class MethodRefLinker(cpg: Cpg) extends CpgPass, LinkingUtil

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 LinkingUtil
class CpgPass
class ForkJoinParallelCpgPass[AnyRef]
class NewStyleCpgPassBase[AnyRef]
trait CpgPassBase
class Object
trait Matchable
class Any
Show all
class NaiveCallLinker(cpg: Cpg) extends CpgPass

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 CpgPass
class ForkJoinParallelCpgPass[AnyRef]
class NewStyleCpgPassBase[AnyRef]
trait CpgPassBase
class Object
trait Matchable
class Any
Show all
class StaticCallLinker(cpg: Cpg) extends ForkJoinParallelCpgPass[Seq[Call]], LinkingUtil

Attributes

Supertypes
trait LinkingUtil
class ForkJoinParallelCpgPass[Seq[Call]]
class NewStyleCpgPassBase[Seq[Call]]
trait CpgPassBase
class Object
trait Matchable
class Any
Show all