Skip to content

Commit 1ea1130

Browse files
authored
Merge pull request #15062 from aschackmull/dataflow/deprecate-flowstatestring
Dataflow: Deprecate FlowStateString.
2 parents 16e53d3 + 337e5e4 commit 1ea1130

File tree

39 files changed

+218
-123
lines changed

39 files changed

+218
-123
lines changed

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific::Private
1010
import DataFlowImplSpecific::Public
1111
private import DataFlowImpl
1212
import DataFlowImplCommonPublic
13-
import FlowStateString
13+
deprecated import FlowStateString
1414
private import codeql.util.Unit
1515

1616
/**

java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,44 @@ private import semmle.code.java.dataflow.TaintTracking
66
private import semmle.code.java.frameworks.android.Intent
77
private import semmle.code.java.frameworks.android.PendingIntent
88

9+
private newtype TPendingIntentState =
10+
TMutablePendingIntent() or
11+
TNoState()
12+
13+
/** A flow state for an implicit `PendingIntent` flow. */
14+
class PendingIntentState extends TPendingIntentState {
15+
/** Gets a textual representation of this element. */
16+
abstract string toString();
17+
}
18+
19+
/** A flow state indicating that a mutable `PendingIntent` has been created. */
20+
class MutablePendingIntent extends PendingIntentState, TMutablePendingIntent {
21+
override string toString() { result = "MutablePendingIntent" }
22+
}
23+
24+
/** The initial flow state for an implicit `PendingIntent` flow. */
25+
class NoState extends PendingIntentState, TNoState {
26+
override string toString() { result = "NoState" }
27+
}
28+
929
/** A source for an implicit `PendingIntent` flow. */
1030
abstract class ImplicitPendingIntentSource extends DataFlow::Node {
11-
/** Holds if this source has the specified `state`. */
12-
predicate hasState(DataFlow::FlowState state) { state = "" }
31+
/**
32+
* DEPRECATED: Open-ended flow state is not intended to be part of the extension points.
33+
*
34+
* Holds if this source has the specified `state`.
35+
*/
36+
deprecated predicate hasState(DataFlow::FlowState state) { state = "" }
1337
}
1438

1539
/** A sink that sends an implicit and mutable `PendingIntent` to a third party. */
1640
abstract class ImplicitPendingIntentSink extends DataFlow::Node {
17-
/** Holds if this sink has the specified `state`. */
18-
predicate hasState(DataFlow::FlowState state) { state = "" }
41+
/**
42+
* DEPRECATED: Open-ended flow state is not intended to be part of the extension points.
43+
*
44+
* Holds if this sink has the specified `state`.
45+
*/
46+
deprecated predicate hasState(DataFlow::FlowState state) { state = "" }
1947
}
2048

2149
/**
@@ -32,11 +60,19 @@ class ImplicitPendingIntentAdditionalTaintStep extends Unit {
3260
predicate step(DataFlow::Node node1, DataFlow::Node node2) { none() }
3361

3462
/**
63+
* Holds if the step from `node1` to `node2` creates a mutable `PendingIntent`.
64+
*/
65+
predicate mutablePendingIntentCreation(DataFlow::Node node1, DataFlow::Node node2) { none() }
66+
67+
/**
68+
* DEPRECATED: Open-ended flow state is not intended to be part of the extension points.
69+
* Use `mutablePendingIntentCreation` instead.
70+
*
3571
* Holds if the step from `node1` to `node2` should be considered a taint
3672
* step for flows related to the use of implicit `PendingIntent`s. This step is only applicable
3773
* in `state1` and updates the flow state to `state2`.
3874
*/
39-
predicate step(
75+
deprecated predicate step(
4076
DataFlow::Node node1, DataFlow::FlowState state1, DataFlow::Node node2,
4177
DataFlow::FlowState state2
4278
) {
@@ -66,17 +102,10 @@ private class SendPendingIntent extends ImplicitPendingIntentSink {
66102
or
67103
sinkNode(this, "pending-intents")
68104
}
69-
70-
override predicate hasState(DataFlow::FlowState state) { state = "MutablePendingIntent" }
71105
}
72106

73107
private class MutablePendingIntentFlowStep extends ImplicitPendingIntentAdditionalTaintStep {
74-
override predicate step(
75-
DataFlow::Node node1, DataFlow::FlowState state1, DataFlow::Node node2,
76-
DataFlow::FlowState state2
77-
) {
78-
state1 = "" and
79-
state2 = "MutablePendingIntent" and
108+
override predicate mutablePendingIntentCreation(DataFlow::Node node1, DataFlow::Node node2) {
80109
exists(PendingIntentCreation pic, Argument flagArg |
81110
node1.asExpr() = pic.getIntentArg() and
82111
node2.asExpr() = pic and

java/ql/lib/semmle/code/java/security/ImplicitPendingIntentsQuery.qll

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ deprecated class ImplicitPendingIntentStartConf extends TaintTracking::Configura
6060
* being wrapped in another implicit `Intent` that gets started.
6161
*/
6262
module ImplicitPendingIntentStartConfig implements DataFlow::StateConfigSig {
63-
class FlowState = DataFlow::FlowState;
63+
class FlowState = PendingIntentState;
6464

6565
predicate isSource(DataFlow::Node source, FlowState state) {
66-
source.(ImplicitPendingIntentSource).hasState(state)
66+
source instanceof ImplicitPendingIntentSource and state instanceof NoState
6767
}
6868

6969
predicate isSink(DataFlow::Node sink, FlowState state) {
70-
sink.(ImplicitPendingIntentSink).hasState(state)
70+
sink instanceof ImplicitPendingIntentSink and state instanceof MutablePendingIntent
7171
}
7272

7373
predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof ExplicitIntentSanitizer }
@@ -79,7 +79,9 @@ module ImplicitPendingIntentStartConfig implements DataFlow::StateConfigSig {
7979
predicate isAdditionalFlowStep(
8080
DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2
8181
) {
82-
any(ImplicitPendingIntentAdditionalTaintStep c).step(node1, state1, node2, state2)
82+
any(ImplicitPendingIntentAdditionalTaintStep c).mutablePendingIntentCreation(node1, node2) and
83+
state1 instanceof NoState and
84+
state2 instanceof MutablePendingIntent
8385
}
8486

8587
predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {

0 commit comments

Comments
 (0)