Merge pull request #158 from microsoft/dataflow-stack-cleanup-2

Java/C#: Add missing files from #157
This commit is contained in:
dilanbhalla
2025-01-30 10:07:50 -08:00
committed by GitHub
2 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
import csharp
private import codeql.dataflow.DataFlow
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflowstack.TaintTrackingStack as TTS
private import TTS::TaintTrackingStackMake<Location, CsharpDataFlow, CsharpTaintTracking> as TaintTrackingStackFactory
private module TaintTrackingStackInput<TaintTrackingStackFactory::DataFlow::ConfigSig Config>
implements TTS::TaintTrackingStackSig<Location, CsharpDataFlow, CsharpTaintTracking, Config>
{
private module Flow = TaintTracking::Global<Config>;
CsharpDataFlow::Node getNode(Flow::PathNode n) { result = n.getNode() }
predicate isSource(Flow::PathNode n) { n.isSource() }
Flow::PathNode getASuccessor(Flow::PathNode n) { result = n.getASuccessor() }
CsharpDataFlow::DataFlowCallable getARuntimeTarget(CsharpDataFlow::DataFlowCall call) {
result = call.getARuntimeTarget()
}
CsharpDataFlow::Node getAnArgumentNode(CsharpDataFlow::DataFlowCall call) {
result = call.getArgument(_)
}
}
module TaintTrackingStackMake<TaintTrackingStackFactory::DataFlow::ConfigSig Config> {
import TaintTrackingStackFactory::FlowStack<Config, TaintTrackingStackInput<Config>>
}
module BiStackAnalysisMake<
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigA,
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigB>
{
import TaintTrackingStackFactory::BiStackAnalysis<ConfigA, TaintTrackingStackInput<ConfigA>, ConfigB, TaintTrackingStackInput<ConfigB>>
}

View File

@@ -0,0 +1,38 @@
import java
private import semmle.code.java.dataflow.DataFlow
private import semmle.code.java.dataflow.TaintTracking
private import semmle.code.java.dataflow.internal.DataFlowImplSpecific
private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflowstack.TaintTrackingStack as TTS
private import TTS::TaintTrackingStackMake<Location, JavaDataFlow, JavaTaintTracking> as TaintTrackingStackFactory
private module TaintTrackingStackInput<TaintTrackingStackFactory::DataFlow::ConfigSig Config>
implements TTS::TaintTrackingStackSig<Location, JavaDataFlow, JavaTaintTracking, Config>
{
private module Flow = TaintTracking::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 DataFlowStackMake<TaintTrackingStackFactory::DataFlow::ConfigSig Config> {
import TaintTrackingStackFactory::FlowStack<Config, TaintTrackingStackInput<Config>>
}
module BiStackAnalysisMake<
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigA,
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigB>
{
import TaintTrackingStackFactory::BiStackAnalysis<ConfigA, TaintTrackingStackInput<ConfigA>, ConfigB, TaintTrackingStackInput<ConfigB>>
}