Merge pull request #12148 from jketema/opt-in

C++: Revert `semmle.code.cpp.dataflow` to its old state
This commit is contained in:
Jeroen Ketema
2023-02-10 17:34:27 +01:00
committed by GitHub
93 changed files with 149 additions and 280 deletions

View File

@@ -8,11 +8,11 @@
"java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll",
"java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll",
"java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForOnActivityResult.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImpl.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImpl2.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImpl3.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImpl4.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImplLocal.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll",
@@ -43,7 +43,7 @@
],
"DataFlow Java/C++/C#/Go/Python/Ruby/Swift Common": [
"java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImplCommon.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll",
"cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll",
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll",
@@ -52,9 +52,9 @@
"ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll",
"swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll"
],
"TaintTracking::Configuration Java/C++/C#/Go/Python/Ruby/Swift": [
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/tainttracking1/TaintTrackingImpl.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/tainttracking2/TaintTrackingImpl.qll",
"TaintTracking::Configuration Java/C++/C#/Go/Python/Ruby/Swift": [
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll",
@@ -80,7 +80,7 @@
],
"DataFlow Java/C++/C#/Python/Ruby/Swift Consistency checks": [
"java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/DataFlowImplConsistency.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll",
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll",
"cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll",
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll",
@@ -122,7 +122,7 @@
],
"C++ SubBasicBlocks": [
"cpp/ql/lib/semmle/code/cpp/controlflow/SubBasicBlocks.qll",
"cpp/ql/lib/semmle/code/cpp/dataflow/old/internal/SubBasicBlocks.qll"
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/SubBasicBlocks.qll"
],
"IR Instruction": [
"cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll",

View File

@@ -0,0 +1,4 @@
---
category: breaking
---
* The `semmle.code.cpp.commons.Buffer` and `semmle.code.cpp.commons.NullTermination` libraries no longer expose `semmle.code.cpp.dataflow.DataFlow`. Please import `semmle.code.cpp.dataflow.DataFlow` directly.

View File

@@ -3,7 +3,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.security.PrivateData
import semmle.code.cpp.security.FileWrite
import semmle.code.cpp.security.BufferWrite

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
private import semmle.code.cpp.ir.dataflow.DataFlow
/**
* Holds if `v` is a member variable of `c` that looks like it might be variable sized

View File

@@ -1,7 +1,7 @@
import cpp
private import semmle.code.cpp.models.interfaces.ArrayFunction
private import semmle.code.cpp.models.implementations.Strcat
import semmle.code.cpp.dataflow.DataFlow
private import semmle.code.cpp.ir.dataflow.DataFlow
/**
* Holds if the expression `e` assigns something including `va` to a

View File

@@ -4,7 +4,10 @@
* _sink_.
*
* Unless configured otherwise, _flow_ means that the exact value of
* the source may reach the sink.
* the source may reach the sink. We do not track flow across pointer
* dereferences or array indexing. To track these types of flow, where the
* exact value may not be preserved, import
* `semmle.code.cpp.dataflow.TaintTracking`.
*
* To use global (interprocedural) data flow, extend the class
* `DataFlow::Configuration` as documented on that class. To use local
@@ -14,4 +17,12 @@
* `DataFlow::Node`.
*/
import semmle.code.cpp.ir.dataflow.DataFlow
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow {
import semmle.code.cpp.dataflow.internal.DataFlowImpl
}

View File

@@ -9,4 +9,12 @@
* See `semmle.code.cpp.dataflow.DataFlow` for the full documentation.
*/
import semmle.code.cpp.ir.dataflow.DataFlow2
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow2 {
import semmle.code.cpp.dataflow.internal.DataFlowImpl2
}

View File

@@ -9,4 +9,12 @@
* See `semmle.code.cpp.dataflow.DataFlow` for the full documentation.
*/
import semmle.code.cpp.ir.dataflow.DataFlow3
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow3 {
import semmle.code.cpp.dataflow.internal.DataFlowImpl3
}

View File

@@ -9,4 +9,12 @@
* See `semmle.code.cpp.dataflow.DataFlow` for the full documentation.
*/
import semmle.code.cpp.ir.dataflow.DataFlow4
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow4 {
import semmle.code.cpp.dataflow.internal.DataFlowImpl4
}

View File

@@ -15,4 +15,13 @@
* `TaintTracking::localTaintStep` with arguments of type `DataFlow::Node`.
*/
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.dataflow.DataFlow2
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
module TaintTracking {
import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTrackingImpl
}

View File

@@ -11,4 +11,10 @@
* See `semmle.code.cpp.dataflow.TaintTracking` for the full documentation.
*/
import semmle.code.cpp.ir.dataflow.TaintTracking2
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
module TaintTracking2 {
import semmle.code.cpp.dataflow.internal.tainttracking2.TaintTrackingImpl
}

View File

@@ -1,14 +0,0 @@
/**
* Provides a `TaintTracking3` module, which is a copy of the `TaintTracking`
* module. Use this class when data-flow configurations or taint-tracking
* configurations must depend on each other. Two classes extending
* `DataFlow::Configuration` should never depend on each other, but one of them
* should instead depend on a `DataFlow2::Configuration`, a
* `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. The
* `TaintTracking::Configuration` class extends `DataFlow::Configuration`, and
* `TaintTracking2::Configuration` extends `DataFlow2::Configuration`.
*
* See `semmle.code.cpp.dataflow.TaintTracking` for the full documentation.
*/
import semmle.code.cpp.ir.dataflow.TaintTracking3

View File

@@ -0,0 +1,5 @@
import semmle.code.cpp.dataflow.internal.TaintTrackingUtil as Public
module Private {
import semmle.code.cpp.dataflow.DataFlow::DataFlow as DataFlow
}

View File

@@ -0,0 +1,5 @@
import semmle.code.cpp.dataflow.internal.TaintTrackingUtil as Public
module Private {
import semmle.code.cpp.dataflow.DataFlow2::DataFlow2 as DataFlow
}

View File

@@ -1,25 +0,0 @@
/**
* Provides a library for local (intra-procedural) and global (inter-procedural)
* data flow analysis: deciding whether data can flow from a _source_ to a
* _sink_.
*
* Unless configured otherwise, _flow_ means that the exact value of
* the source may reach the sink.
*
* To use global (interprocedural) data flow, extend the class
* `DataFlow::Configuration` as documented on that class. To use local
* (intraprocedural) data flow between expressions, call
* `DataFlow::localExprFlow`. For more general cases of local data flow, call
* `DataFlow::localFlow` or `DataFlow::localFlowStep` with arguments of type
* `DataFlow::Node`.
*/
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow {
import semmle.code.cpp.dataflow.old.internal.DataFlowImpl
}

View File

@@ -1,20 +0,0 @@
/**
* Provides a `DataFlow2` module, which is a copy of the `DataFlow` module. Use
* this class when data-flow configurations must depend on each other. Two
* classes extending `DataFlow::Configuration` should never depend on each
* other, but one of them should instead depend on a
* `DataFlow2::Configuration`, a `DataFlow3::Configuration`, or a
* `DataFlow4::Configuration`.
*
* See `semmle.code.cpp.dataflow.old.DataFlow` for the full documentation.
*/
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow2 {
import semmle.code.cpp.dataflow.old.internal.DataFlowImpl2
}

View File

@@ -1,20 +0,0 @@
/**
* Provides a `DataFlow3` module, which is a copy of the `DataFlow` module. Use
* this class when data-flow configurations must depend on each other. Two
* classes extending `DataFlow::Configuration` should never depend on each
* other, but one of them should instead depend on a
* `DataFlow2::Configuration`, a `DataFlow3::Configuration`, or a
* `DataFlow4::Configuration`.
*
* See `semmle.code.cpp.dataflow.old.DataFlow` for the full documentation.
*/
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow3 {
import semmle.code.cpp.dataflow.old.internal.DataFlowImpl3
}

View File

@@ -1,20 +0,0 @@
/**
* Provides a `DataFlow4` module, which is a copy of the `DataFlow` module. Use
* this class when data-flow configurations must depend on each other. Two
* classes extending `DataFlow::Configuration` should never depend on each
* other, but one of them should instead depend on a
* `DataFlow2::Configuration`, a `DataFlow3::Configuration`, or a
* `DataFlow4::Configuration`.
*
* See `semmle.code.cpp.dataflow.old.DataFlow` for the full documentation.
*/
import cpp
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow4 {
import semmle.code.cpp.dataflow.old.internal.DataFlowImpl4
}

View File

@@ -1,39 +0,0 @@
/**
* DEPRECATED: Recursion through `DataFlow::Configuration` is impossible in
* any supported tooling. There is no need for this module because it's
* impossible to accidentally depend on recursion through
* `DataFlow::Configuration` in current releases.
*
* When this module is imported, recursive use of `DataFlow::Configuration` is
* disallowed. Importing this module will guarantee the absence of such
* recursion, which is unsupported and will be unconditionally disallowed in a
* future release.
*
* Recursive use of `DataFlow{2..4}::Configuration` is always disallowed, so no
* import is needed for those.
*/
import cpp
private import semmle.code.cpp.dataflow.DataFlow
/**
* This class exists to prevent mutual recursion between the user-overridden
* member predicates of `Configuration` and the rest of the data-flow library.
* Good performance cannot be guaranteed in the presence of such recursion, so
* it should be replaced by using more than one copy of the data flow library.
* Four copies are available: `DataFlow` through `DataFlow4`.
*/
abstract private class ConfigurationRecursionPrevention extends DataFlow::Configuration {
bindingset[this]
ConfigurationRecursionPrevention() { any() }
override predicate hasFlow(DataFlow::Node source, DataFlow::Node sink) {
strictcount(DataFlow::Node n | this.isSource(n)) < 0
or
strictcount(DataFlow::Node n | this.isSink(n)) < 0
or
strictcount(DataFlow::Node n1, DataFlow::Node n2 | this.isAdditionalFlowStep(n1, n2)) < 0
or
super.hasFlow(source, sink)
}
}

View File

@@ -1,27 +0,0 @@
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*
* We define _taint propagation_ informally to mean that a substantial part of
* the information from the source is preserved at the sink. For example, taint
* propagates from `x` to `x + 100`, but it does not propagate from `x` to `x >
* 100` since we consider a single bit of information to be too little.
*
* To use global (interprocedural) taint tracking, extend the class
* `TaintTracking::Configuration` as documented on that class. To use local
* (intraprocedural) taint tracking between expressions, call
* `TaintTracking::localExprTaint`. For more general cases of local taint
* tracking, call `TaintTracking::localTaint` or
* `TaintTracking::localTaintStep` with arguments of type `DataFlow::Node`.
*/
import semmle.code.cpp.dataflow.old.DataFlow
import semmle.code.cpp.dataflow.old.DataFlow2
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
module TaintTracking {
import semmle.code.cpp.dataflow.old.internal.tainttracking1.TaintTrackingImpl
}

View File

@@ -1,20 +0,0 @@
/**
* Provides a `TaintTracking2` module, which is a copy of the `TaintTracking`
* module. Use this class when data-flow configurations or taint-tracking
* configurations must depend on each other. Two classes extending
* `DataFlow::Configuration` should never depend on each other, but one of them
* should instead depend on a `DataFlow2::Configuration`, a
* `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. The
* `TaintTracking::Configuration` class extends `DataFlow::Configuration`, and
* `TaintTracking2::Configuration` extends `DataFlow2::Configuration`.
*
* See `semmle.code.cpp.dataflow.old.TaintTracking` for the full documentation.
*/
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
module TaintTracking2 {
import semmle.code.cpp.dataflow.old.internal.tainttracking2.TaintTrackingImpl
}

View File

@@ -1,5 +0,0 @@
import semmle.code.cpp.dataflow.old.internal.TaintTrackingUtil as Public
module Private {
import semmle.code.cpp.dataflow.old.DataFlow::DataFlow as DataFlow
}

View File

@@ -1,5 +0,0 @@
import semmle.code.cpp.dataflow.old.internal.TaintTrackingUtil as Public
module Private {
import semmle.code.cpp.dataflow.old.DataFlow2::DataFlow2 as DataFlow
}

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
module BoostorgAsio {
/**

View File

@@ -16,7 +16,7 @@
import cpp
import semmle.code.cpp.commons.Scanf
import semmle.code.cpp.controlflow.Guards
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.ir.IR
import semmle.code.cpp.ir.ValueNumbering

View File

@@ -4,7 +4,7 @@
import cpp
import semmle.code.cpp.controlflow.SSA
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* Holds if `alloc` is a use of `malloc` or `new`. `kind` is

View File

@@ -12,7 +12,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.models.interfaces.Allocation
predicate spaceProblem(FunctionCall append, string msg) {

View File

@@ -15,6 +15,7 @@
import cpp
import semmle.code.cpp.commons.Buffer
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis
import LoopBounds

View File

@@ -17,7 +17,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import DataFlow::PathGraph
Type getFullyConvertedType(DataFlow::Node node) {

View File

@@ -10,7 +10,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
predicate whitelist(Function f) {
f.getName() =

View File

@@ -15,7 +15,7 @@
* external/cwe/cwe-134
*/
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.commons.Printf
// For the following `...gettext` functions, we assume that

View File

@@ -3,7 +3,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.commons.DateTime
/**

View File

@@ -12,7 +12,7 @@
import cpp
import semmle.code.cpp.models.implementations.Strcpy
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* A string copy function that returns a string, rather than an error code (for

View File

@@ -12,7 +12,7 @@
import cpp
import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* A `for` statement whose update is a crement operation on a variable.

View File

@@ -14,7 +14,7 @@
import cpp
import semmle.code.cpp.rangeanalysis.RangeAnalysisUtils
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/** Gets a loop that contains `e`. */
Loop getAnEnclosingLoopOfExpr(Expr e) { result = getAnEnclosingLoopOfStmt(e.getEnclosingStmt()) }

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.controlflow.Guards
import semmle.code.cpp.valuenumbering.GlobalValueNumbering

View File

@@ -14,7 +14,7 @@
import cpp
import semmle.code.cpp.controlflow.SSA
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/** The `std::string` class. */
class StdString extends Class {

View File

@@ -2,7 +2,7 @@
* Provides AST-specific definitions for use in the `ExternalAPI` library.
*/
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.models.interfaces.FlowSource
import semmle.code.cpp.models.interfaces.DataFlow
import SafeExternalAPIFunction

View File

@@ -10,7 +10,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import ExternalAPIs
import DataFlow::PathGraph

View File

@@ -16,7 +16,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.models.interfaces.ArrayFunction
import semmle.code.cpp.models.interfaces.Allocation
import semmle.code.cpp.commons.NullTermination

View File

@@ -16,7 +16,7 @@ import semmle.code.cpp.commons.Exclusions
import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis
import semmle.code.cpp.rangeanalysis.RangeAnalysisUtils
import semmle.code.cpp.controlflow.Guards
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* Holds if `sub` is guarded by a condition which ensures that

View File

@@ -12,7 +12,7 @@
import cpp
import semmle.code.cpp.controlflow.Guards
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* A call to `SSL_get_verify_result`.

View File

@@ -15,9 +15,9 @@
import cpp
import semmle.code.cpp.security.SensitiveExprs
import semmle.code.cpp.security.FileWrite
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.valuenumbering.GlobalValueNumbering
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import DataFlow::PathGraph
/**

View File

@@ -15,9 +15,9 @@
import cpp
import semmle.code.cpp.security.SensitiveExprs
import semmle.code.cpp.security.PrivateData
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.dataflow.TaintTracking2
import semmle.code.cpp.dataflow.TaintTracking3
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking2
import semmle.code.cpp.ir.dataflow.TaintTracking3
import semmle.code.cpp.models.interfaces.FlowSource
import semmle.code.cpp.commons.File
import DataFlow::PathGraph

View File

@@ -13,7 +13,7 @@
import cpp
import semmle.code.cpp.security.SensitiveExprs
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import DataFlow::PathGraph
class SqliteFunctionCall extends FunctionCall {

View File

@@ -12,7 +12,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.valuenumbering.GlobalValueNumbering
import DataFlow::PathGraph

View File

@@ -12,8 +12,8 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.dataflow.DataFlow2
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow2
predicate isCreateProcessFunction(FunctionCall call, int applicationNameIndex, int commandLineIndex) {
call.getTarget().hasGlobalName("CreateProcessA") and

View File

@@ -14,8 +14,8 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.dataflow.DataFlow2
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow2
/**
* A function call to SetSecurityDescriptorDacl to set the ACL, specified by (2nd argument) bDaclPresent = TRUE

View File

@@ -16,7 +16,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
/**
* A Linux system call.

View File

@@ -14,7 +14,7 @@
import cpp
import semmle.code.cpp.models.interfaces.Allocation
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import DataFlow::PathGraph
class MultToAllocConfig extends DataFlow::Configuration {

View File

@@ -10,7 +10,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.valuenumbering.GlobalValueNumbering
private class PamAuthCall extends FunctionCall {

View File

@@ -11,7 +11,7 @@
*/
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.security.Overflow
from FunctionCall call, Function f, Parameter p, DataFlow::Node sink, PointerArithmeticOperation pao

View File

@@ -14,7 +14,7 @@
import cpp
import semmle.code.cpp.valuenumbering.GlobalValueNumbering
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
from StrlenCall fc, AssignExpr expr, ArrayExpr exprarr
where

View File

@@ -13,7 +13,7 @@
import cpp
private import semmle.code.cpp.ir.dataflow.DataFlow::DataFlow as IRDataFlow
private import semmle.code.cpp.dataflow.old.DataFlow::DataFlow as AstDataFlow
private import semmle.code.cpp.dataflow.DataFlow::DataFlow as AstDataFlow
import TestUtilities.InlineExpectationsTest
class IRFlowTest extends InlineExpectationsTest {

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
class TestConfig extends DataFlow::Configuration {
TestConfig() { this = "TestConfig" }

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow
class TestConfig extends DataFlow::Configuration {
TestConfig() { this = "TestConfig" }

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.old.DataFlow
import semmle.code.cpp.dataflow.DataFlow
class EdgeToExcept extends AdditionalControlFlowEdge {
EdgeToExcept() {

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.old.DataFlow
import semmle.code.cpp.dataflow.DataFlow
from DataFlow::Node nodeFrom, DataFlow::Node nodeTo
where DataFlow::localFlowStep(nodeFrom, nodeTo)

View File

@@ -1 +1 @@
import semmle.code.cpp.dataflow.old.internal.DataFlowImplConsistency::Consistency
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.old.DataFlow
import semmle.code.cpp.dataflow.DataFlow
from DataFlow::Node nodeFrom, DataFlow::Node nodeTo
where

View File

@@ -2,8 +2,8 @@ import TestUtilities.InlineExpectationsTest
import cpp
module AstTest {
private import semmle.code.cpp.dataflow.old.DataFlow::DataFlow
private import semmle.code.cpp.dataflow.old.internal.DataFlowPrivate
private import semmle.code.cpp.dataflow.DataFlow::DataFlow
private import semmle.code.cpp.dataflow.internal.DataFlowPrivate
class ASTMultipleOutNodesTest extends InlineExpectationsTest {
ASTMultipleOutNodesTest() { this = "ASTMultipleOutNodesTest" }

View File

@@ -1,7 +1,7 @@
import TestUtilities.dataflow.FlowTestCommon
module AstTest {
private import semmle.code.cpp.dataflow.old.DataFlow
private import semmle.code.cpp.dataflow.DataFlow
private import semmle.code.cpp.controlflow.Guards
/**

View File

@@ -1,4 +1,4 @@
import semmle.code.cpp.dataflow.old.internal.FlowVar
import semmle.code.cpp.dataflow.internal.FlowVar
from Variable var, VariableAccess va
where FlowVar_internal::mayBeUsedUninitialized(var, va)

View File

@@ -1,4 +1,4 @@
private import semmle.code.cpp.dataflow.old.DataFlow
private import semmle.code.cpp.dataflow.DataFlow
private import DataFlow
class AstConf extends Configuration {

View File

@@ -1,5 +1,5 @@
private import semmle.code.cpp.ir.dataflow.DataFlow as IR
private import semmle.code.cpp.dataflow.old.DataFlow as AST
private import semmle.code.cpp.dataflow.DataFlow as AST
private import cpp
private newtype TNode =

View File

@@ -1 +1 @@
import semmle.code.cpp.dataflow.old.internal.DataFlowImplConsistency::Consistency
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -4,7 +4,7 @@
import cpp
import semmle.code.cpp.ir.dataflow.DataFlow::DataFlow as IR
import semmle.code.cpp.dataflow.old.DataFlow::DataFlow as AST
import semmle.code.cpp.dataflow.DataFlow::DataFlow as AST
import Nodes
class AstPartialDefNode extends AstNode {

View File

@@ -3,6 +3,6 @@
*/
import cpp
import semmle.code.cpp.dataflow.old.DataFlow::DataFlow
import semmle.code.cpp.dataflow.DataFlow::DataFlow
select any(Node n).asPartialDefinition()

View File

@@ -2,7 +2,7 @@
* @kind path-problem
*/
import semmle.code.cpp.dataflow.old.DataFlow
import semmle.code.cpp.dataflow.DataFlow
import ASTConfiguration
import DataFlow::PathGraph

View File

@@ -1,4 +1,4 @@
import semmle.code.cpp.dataflow.old.internal.FlowVar
import semmle.code.cpp.dataflow.internal.FlowVar
from PartialDefinition def
select def.getActualLocation().toString(), "partial def of " + def.toString(), def,

View File

@@ -1,11 +1,10 @@
import cpp
import semmle.code.cpp.dataflow.DataFlow
import semmle.code.cpp.dataflow.DataFlow2
import semmle.code.cpp.dataflow.DataFlow3
import semmle.code.cpp.dataflow.DataFlow4
import semmle.code.cpp.dataflow.TaintTracking
import semmle.code.cpp.dataflow.TaintTracking2
import semmle.code.cpp.dataflow.RecursionPrevention
import semmle.code.cpp.ir.dataflow.DataFlow
import semmle.code.cpp.ir.dataflow.DataFlow2
import semmle.code.cpp.ir.dataflow.DataFlow3
import semmle.code.cpp.ir.dataflow.DataFlow4
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.ir.dataflow.TaintTracking2
class TestConf1 extends DataFlow::Configuration {
TestConf1() { this = "TestConf1" }

View File

@@ -1,7 +1,7 @@
import TestUtilities.dataflow.FlowTestCommon
module AstTest {
private import semmle.code.cpp.dataflow.old.TaintTracking
private import semmle.code.cpp.dataflow.TaintTracking
class AstSmartPointerTaintConfig extends TaintTracking::Configuration {
AstSmartPointerTaintConfig() { this = "ASTSmartPointerTaintConfig" }

View File

@@ -1,5 +1,5 @@
import cpp
import semmle.code.cpp.dataflow.old.TaintTracking
import semmle.code.cpp.dataflow.TaintTracking
from DataFlow::Node nodeFrom, DataFlow::Node nodeTo, string msg
where

View File

@@ -39,7 +39,7 @@ module TaintModels {
}
module AstTest {
private import semmle.code.cpp.dataflow.old.TaintTracking
private import semmle.code.cpp.dataflow.TaintTracking
private import semmle.code.cpp.models.interfaces.Taint
/** Common data flow configuration to be used by tests. */

View File

@@ -1,4 +1,4 @@
import semmle.code.cpp.dataflow.old.internal.FlowVar
import semmle.code.cpp.dataflow.internal.FlowVar
from Variable var, VariableAccess va
where FlowVar_internal::mayBeUsedUninitialized(var, va)

View File

@@ -1 +1 @@
import semmle.code.cpp.dataflow.old.internal.DataFlowImplConsistency::Consistency
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency