qtil
advanced-security/qtil-ruby 0.0.2
Search

Module DataFlowImpl

Provides an implementation of global (interprocedural) data flow. This file re-exports the local (intraprocedural) data flow analysis from DataFlowImplSpecific::Public and adds a global analysis, mainly exposed through the Configuration class. This file exists in several identical copies, allowing queries to use multiple Configuration classes that depend on each other without introducing mutual recursion among those configurations.

Import path

import codeql.ruby.dataflow.internal.DataFlowImpl

Imports

Predicates

flowsTo

Holds if data can flow (inter-procedurally) from source to sink.

stageStats

INTERNAL: Only for debugging.

Classes

Ap

Conceptually a list of TypedContents followed by a DataFlowType, but only the first two elements of the list and its length are tracked. If data flows from a source to a given node with a given AccessPathApprox, this indicates the sequence of dereference operations needed to get from the value in the node to the tracked object. The final type indicates the type of the tracked object.

ApNil
ApOption
Configuration

A configuration of interprocedural data flow analysis. This defines sources, sinks, and any other configurable aspect of the analysis. Each use of the global data flow library must define its own unique extension of this abstract class. To create a configuration, extend this class with a subclass whose characteristic predicate is a unique singleton string. For example, write

PathNode

A Node augmented with a call context (except for sinks), an access path, and a configuration. Only those PathNodes that are reachable from a source, and which can reach a sink, are generated.

Modules

PathGraph

Provides the query predicates needed to include a graph in a path-problem query.