Skip to content

Commit 3b14af4

Browse files
committed
wip3
1 parent e820cdf commit 3b14af4

File tree

16 files changed

+382
-402
lines changed

16 files changed

+382
-402
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ private predicate summaryModelRelevant(
143143
isExact = true
144144
or
145145
isExact = false and
146-
not summaryModel(f, _, _, _, provenance, true, _)
146+
not summaryModel(f, _, _, _, provenance, true, _) and
147+
not f.fromSource()
147148
)
148149
)
149150
}

rust/ql/lib/codeql/rust/frameworks/rustls.model.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ extensions:
99
extensible: summaryModel
1010
data:
1111
- ["<futures_rustls::TlsConnector>::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
12-
- ["<rustls::conn::ConnectionCommon>::reader", "Argument[self]", "ReturnValue", "taint", "manual"]
12+
- ["<rustls::conn::ConnectionCommon>::reader", "Argument[self].Reference", "ReturnValue", "taint", "manual"]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ extensions:
66
# Builtin deref
77
- ["<& as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"]
88
- ["<&mut as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"]
9-
- ["<_ as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue.Reference", "taint", "hq-generated"]
9+
- ["<_ as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"]
1010
# Index
1111
- ["<_ as core::ops::index::Index>::index", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"]
1212
- ["<_ as core::ops::index::IndexMut>::index_mut", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"]

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

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ models
22
| 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
33
| 2 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint |
44
| 3 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
5-
| 4 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
6-
| 5 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
7-
| 6 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
8-
| 7 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
9-
| 8 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
5+
| 4 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
6+
| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
7+
| 6 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
8+
| 7 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
9+
| 8 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
1010
| 9 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
1111
| 10 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
1212
| 11 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
@@ -44,8 +44,8 @@ edges
4444
| main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | |
4545
| main.rs:115:9:115:9 | i [Box(0)] | main.rs:116:11:116:11 | i [Box(0)] | provenance | |
4646
| main.rs:115:13:115:31 | ...::new(...) [Box(0)] | main.rs:115:9:115:9 | i [Box(0)] | provenance | |
47-
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:6 |
48-
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:5 |
47+
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:7 |
48+
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:6 |
4949
| main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | |
5050
| main.rs:123:13:123:26 | TupleExpr [tuple.0] | main.rs:123:9:123:9 | a [tuple.0] | provenance | |
5151
| main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | |
@@ -221,13 +221,13 @@ edges
221221
| main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | |
222222
| main.rs:430:23:430:32 | source(...) | main.rs:430:16:430:33 | [...] [element] | provenance | |
223223
| main.rs:431:9:431:10 | n1 | main.rs:432:10:432:11 | n1 | provenance | |
224-
| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:4 |
224+
| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:5 |
225225
| main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 | provenance | |
226226
| main.rs:434:9:434:12 | arr2 [element] | main.rs:435:14:435:17 | arr2 [element] | provenance | |
227227
| main.rs:434:16:434:31 | [...; 10] [element] | main.rs:434:9:434:12 | arr2 [element] | provenance | |
228228
| main.rs:434:17:434:26 | source(...) | main.rs:434:16:434:31 | [...; 10] [element] | provenance | |
229229
| main.rs:435:9:435:10 | n2 | main.rs:436:10:436:11 | n2 | provenance | |
230-
| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:4 |
230+
| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:5 |
231231
| main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 | provenance | |
232232
| main.rs:444:9:444:12 | arr1 [element] | main.rs:445:15:445:18 | arr1 [element] | provenance | |
233233
| main.rs:444:16:444:33 | [...] [element] | main.rs:444:9:444:12 | arr1 [element] | provenance | |
@@ -248,9 +248,9 @@ edges
248248
| main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:473:10:473:16 | mut_arr [element] | provenance | |
249249
| main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:11 | [post] mut_arr [element] | provenance | |
250250
| main.rs:471:9:471:9 | d | main.rs:472:10:472:10 | d | provenance | |
251-
| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:4 |
251+
| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:5 |
252252
| main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d | provenance | |
253-
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:4 |
253+
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:5 |
254254
| main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | |
255255
| main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | |
256256
| main.rs:505:9:505:9 | a | main.rs:506:13:506:13 | a | provenance | |
@@ -262,24 +262,26 @@ edges
262262
| main.rs:506:13:506:13 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:2 |
263263
| main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b | provenance | |
264264
| main.rs:507:9:507:9 | c | main.rs:512:10:512:10 | c | provenance | |
265-
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:7 |
265+
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:4 |
266+
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:8 |
266267
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:18 |
267268
| main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c | provenance | |
268269
| main.rs:508:9:508:9 | d | main.rs:513:10:513:10 | d | provenance | |
269-
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:7 |
270+
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:4 |
271+
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:8 |
270272
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:18 |
271273
| main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d | provenance | |
272274
| main.rs:517:9:517:10 | vs [element] | main.rs:519:10:519:11 | vs [element] | provenance | |
273275
| main.rs:517:9:517:10 | vs [element] | main.rs:523:14:523:15 | vs [element] | provenance | |
274276
| main.rs:517:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | |
275277
| main.rs:517:15:517:24 | source(...) | main.rs:517:14:517:34 | [...] [element] | provenance | |
276-
| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:4 |
278+
| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:5 |
277279
| main.rs:523:9:523:9 | v | main.rs:524:14:524:14 | v | provenance | |
278280
| main.rs:523:14:523:15 | vs [element] | main.rs:523:9:523:9 | v | provenance | |
279281
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | |
280282
| main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | |
281283
| main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | |
282-
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:4 |
284+
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:5 |
283285
| main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | |
284286
| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | |
285287
| main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | |
@@ -298,7 +300,6 @@ edges
298300
| main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | |
299301
| main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | |
300302
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:3 |
301-
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:8 |
302303
nodes
303304
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
304305
| main.rs:23:9:23:9 | s | semmle.label | s |

0 commit comments

Comments
 (0)