Skip to content

Commit ea2458f

Browse files
committed
Rust: Add missing model (and remove duplicate model)
1 parent 1f8b466 commit ea2458f

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ extensions:
100100
- ["<core::iter::traits::iterator::Iterator>::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
101101
- ["<core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
102102
- ["<core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
103-
- ["<core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
104103
- ["<core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"]
105104
- ["<core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"]
106105
- ["<core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"]
@@ -143,6 +142,7 @@ extensions:
143142
# Slice
144143
- ["<[]>::get", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "manual"]
145144
- ["<[]>::iter", "Argument[self].Reference.Element", "ReturnValue.Element.Reference", "value", "manual"]
145+
- ["<[]>::iter_mut", "Argument[self].Reference.Element", "ReturnValue.Element.Reference", "value", "manual"]
146146
- addsTo:
147147
pack: codeql/rust-all
148148
extensible: sourceModel

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ edges
313313
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | |
314314
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:545:11:545:16 | vs_mut [element] | provenance | |
315315
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:546:11:546:16 | vs_mut [element] | provenance | |
316+
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:548:19:548:24 | vs_mut [element] | provenance | |
316317
| main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | |
317318
| main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | |
318319
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:14 |
@@ -324,6 +325,10 @@ edges
324325
| main.rs:546:11:546:23 | vs_mut.iter() [element, &ref] | main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | provenance | MaD:13 |
325326
| main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | main.rs:546:11:546:39 | ... .unwrap() [&ref] | provenance | MaD:15 |
326327
| main.rs:546:11:546:39 | ... .unwrap() [&ref] | main.rs:546:10:546:39 | * ... | provenance | MaD:1 |
328+
| main.rs:548:9:548:14 | &mut ... [&ref] | main.rs:548:14:548:14 | v | provenance | |
329+
| main.rs:548:14:548:14 | v | main.rs:549:14:549:14 | v | provenance | |
330+
| main.rs:548:19:548:24 | vs_mut [element] | main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | provenance | MaD:2 |
331+
| main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | main.rs:548:9:548:14 | &mut ... [&ref] | provenance | |
327332
| main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | |
328333
| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | |
329334
| main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | |
@@ -698,6 +703,11 @@ nodes
698703
| main.rs:546:11:546:23 | vs_mut.iter() [element, &ref] | semmle.label | vs_mut.iter() [element, &ref] |
699704
| main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | semmle.label | ... .nth(...) [Some, &ref] |
700705
| main.rs:546:11:546:39 | ... .unwrap() [&ref] | semmle.label | ... .unwrap() [&ref] |
706+
| main.rs:548:9:548:14 | &mut ... [&ref] | semmle.label | &mut ... [&ref] |
707+
| main.rs:548:14:548:14 | v | semmle.label | v |
708+
| main.rs:548:19:548:24 | vs_mut [element] | semmle.label | vs_mut [element] |
709+
| main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | semmle.label | vs_mut.iter_mut() [element, &ref] |
710+
| main.rs:549:14:549:14 | v | semmle.label | v |
701711
| main.rs:554:9:554:9 | a | semmle.label | a |
702712
| main.rs:554:13:554:22 | source(...) | semmle.label | source(...) |
703713
| main.rs:555:9:555:9 | b | semmle.label | b |
@@ -801,6 +811,7 @@ testFailures
801811
| main.rs:544:10:544:18 | vs_mut[0] | main.rs:542:23:542:32 | source(...) | main.rs:544:10:544:18 | vs_mut[0] | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
802812
| main.rs:545:10:545:39 | * ... | main.rs:542:23:542:32 | source(...) | main.rs:545:10:545:39 | * ... | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
803813
| main.rs:546:10:546:39 | * ... | main.rs:542:23:542:32 | source(...) | main.rs:546:10:546:39 | * ... | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
814+
| main.rs:549:14:549:14 | v | main.rs:542:23:542:32 | source(...) | main.rs:549:14:549:14 | v | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
804815
| main.rs:559:10:559:10 | a | main.rs:554:13:554:22 | source(...) | main.rs:559:10:559:10 | a | $@ | main.rs:554:13:554:22 | source(...) | source(...) |
805816
| main.rs:560:14:560:15 | &b | main.rs:555:13:555:22 | source(...) | main.rs:560:14:560:15 | &b | $@ | main.rs:555:13:555:22 | source(...) | source(...) |
806817
| main.rs:561:14:561:18 | c_ref | main.rs:556:13:556:22 | source(...) | main.rs:561:14:561:18 | c_ref | $@ | main.rs:556:13:556:22 | source(...) | source(...) |

‎rust/ql/test/library-tests/dataflow/local/main.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ fn iterators() {
546546
sink(*vs_mut.iter().nth(0).unwrap()); // $ hasValueFlow=92
547547

548548
for &mut v in vs_mut.iter_mut() {
549-
sink(v); // $ MISSING: hasValueFlow=92
549+
sink(v); // $ hasValueFlow=92
550550
}
551551
}
552552

0 commit comments

Comments
 (0)