From 6f2407412e9bcb653c2e2be59c68d013beff6f21 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 8 Mar 2023 14:55:40 +0100 Subject: [PATCH] C++: Update some dataflow tests to use `DataFlow::ConfigSig` --- .../additional-flow-to-parameter/standardFlow.ql | 14 +++++++------- .../withAdditionalFlow.ql | 16 ++++++++-------- .../test/library-tests/dataflow/crement/from0.ql | 14 +++++++------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/standardFlow.ql b/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/standardFlow.ql index 1699cfdf3ed..1497702db76 100644 --- a/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/standardFlow.ql +++ b/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/standardFlow.ql @@ -1,14 +1,12 @@ import cpp import semmle.code.cpp.ir.dataflow.DataFlow -class TestConfig extends DataFlow::Configuration { - TestConfig() { this = "TestConfig" } - - override predicate isSource(DataFlow::Node source) { +module TestConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().(FunctionCall).getTarget().getName() = "source" } - override predicate isSink(DataFlow::Node sink) { + predicate isSink(DataFlow::Node sink) { exists(FunctionCall call | call.getTarget().getName() = "sink" and sink.asExpr() = call.getAnArgument() @@ -16,6 +14,8 @@ class TestConfig extends DataFlow::Configuration { } } -from DataFlow::Node sink, DataFlow::Node source, TestConfig cfg -where cfg.hasFlow(source, sink) +module TestFlow = DataFlow::Make; + +from DataFlow::Node sink, DataFlow::Node source +where TestFlow::hasFlow(source, sink) select sink, source diff --git a/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/withAdditionalFlow.ql b/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/withAdditionalFlow.ql index 040bdfc03dd..c46d2cddf88 100644 --- a/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/withAdditionalFlow.ql +++ b/cpp/ql/test/library-tests/dataflow/additional-flow-to-parameter/withAdditionalFlow.ql @@ -1,21 +1,19 @@ import cpp import semmle.code.cpp.ir.dataflow.DataFlow -class TestConfig extends DataFlow::Configuration { - TestConfig() { this = "TestConfig" } - - override predicate isSource(DataFlow::Node source) { +module TestConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().(FunctionCall).getTarget().getName() = "source" } - override predicate isSink(DataFlow::Node sink) { + predicate isSink(DataFlow::Node sink) { exists(FunctionCall call | call.getTarget().getName() = "sink" and sink.asExpr() = call.getAnArgument() ) } - override predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { + predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { // Send all arguments of function-pointer-calls to a function with a // special name exists(Call call, Function target, int i | @@ -27,6 +25,8 @@ class TestConfig extends DataFlow::Configuration { } } -from DataFlow::Node sink, DataFlow::Node source, TestConfig cfg -where cfg.hasFlow(source, sink) +module TestFlow = DataFlow::Make; + +from DataFlow::Node sink, DataFlow::Node source +where TestFlow::hasFlow(source, sink) select sink, source diff --git a/cpp/ql/test/library-tests/dataflow/crement/from0.ql b/cpp/ql/test/library-tests/dataflow/crement/from0.ql index e5f293a0bcb..90bf8401fba 100644 --- a/cpp/ql/test/library-tests/dataflow/crement/from0.ql +++ b/cpp/ql/test/library-tests/dataflow/crement/from0.ql @@ -1,14 +1,14 @@ import cpp import semmle.code.cpp.ir.dataflow.DataFlow -class Cfg extends DataFlow::Configuration { - Cfg() { this = "from0::Cfg" } +module Cfg implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().getValue() = "0" } - override predicate isSource(DataFlow::Node source) { source.asExpr().getValue() = "0" } - - override predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof VariableAccess } + predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof VariableAccess } } -from Cfg cfg, Expr sink -where cfg.hasFlowToExpr(sink) +module Flow = DataFlow::Make; + +from Expr sink +where Flow::hasFlowToExpr(sink) select sink