Skip to content

Commit 3237b2c

Browse files
authored
Merge pull request #158 from microsoft/dataflow-stack-cleanup-2
Java/C#: Add missing files from #157
2 parents ee6624a + d144c26 commit 3237b2c

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import csharp
2+
private import codeql.dataflow.DataFlow
3+
private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific
4+
private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific
5+
private import codeql.dataflowstack.TaintTrackingStack as TTS
6+
private import TTS::TaintTrackingStackMake<Location, CsharpDataFlow, CsharpTaintTracking> as TaintTrackingStackFactory
7+
8+
private module TaintTrackingStackInput<TaintTrackingStackFactory::DataFlow::ConfigSig Config>
9+
implements TTS::TaintTrackingStackSig<Location, CsharpDataFlow, CsharpTaintTracking, Config>
10+
{
11+
private module Flow = TaintTracking::Global<Config>;
12+
13+
CsharpDataFlow::Node getNode(Flow::PathNode n) { result = n.getNode() }
14+
15+
predicate isSource(Flow::PathNode n) { n.isSource() }
16+
17+
Flow::PathNode getASuccessor(Flow::PathNode n) { result = n.getASuccessor() }
18+
19+
CsharpDataFlow::DataFlowCallable getARuntimeTarget(CsharpDataFlow::DataFlowCall call) {
20+
result = call.getARuntimeTarget()
21+
}
22+
23+
CsharpDataFlow::Node getAnArgumentNode(CsharpDataFlow::DataFlowCall call) {
24+
result = call.getArgument(_)
25+
}
26+
}
27+
28+
module TaintTrackingStackMake<TaintTrackingStackFactory::DataFlow::ConfigSig Config> {
29+
import TaintTrackingStackFactory::FlowStack<Config, TaintTrackingStackInput<Config>>
30+
}
31+
32+
module BiStackAnalysisMake<
33+
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigA,
34+
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigB>
35+
{
36+
import TaintTrackingStackFactory::BiStackAnalysis<ConfigA, TaintTrackingStackInput<ConfigA>, ConfigB, TaintTrackingStackInput<ConfigB>>
37+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import java
2+
private import semmle.code.java.dataflow.DataFlow
3+
private import semmle.code.java.dataflow.TaintTracking
4+
private import semmle.code.java.dataflow.internal.DataFlowImplSpecific
5+
private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific
6+
private import codeql.dataflowstack.TaintTrackingStack as TTS
7+
private import TTS::TaintTrackingStackMake<Location, JavaDataFlow, JavaTaintTracking> as TaintTrackingStackFactory
8+
9+
private module TaintTrackingStackInput<TaintTrackingStackFactory::DataFlow::ConfigSig Config>
10+
implements TTS::TaintTrackingStackSig<Location, JavaDataFlow, JavaTaintTracking, Config>
11+
{
12+
private module Flow = TaintTracking::Global<Config>;
13+
14+
JavaDataFlow::Node getNode(Flow::PathNode n) { result = n.getNode() }
15+
16+
predicate isSource(Flow::PathNode n) { n.isSource() }
17+
18+
Flow::PathNode getASuccessor(Flow::PathNode n) { result = n.getASuccessor() }
19+
20+
JavaDataFlow::DataFlowCallable getARuntimeTarget(JavaDataFlow::DataFlowCall call) {
21+
result.asCallable() = call.asCall().getCallee()
22+
}
23+
24+
JavaDataFlow::Node getAnArgumentNode(JavaDataFlow::DataFlowCall call) {
25+
result = JavaDataFlow::exprNode(call.asCall().getAnArgument())
26+
}
27+
}
28+
29+
module DataFlowStackMake<TaintTrackingStackFactory::DataFlow::ConfigSig Config> {
30+
import TaintTrackingStackFactory::FlowStack<Config, TaintTrackingStackInput<Config>>
31+
}
32+
33+
module BiStackAnalysisMake<
34+
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigA,
35+
TaintTrackingStackFactory::DataFlow::ConfigSig ConfigB>
36+
{
37+
import TaintTrackingStackFactory::BiStackAnalysis<ConfigA, TaintTrackingStackInput<ConfigA>, ConfigB, TaintTrackingStackInput<ConfigB>>
38+
}

0 commit comments

Comments
 (0)