From ae6887847640e49e87327599576744fe69bc5b6d Mon Sep 17 00:00:00 2001 From: Jonas Jensen Date: Tue, 18 Feb 2020 15:49:31 +0100 Subject: [PATCH] C++: Cache DefaultTaintTracking This should speed up the overall suite, where `DefaultTaintTracking` is used in several queries. --- cpp/ql/src/semmle/code/cpp/ir/dataflow/DefaultTaintTracking.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/ql/src/semmle/code/cpp/ir/dataflow/DefaultTaintTracking.qll b/cpp/ql/src/semmle/code/cpp/ir/dataflow/DefaultTaintTracking.qll index 668512cecdec..638e0e0269c6 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/dataflow/DefaultTaintTracking.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/dataflow/DefaultTaintTracking.qll @@ -343,6 +343,7 @@ private Element adjustedSink(DataFlow::Node sink) { result.(AssignOperation).getAnOperand() = sink.asExpr() } +cached predicate tainted(Expr source, Element tainted) { exists(DefaultTaintTrackingCfg cfg, DataFlow::Node sink | cfg.hasFlow(getNodeForSource(source), sink) and @@ -350,6 +351,7 @@ predicate tainted(Expr source, Element tainted) { ) } +cached predicate taintedIncludingGlobalVars(Expr source, Element tainted, string globalVar) { tainted(source, tainted) and globalVar = ""