Merge pull request #159 from microsoft/dataflow-stack-cleanup-3

Java: Update file that was forgotten in #157
This commit is contained in:
Mathias Vorreiter Pedersen
2025-01-31 18:04:25 +00:00
committed by GitHub
3 changed files with 30 additions and 8 deletions

View File

@@ -1,14 +1,36 @@
import java
private import semmle.code.java.dataflow.DataFlow
private import semmle.code.java.dataflow.internal.DataFlowImplSpecific
private import codeql.dataflowstack.DataFlowStack as DFS
private import DFS::DataFlowStackMake<Location, JavaDataFlow> as DataFlowStackFactory
module DataFlowStackMake<DataFlowStackFactory::DataFlow::GlobalFlowSig Flow>{
import DataFlowStackFactory::FlowStack<Flow>
private module DataFlowStackInput<DataFlowStackFactory::DataFlow::ConfigSig Config> implements
DFS::DataFlowStackSig<Location, JavaDataFlow, Config>
{
private module Flow = DataFlow::Global<Config>;
JavaDataFlow::Node getNode(Flow::PathNode n) { result = n.getNode() }
predicate isSource(Flow::PathNode n) { n.isSource() }
Flow::PathNode getASuccessor(Flow::PathNode n) { result = n.getASuccessor() }
JavaDataFlow::DataFlowCallable getARuntimeTarget(JavaDataFlow::DataFlowCall call) {
result.asCallable() = call.asCall().getCallee()
}
JavaDataFlow::Node getAnArgumentNode(JavaDataFlow::DataFlowCall call) {
result = JavaDataFlow::exprNode(call.asCall().getAnArgument())
}
}
module BiStackAnalysisMake<DataFlowStackFactory::DataFlow::GlobalFlowSig FlowA, DataFlowStackFactory::DataFlow::GlobalFlowSig FlowB>{
import DataFlowStackFactory::BiStackAnalysis<FlowA, FlowB>
}
module DataFlowStackMake<DataFlowStackFactory::DataFlow::ConfigSig Config> {
import DataFlowStackFactory::FlowStack<Config, DataFlowStackInput<Config>>
}
module BiStackAnalysisMake<
DataFlowStackFactory::DataFlow::ConfigSig ConfigA,
DataFlowStackFactory::DataFlow::ConfigSig ConfigB>
{
import DataFlowStackFactory::BiStackAnalysis<ConfigA, DataFlowStackInput<ConfigA>, ConfigB, DataFlowStackInput<ConfigB>>
}

View File

@@ -236,7 +236,7 @@ module DataFlowStackMake<LocationSig Location, DF::InputSig<Location> Lang> {
exists(Flow::PathNode source, Flow::PathNode sink |
flowStack = TFlowStack(source, sink) and
frame.getPathNode() = DataFlowStack::getASuccessor*(source) and
DataFlowStack::getASuccessor(frame.getPathNode()) = sink
DataFlowStack::getASuccessor*(frame.getPathNode()) = sink
)
}

View File

@@ -242,7 +242,7 @@ module TaintTrackingStackMake<
exists(Flow::PathNode source, Flow::PathNode sink |
flowStack = TFlowStack(source, sink) and
frame.getPathNode() = TaintTrackingStack::getASuccessor*(source) and
TaintTrackingStack::getASuccessor(frame.getPathNode()) = sink
TaintTrackingStack::getASuccessor*(frame.getPathNode()) = sink
)
}