mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
C#: Avoid recomputing flowThroughCallableLibraryOutRef() between queries
This commit is contained in:
@@ -996,6 +996,8 @@ module DataFlow {
|
||||
or
|
||||
Internal::flowOutOfDelegateLibraryCall(nodeFrom, nodeTo, true)
|
||||
or
|
||||
flowThroughCallableLibraryOutRef(_, nodeFrom, nodeTo, true)
|
||||
or
|
||||
localFlowStepCil(nodeFrom, nodeTo)
|
||||
}
|
||||
|
||||
@@ -1079,17 +1081,12 @@ module DataFlow {
|
||||
(isSuccessor = true or isSuccessor = false)
|
||||
}
|
||||
|
||||
predicate localFlowStepNoConfig(Node pred, Node succ) {
|
||||
localFlowStep(pred, succ) or
|
||||
flowThroughCallableLibraryOutRef(_, pred, succ, true)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if data may flow in one local step from `pred` to `succ`.
|
||||
*/
|
||||
bindingset[config]
|
||||
predicate localFlowStep(Node pred, Node succ, Configuration config) {
|
||||
localFlowStepNoConfig(pred, succ) or
|
||||
localFlowStep(pred, succ) or
|
||||
config.isAdditionalFlowStep(pred, succ)
|
||||
}
|
||||
|
||||
|
||||
@@ -81,8 +81,7 @@ module TaintTracking {
|
||||
|
||||
final override predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) {
|
||||
isAdditionalTaintStep(pred, succ) or
|
||||
localAdditionalTaintStep(pred, succ) or
|
||||
DataFlow::Internal::flowThroughCallableLibraryOutRef(_, pred, succ, false)
|
||||
localAdditionalTaintStep(pred, succ)
|
||||
}
|
||||
|
||||
final override predicate isAdditionalFlowStepIntoCall(
|
||||
@@ -257,6 +256,8 @@ module TaintTracking {
|
||||
or
|
||||
access.(PropertyRead).getQualifier() = nodeFrom.asExpr()
|
||||
)
|
||||
or
|
||||
DataFlow::Internal::flowThroughCallableLibraryOutRef(_, nodeFrom, nodeTo, false)
|
||||
}
|
||||
}
|
||||
import Cached
|
||||
|
||||
Reference in New Issue
Block a user