Skip to content

Commit 82d190f

Browse files
committed
Java: use approximate related sink locations in polynomial redos
1 parent a46b5f9 commit 82d190f

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

java/ql/lib/semmle/code/java/security/regexp/PolynomialReDoSQuery.qll

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,24 @@ module PolynomialRedosConfig implements DataFlow::ConfigSig {
4747
node instanceof SimpleTypeSanitizer or
4848
node.asExpr().(MethodCall).getMethod() instanceof LengthRestrictedMethod
4949
}
50+
51+
predicate observeDiffInformedIncrementalMode() { any() }
52+
53+
Location getASelectedSinkLocation(DataFlow::Node sink) {
54+
exists(SuperlinearBackTracking::PolynomialBackTrackingTerm regexp |
55+
regexp.getRootTerm() = sink.(PolynomialRedosSink).getRegExp()
56+
|
57+
result = sink.getLocation()
58+
)
59+
}
60+
61+
Location getASelectedSinkLocationApprox(DataFlow::Node sink) {
62+
exists(SuperlinearBackTracking::PolynomialBackTrackingTerm regexp |
63+
regexp.getRootTerm() = sink.(PolynomialRedosSink).getRegExp()
64+
|
65+
result = regexp.getLocation()
66+
)
67+
}
5068
}
5169

5270
module PolynomialRedosFlow = TaintTracking::Global<PolynomialRedosConfig>;

0 commit comments

Comments
 (0)