File tree 1 file changed +12
-6
lines changed
java/ql/lib/semmle/code/java/environment
1 file changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -269,18 +269,24 @@ private MethodCall getSystemPropertyFromSpringProperties(string propertyName) {
269
269
* for final variables.
270
270
*/
271
271
private predicate localExprFlowPlusInitializers ( Expr e1 , Expr e2 ) {
272
+ e1 = e2 or
272
273
localFlowPlusInitializers ( DataFlow:: exprNode ( e1 ) , DataFlow:: exprNode ( e2 ) )
273
274
}
274
275
276
+ private predicate localFlowPlusInitializers ( DataFlow:: Node pred , DataFlow:: Node succ ) =
277
+ fastTC( localFlowStepPlusInitializers / 2 ) ( pred , succ )
278
+
275
279
/**
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
278
282
* for final variables.
279
283
*/
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 ( )
283
289
)
284
290
or
285
- DataFlow:: localFlow ( pred , succ )
291
+ DataFlow:: localFlowStep ( pred , succ )
286
292
}
You can’t perform that action at this time.
0 commit comments