avoid cartesian product in isFilteredPropertyName

This commit is contained in:
Erik Krogh Kristensen
2021-02-17 13:12:35 +01:00
parent e0dca2be20
commit a03507a544

View File

@@ -221,20 +221,16 @@ module CleartextLogging {
/**
* Holds if `name` is filtered by e.g. a regular-expression test or a filter call.
*/
private predicate isFilteredPropertyName(DataFlow::Node name) {
private predicate isFilteredPropertyName(DataFlow::SourceNode name) {
exists(DataFlow::MethodCallNode reduceCall |
reduceCall.getABoundCallbackParameter(0, 1).flowsTo(name) and
reduceCall.getMethodName() = "reduce"
reduceCall.getMethodName() = "reduce" and
reduceCall.getABoundCallbackParameter(0, 1) = name
|
reduceCall.getReceiver+().(DataFlow::MethodCallNode).getMethodName() = "filter"
)
or
exists(StringOps::RegExpTest test |
test.getStringOperand().getALocalSource() = name.getALocalSource()
)
exists(StringOps::RegExpTest test | test.getStringOperand().getALocalSource() = name)
or
exists(MembershipCandidate test |
test.getAMemberNode().getALocalSource() = name.getALocalSource()
)
exists(MembershipCandidate test | test.getAMemberNode().getALocalSource() = name)
}
}