diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll index 0434cc0b7e2..1a8158437bf 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll @@ -14,6 +14,8 @@ import FlowStateString private import codeql.util.Unit /** + * DEPRECATED: Use `Global` and `GlobalWithState` instead. + * * A configuration of interprocedural data flow analysis. This defines * sources, sinks, and any other configurable aspect of the analysis. Each * use of the global data flow library must define its own unique extension @@ -48,7 +50,7 @@ private import codeql.util.Unit * should instead depend on a `DataFlow2::Configuration`, a * `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. */ -abstract class Configuration extends string { +abstract deprecated class Configuration extends string { bindingset[this] Configuration() { any() } @@ -189,7 +191,7 @@ abstract class Configuration extends string { * 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. */ -abstract private class ConfigurationRecursionPrevention extends Configuration { +abstract deprecated private class ConfigurationRecursionPrevention extends Configuration { bindingset[this] ConfigurationRecursionPrevention() { any() } @@ -210,7 +212,7 @@ abstract private class ConfigurationRecursionPrevention extends Configuration { } } -private FlowState relevantState(Configuration config) { +deprecated private FlowState relevantState(Configuration config) { config.isSource(_, result) or config.isSink(_, result) or config.isBarrier(_, result) or @@ -219,17 +221,17 @@ private FlowState relevantState(Configuration config) { } private newtype TConfigState = - TMkConfigState(Configuration config, FlowState state) { + deprecated TMkConfigState(Configuration config, FlowState state) { state = relevantState(config) or state instanceof FlowStateEmpty } -private Configuration getConfig(TConfigState state) { state = TMkConfigState(result, _) } +deprecated private Configuration getConfig(TConfigState state) { state = TMkConfigState(result, _) } -private FlowState getState(TConfigState state) { state = TMkConfigState(_, result) } +deprecated private FlowState getState(TConfigState state) { state = TMkConfigState(_, result) } -private predicate singleConfiguration() { 1 = strictcount(Configuration c) } +deprecated private predicate singleConfiguration() { 1 = strictcount(Configuration c) } -private module Config implements FullStateConfigSig { +deprecated private module Config implements FullStateConfigSig { class FlowState = TConfigState; predicate isSource(Node source, FlowState state) { @@ -296,13 +298,13 @@ private module Config implements FullStateConfigSig { predicate includeHiddenNodes() { any(Configuration config).includeHiddenNodes() } } -private import Impl as I +deprecated private import Impl as I /** * A `Node` augmented with a call context (except for sinks), an access path, and a configuration. * Only those `PathNode`s that are reachable from a source, and which can reach a sink, are generated. */ -class PathNode instanceof I::PathNode { +deprecated class PathNode instanceof I::PathNode { /** Gets a textual representation of this element. */ final string toString() { result = super.toString() } @@ -329,10 +331,10 @@ class PathNode instanceof I::PathNode { final Node getNode() { result = super.getNode() } /** Gets the `FlowState` of this node. */ - final FlowState getState() { result = getState(super.getState()) } + deprecated final FlowState getState() { result = getState(super.getState()) } /** Gets the associated configuration. */ - final Configuration getConfiguration() { result = getConfig(super.getState()) } + deprecated final Configuration getConfiguration() { result = getConfig(super.getState()) } /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { result = super.getASuccessor() } @@ -347,9 +349,9 @@ class PathNode instanceof I::PathNode { final predicate isSinkGroup(string group) { super.isSinkGroup(group) } } -module PathGraph = I::PathGraph; +deprecated module PathGraph = I::PathGraph; -private predicate hasFlow(Node source, Node sink, Configuration config) { +deprecated private predicate hasFlow(Node source, Node sink, Configuration config) { exists(PathNode source0, PathNode sink0 | hasFlowPath(source0, sink0, config) and source0.getNode() = source and @@ -357,10 +359,10 @@ private predicate hasFlow(Node source, Node sink, Configuration config) { ) } -private predicate hasFlowPath(PathNode source, PathNode sink, Configuration config) { +deprecated private predicate hasFlowPath(PathNode source, PathNode sink, Configuration config) { I::flowPath(source, sink) and source.getConfiguration() = config } -private predicate hasFlowTo(Node sink, Configuration config) { hasFlow(_, sink, config) } +deprecated private predicate hasFlowTo(Node sink, Configuration config) { hasFlow(_, sink, config) } -predicate flowsTo = hasFlow/3; +deprecated predicate flowsTo = hasFlow/3; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/tainttracking1/TaintTrackingImpl.qll index cadfe492c99..a83d238918d 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/tainttracking1/TaintTrackingImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/tainttracking1/TaintTrackingImpl.qll @@ -1,4 +1,6 @@ /** + * DEPRECATED: Use `Global` and `GlobalWithState` instead. + * * Provides an implementation of global (interprocedural) taint tracking. * This file re-exports the local (intraprocedural) taint-tracking analysis * from `TaintTrackingParameter::Public` and adds a global analysis, mainly @@ -12,6 +14,8 @@ import TaintTrackingParameter::Public private import TaintTrackingParameter::Private /** + * DEPRECATED: Use `Global` and `GlobalWithState` instead. + * * A configuration of interprocedural taint tracking analysis. This defines * sources, sinks, and any other configurable aspect of the analysis. Each * use of the taint tracking library must define its own unique extension of @@ -51,7 +55,7 @@ private import TaintTrackingParameter::Private * Instead, the dependency should go to a `TaintTracking2::Configuration` or a * `DataFlow2::Configuration`, `DataFlow3::Configuration`, etc. */ -abstract class Configuration extends DataFlow::Configuration { +abstract deprecated class Configuration extends DataFlow::Configuration { bindingset[this] Configuration() { any() }