Skip to content

Commit 049fab4

Browse files
committed
Rust: Remove taint steps
1 parent c1e2197 commit 049fab4

File tree

9 files changed

+17
-143
lines changed

9 files changed

+17
-143
lines changed

rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ module RustTaintTracking implements InputSig<Location, RustDataFlow> {
4646
RustDataFlow::readStep(pred, cs, succ) and
4747
cs.getContent() instanceof ArrayElementContent
4848
)
49-
or
50-
pred.asExpr() = succ.asExpr().(RefExprCfgNode).getExpr()
5149
)
5250
or
5351
FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(Node::FlowSummaryNode).getSummaryNode(),

rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@ extensions:
55
data:
66
# Option
77
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
8-
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self]", "ReturnValue", "taint", "manual"]
98
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
109
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
1110
# Result
1211
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
13-
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self]", "ReturnValue", "taint", "manual"]
1412
- ["lang:core", "<crate::result::Result>::unwrap_or", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
1513
- ["lang:core", "<crate::result::Result>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
16-
- ["lang:core", "<crate::result::Result>::unwrap_or", "Argument[self]", "ReturnValue", "taint", "manual"]
1714
# String
1815
- ["lang:alloc", "<crate::string::String>::as_str", "Argument[self]", "ReturnValue", "taint", "manual"]

rust/ql/test/library-tests/dataflow/sources/test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ fn test_env_vars() {
1212
let var2 = std::env::var_os("PATH").unwrap(); // $ Alert[rust/summary/taint-sources]
1313

1414
sink(var1); // $ MISSING: hasTaintFlow
15-
sink(var2); // $ hasTaintFlow
15+
sink(var2); // $ MISSING: hasTaintFlow
1616

1717
for (key, value) in std::env::vars() { // $ Alert[rust/summary/taint-sources]
1818
sink(key); // $ MISSING: hasTaintFlow
@@ -61,7 +61,7 @@ async fn test_reqwest() -> Result<(), reqwest::Error> {
6161
sink(remote_string1); // $ MISSING: hasTaintFlow
6262

6363
let remote_string2 = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap(); // $ Alert[rust/summary/taint-sources]
64-
sink(remote_string2); // $ hasTaintFlow
64+
sink(remote_string2); // $ MISSING: hasTaintFlow
6565

6666
let remote_string3 = reqwest::get("http://example.com/").await?.text().await?; // $ Alert[rust/summary/taint-sources]
6767
sink(remote_string3); // $ MISSING: hasTaintFlow
Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
models
22
| 1 | Summary: lang:alloc; <crate::string::String>::as_str; Argument[self]; ReturnValue; taint |
33
edges
4-
| main.rs:20:9:20:9 | s | main.rs:21:9:21:14 | sliced | provenance | |
54
| main.rs:20:9:20:9 | s | main.rs:21:19:21:25 | s[...] | provenance | |
65
| main.rs:20:13:20:22 | source(...) | main.rs:20:9:20:9 | s | provenance | |
7-
| main.rs:21:9:21:14 | sliced | main.rs:22:16:22:21 | sliced | provenance | |
86
| main.rs:21:9:21:14 | sliced [&ref] | main.rs:22:16:22:21 | sliced | provenance | |
97
| main.rs:21:18:21:25 | &... [&ref] | main.rs:21:9:21:14 | sliced [&ref] | provenance | |
108
| main.rs:21:19:21:25 | s[...] | main.rs:21:18:21:25 | &... [&ref] | provenance | |
119
| main.rs:26:9:26:10 | s1 | main.rs:29:9:29:10 | s4 | provenance | |
1210
| main.rs:26:14:26:23 | source(...) | main.rs:26:9:26:10 | s1 | provenance | |
1311
| main.rs:29:9:29:10 | s4 | main.rs:32:10:32:11 | s4 | provenance | |
14-
| main.rs:37:9:37:10 | s1 | main.rs:40:10:40:35 | ... + ... | provenance | |
15-
| main.rs:37:14:37:23 | source(...) | main.rs:37:9:37:10 | s1 | provenance | |
1612
| main.rs:57:9:57:9 | s | main.rs:58:16:58:16 | s | provenance | |
1713
| main.rs:57:13:57:22 | source(...) | main.rs:57:9:57:9 | s | provenance | |
1814
| main.rs:58:16:58:16 | s | main.rs:58:16:58:25 | s.as_str(...) | provenance | MaD:1 |
1915
nodes
2016
| main.rs:20:9:20:9 | s | semmle.label | s |
2117
| main.rs:20:13:20:22 | source(...) | semmle.label | source(...) |
22-
| main.rs:21:9:21:14 | sliced | semmle.label | sliced |
2318
| main.rs:21:9:21:14 | sliced [&ref] | semmle.label | sliced [&ref] |
2419
| main.rs:21:18:21:25 | &... [&ref] | semmle.label | &... [&ref] |
2520
| main.rs:21:19:21:25 | s[...] | semmle.label | s[...] |
@@ -28,9 +23,6 @@ nodes
2823
| main.rs:26:14:26:23 | source(...) | semmle.label | source(...) |
2924
| main.rs:29:9:29:10 | s4 | semmle.label | s4 |
3025
| main.rs:32:10:32:11 | s4 | semmle.label | s4 |
31-
| main.rs:37:9:37:10 | s1 | semmle.label | s1 |
32-
| main.rs:37:14:37:23 | source(...) | semmle.label | source(...) |
33-
| main.rs:40:10:40:35 | ... + ... | semmle.label | ... + ... |
3426
| main.rs:57:9:57:9 | s | semmle.label | s |
3527
| main.rs:57:13:57:22 | source(...) | semmle.label | source(...) |
3628
| main.rs:58:16:58:16 | s | semmle.label | s |
@@ -40,5 +32,4 @@ testFailures
4032
#select
4133
| main.rs:22:16:22:21 | sliced | main.rs:20:13:20:22 | source(...) | main.rs:22:16:22:21 | sliced | $@ | main.rs:20:13:20:22 | source(...) | source(...) |
4234
| main.rs:32:10:32:11 | s4 | main.rs:26:14:26:23 | source(...) | main.rs:32:10:32:11 | s4 | $@ | main.rs:26:14:26:23 | source(...) | source(...) |
43-
| main.rs:40:10:40:35 | ... + ... | main.rs:37:14:37:23 | source(...) | main.rs:40:10:40:35 | ... + ... | $@ | main.rs:37:14:37:23 | source(...) | source(...) |
4435
| main.rs:58:16:58:25 | s.as_str(...) | main.rs:57:13:57:22 | source(...) | main.rs:58:16:58:25 | s.as_str(...) | $@ | main.rs:57:13:57:22 | source(...) | source(...) |

rust/ql/test/library-tests/dataflow/strings/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn string_add_reference() {
3737
let s1 = source(37);
3838
let s2 = "1".to_string();
3939

40-
sink("Hello ".to_string() + &s1); // $ hasTaintFlow=37
40+
sink("Hello ".to_string() + &s1); // $ MISSING: hasTaintFlow=37
4141
sink("Hello ".to_string() + &s2);
4242
}
4343

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<crate::string::String>::as_str | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::<crate::string::String>::as_str | MaD:10 |
2-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap | MaD:2 |
3-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap | MaD:6 |
4-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:9 |
1+
| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<crate::string::String>::as_str | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::<crate::string::String>::as_str | MaD:7 |
52
| file://:0:0:0:0 | [summary param] self in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | MaD:0 |
63
| main.rs:4:5:4:8 | 1000 | main.rs:4:5:4:12 | ... + ... | |
74
| main.rs:4:12:4:12 | i | main.rs:4:5:4:12 | ... + ... | |
@@ -11,7 +8,6 @@
118
| main.rs:23:13:23:13 | a | main.rs:23:13:23:19 | a as u8 | |
129
| main.rs:24:10:24:10 | b | main.rs:24:10:24:17 | b as i64 | |
1310
| main.rs:38:23:38:23 | s | main.rs:38:23:38:29 | s[...] | |
14-
| main.rs:38:23:38:29 | s[...] | main.rs:38:22:38:29 | &... | |
1511
| main.rs:54:14:54:16 | arr | main.rs:54:14:54:19 | arr[1] | |
1612
| main.rs:64:24:64:24 | s | main.rs:64:24:64:27 | s[1] | |
1713
| main.rs:69:9:69:12 | arr2 | main.rs:69:9:69:15 | arr2[1] | |

rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ edges
77
| main.rs:22:9:22:9 | a | main.rs:23:9:23:9 | b | provenance | |
88
| main.rs:22:13:22:22 | source(...) | main.rs:22:9:22:9 | a | provenance | |
99
| main.rs:23:9:23:9 | b | main.rs:24:10:24:17 | b as i64 | provenance | |
10-
| main.rs:37:13:37:13 | s | main.rs:38:13:38:18 | sliced | provenance | |
1110
| main.rs:37:13:37:13 | s | main.rs:38:23:38:29 | s[...] | provenance | |
1211
| main.rs:37:17:37:26 | source(...) | main.rs:37:13:37:13 | s | provenance | |
13-
| main.rs:38:13:38:18 | sliced | main.rs:39:14:39:19 | sliced | provenance | |
1412
| main.rs:38:13:38:18 | sliced [&ref] | main.rs:39:14:39:19 | sliced | provenance | |
1513
| main.rs:38:22:38:29 | &... [&ref] | main.rs:38:13:38:18 | sliced [&ref] | provenance | |
1614
| main.rs:38:23:38:29 | s[...] | main.rs:38:22:38:29 | &... [&ref] | provenance | |
@@ -31,7 +29,6 @@ nodes
3129
| main.rs:24:10:24:17 | b as i64 | semmle.label | b as i64 |
3230
| main.rs:37:13:37:13 | s | semmle.label | s |
3331
| main.rs:37:17:37:26 | source(...) | semmle.label | source(...) |
34-
| main.rs:38:13:38:18 | sliced | semmle.label | sliced |
3532
| main.rs:38:13:38:18 | sliced [&ref] | semmle.label | sliced [&ref] |
3633
| main.rs:38:22:38:29 | &... [&ref] | semmle.label | &... [&ref] |
3734
| main.rs:38:23:38:29 | s[...] | semmle.label | s[...] |

0 commit comments

Comments
 (0)