Skip to content

Commit 98fb82f

Browse files
authored
Merge pull request #53 from microsoft/jb1/dataflowstack/java
DataFlowStack - Java Impl
2 parents 50dad18 + ba1eab3 commit 98fb82f

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

java/ql/lib/qlpack.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ library: true
77
upgrades: upgrades
88
dependencies:
99
codeql/dataflow: ${workspace}
10+
codeql/dataflowstack: ${workspace}
1011
codeql/mad: ${workspace}
1112
codeql/rangeanalysis: ${workspace}
1213
codeql/regex: ${workspace}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
private import semmle.code.java.dataflow.DataFlow
2+
private import semmle.code.java.dataflow.internal.DataFlowImplSpecific
3+
4+
private import codeql.dataflowstack.DataFlowStack as DFS
5+
private import DFS::DataFlowStackMake<JavaDataFlow> as DataFlowStackFactory
6+
7+
module DataFlowStackMake<DataFlowStackFactory::DataFlow::GlobalFlowSig Flow>{
8+
import DataFlowStackFactory::FlowStack<Flow>
9+
}
10+
11+
module BiStackAnalysisMake<DataFlowStackFactory::DataFlow::GlobalFlowSig FlowA, DataFlowStackFactory::DataFlow::GlobalFlowSig FlowB>{
12+
import DataFlowStackFactory::BiStackAnalysis<FlowA, FlowB>
13+
}

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,12 +459,15 @@ class DataFlowCall extends TDataFlowCall {
459459
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
460460
}
461461

462-
// #44: Stub Implementation
463462
/** Gets an argument to this call as a Node. */
464-
ArgumentNode getAnArgumentNode(){ none() } // TODO: JB1 return an argument as a DataFlow ArgumentNode
463+
ArgumentNode getAnArgumentNode(){
464+
result = exprNode(this.asCall().getAnArgument())
465+
}
465466

466467
/** Gets the target of the call, as a DataFlowCallable. */
467-
DataFlowCallable getARuntimeTarget(){ none() }
468+
DataFlowCallable getARuntimeTarget(){
469+
result.asCallable() = this.asCall().getCallee()
470+
}
468471
}
469472

470473
/** A source call, that is, a `Call`. */

0 commit comments

Comments
 (0)