Skip to content

Commit dc0ca1a

Browse files
committed
Java: Fix TC magic in SystemProperty.
1 parent 3c6db09 commit dc0ca1a

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

java/ql/lib/semmle/code/java/environment/SystemProperty.qll

+12-6
Original file line numberDiff line numberDiff line change
@@ -269,18 +269,24 @@ private MethodCall getSystemPropertyFromSpringProperties(string propertyName) {
269269
* for final variables.
270270
*/
271271
private predicate localExprFlowPlusInitializers(Expr e1, Expr e2) {
272+
e1 = e2 or
272273
localFlowPlusInitializers(DataFlow::exprNode(e1), DataFlow::exprNode(e2))
273274
}
274275

276+
private predicate localFlowPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) =
277+
fastTC(localFlowStepPlusInitializers/2)(pred, succ)
278+
275279
/**
276-
* Holds if data can flow from `pred` to `succ` in zero or more
277-
* local (intra-procedural) steps or via instance or static variable intializers
280+
* Holds if data can flow from `pred` to `succ` in a
281+
* local (intra-procedural) step or via instance or static variable intializers
278282
* for final variables.
279283
*/
280-
private predicate localFlowPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) {
281-
exists(Variable v | v.isFinal() and pred.asExpr() = v.getInitializer() |
282-
DataFlow::localFlow(DataFlow::exprNode(v.getAnAccess()), succ)
284+
private predicate localFlowStepPlusInitializers(DataFlow::Node pred, DataFlow::Node succ) {
285+
exists(Variable v |
286+
v.isFinal() and
287+
pred.asExpr() = v.getInitializer() and
288+
succ.asExpr() = v.getAnAccess()
283289
)
284290
or
285-
DataFlow::localFlow(pred, succ)
291+
DataFlow::localFlowStep(pred, succ)
286292
}

0 commit comments

Comments
 (0)