Skip to content

Commit 70f743d

Browse files
committed
wip
1 parent a94eacb commit 70f743d

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

java/ql/src/Security/CWE/CWE-022/TaintedPath.ql

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import java
1717
import semmle.code.java.security.TaintedPathQuery
1818
import TaintedPathFlow::PathGraph
1919

20+
private predicate stats = TaintedPathFlow::stageStats/10;
21+
2022
from TaintedPathFlow::PathNode source, TaintedPathFlow::PathNode sink
2123
where TaintedPathFlow::flowPath(source, sink)
2224
select sink.getNode(), source, sink, "This path depends on a $@.", source.getNode(),

shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll

+10-2
Original file line numberDiff line numberDiff line change
@@ -1832,7 +1832,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
18321832
cons = traceCons(c, tail)
18331833
or
18341834
exists(ApTrace cons0 |
1835-
fwdFlowConsCand(t2, cons0, c, t1, tail) and
1835+
// fwdFlowConsCand(t2, cons0, c, t1, tail) and
1836+
fwdFlowStore(_, t1, tail, _, c, t2, _, _, _, _, _) and
1837+
cons0 = traceCons(c, tail) and
18361838
fwdFlowApRepr(cons, cons0)
18371839
)
18381840
}
@@ -3363,7 +3365,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
33633365
bindingset[p, state, t, ap, stored]
33643366
pragma[inline_late]
33653367
private SummaryCtxSome mkSummaryCtxSome(
3366-
ParamNodeEx p, FlowState state, Typ t, Ap ap, TypOption stored
3368+
ParamNodeEx p, FlowState state, Typ t, ApTrace ap, TypOption stored
33673369
) {
33683370
result = TSummaryCtxSome(p, state, t, ap, stored)
33693371
}
@@ -4051,6 +4053,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
40514053

40524054
class ApNil = ApproxAccessPathFrontNil;
40534055

4056+
// class ApTrace = Ap;
40544057
class ApTrace = ApproxAccessPathFrontTrace;
40554058

40564059
class ApTraceNil = ApNil;
@@ -4060,6 +4063,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
40604063
Typ getTyp(DataFlowType t) { any() }
40614064

40624065
// Ap apCons(Content c, Ap tail) { result.getAHead() = c and exists(tail) }
4066+
// ApTrace traceCons(Content c, ApTrace tail) { result.getAHead() = c and exists(tail) }
40634067
bindingset[c, tail]
40644068
ApTrace traceCons(Content c, ApTrace tail) { result.isApproxConsOf(c) and exists(tail) }
40654069

@@ -4069,6 +4073,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
40694073
result.isApproxTailOf(c)
40704074
}
40714075

4076+
// ApTrace traceTail(Content c, ApTrace cons) {
4077+
// cons = apCons(c, result) and not result instanceof ApNil
4078+
// }
40724079
bindingset[c, tail]
40734080
Ap apCons(Content c, Ap tail) { result.isApproxConsOf(c) and exists(tail) }
40744081

@@ -4084,6 +4091,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
40844091
pragma[noinline]
40854092
ApHeadContent getTailHeadContent(ApTrace ap) { ap.isTailOf(result) }
40864093

4094+
// ApHeadContent getTailHeadContent(ApTrace ap) { none() }
40874095
predicate projectToHeadContent = getContentApproxCached/1;
40884096

40894097
private module CallContextSensitivityInput implements CallContextSensitivityInputSig {

0 commit comments

Comments
 (0)