-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Dataflow: Diff informed dataflow. #20386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
4ebfdd4
to
04e8ab6
Compare
04e8ab6
to
5ee86e9
Compare
* Constructs a global data flow computation. | ||
*/ | ||
module Global<ConfigSig Config> implements GlobalFlowSig { | ||
private module C implements FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
* Constructs a global data flow computation using flow state. | ||
*/ | ||
module GlobalWithState<StateConfigSig Config> implements GlobalFlowSig { | ||
private module C implements FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
|
||
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements | ||
module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
@@ -83,6 +83,84 @@ | |||
} | |||
} | |||
|
|||
signature int speculationLimitSig(); | |||
|
|||
module AddSpeculativeTaintSteps< |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
{ | ||
import Config | ||
private module Config0 implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
predicate isSource(DataFlowLang::Node source, FlowState state) { | ||
Config::isSource(source, state.getState()) and state.getSpec() = 0 | ||
predicate isAdditionalFlowStep( | ||
DataFlowLang::Node node1, DataFlowLang::Node node2, string model |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
* Constructs a global taint tracking computation. | ||
*/ | ||
module Global<DataFlow::ConfigSig Config> implements DataFlow::GlobalFlowSig { | ||
private module Config0 implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
} | ||
|
||
predicate isBarrierIn(DataFlowLang::Node node, FlowState state) { | ||
Config::isBarrierIn(node, state.getState()) | ||
private module C implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
* Constructs a global taint tracking computation using flow state. | ||
*/ | ||
module GlobalWithState<DataFlow::StateConfigSig Config> implements DataFlow::GlobalFlowSig { | ||
private module Config0 implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
model = "Speculative" and | ||
state1.getSpec() + 1 = state2.getSpec() and | ||
state1.getState() = state2.getState() | ||
private module C implements DataFlowInternal::FullStateConfigSig { |
Check warning
Code scanning / CodeQL
Data flow configuration module naming Warning
To ensure good performance, always run data flow overlay-informed unless the configuration has opted in to being diff-informed. This change affects only databases with an overlay and therefore has no immediate production consequences.
This won't work for other languages until we can annotate a `forceLocal` call with `local?`.
These become overlay[local] instead. This means that if dataflownode is global, they are still global.
850a45e
to
14b7523
Compare
No description provided.