mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Rust: Use TaintFlow instead of ValueFlow in tests
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
@@ -154,6 +154,13 @@ edges
|
||||
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | provenance | |
|
||||
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:272:14:272:29 | ...::deref(...) [&ref] | provenance | |
|
||||
| main.rs:272:28:272:28 | a [MyInt] | main.rs:272:27:272:28 | &a [&ref, MyInt] | provenance | |
|
||||
| main.rs:275:9:275:9 | a [MyInt] | main.rs:276:14:276:14 | a [MyInt] | provenance | |
|
||||
| main.rs:275:13:275:39 | MyInt {...} [MyInt] | main.rs:275:9:275:9 | a [MyInt] | provenance | |
|
||||
| main.rs:275:28:275:37 | source(...) | main.rs:275:13:275:39 | MyInt {...} [MyInt] | provenance | |
|
||||
| main.rs:276:9:276:9 | c [&ref] | main.rs:277:10:277:10 | c | provenance | |
|
||||
| main.rs:276:13:276:14 | * ... [&ref] | main.rs:276:9:276:9 | c [&ref] | provenance | |
|
||||
| main.rs:276:14:276:14 | a [MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | provenance | |
|
||||
| main.rs:276:14:276:14 | a [MyInt] | main.rs:276:13:276:14 | * ... [&ref] | provenance | |
|
||||
| main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | provenance | |
|
||||
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | provenance | |
|
||||
| main.rs:299:9:299:9 | a [MyInt] | main.rs:301:50:301:50 | a [MyInt] | provenance | |
|
||||
@@ -349,6 +356,13 @@ nodes
|
||||
| main.rs:272:27:272:28 | &a [&ref, MyInt] | semmle.label | &a [&ref, MyInt] |
|
||||
| main.rs:272:28:272:28 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:273:10:273:10 | c | semmle.label | c |
|
||||
| main.rs:275:9:275:9 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:275:13:275:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
|
||||
| main.rs:275:28:275:37 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:276:9:276:9 | c [&ref] | semmle.label | c [&ref] |
|
||||
| main.rs:276:13:276:14 | * ... [&ref] | semmle.label | * ... [&ref] |
|
||||
| main.rs:276:14:276:14 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:277:10:277:10 | c | semmle.label | c |
|
||||
| main.rs:289:18:289:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
|
||||
| main.rs:289:48:291:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
|
||||
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
|
||||
@@ -397,6 +411,7 @@ subpaths
|
||||
| main.rs:252:9:252:9 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] |
|
||||
| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] |
|
||||
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:235:38:237:5 | { ... } [&ref] | main.rs:272:14:272:29 | ...::deref(...) [&ref] |
|
||||
| main.rs:276:14:276:14 | a [MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:235:38:237:5 | { ... } [&ref] | main.rs:276:13:276:14 | * ... [&ref] |
|
||||
| main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] |
|
||||
| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] |
|
||||
testFailures
|
||||
@@ -424,6 +439,7 @@ testFailures
|
||||
| main.rs:255:10:255:16 | d.value | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:16 | d.value | $@ | main.rs:252:28:252:36 | source(...) | source(...) |
|
||||
| main.rs:262:10:262:16 | a.value | main.rs:259:28:259:37 | source(...) | main.rs:262:10:262:16 | a.value | $@ | main.rs:259:28:259:37 | source(...) | source(...) |
|
||||
| main.rs:273:10:273:10 | c | main.rs:270:28:270:37 | source(...) | main.rs:273:10:273:10 | c | $@ | main.rs:270:28:270:37 | source(...) | source(...) |
|
||||
| main.rs:277:10:277:10 | c | main.rs:275:28:275:37 | source(...) | main.rs:277:10:277:10 | c | $@ | main.rs:275:28:275:37 | source(...) | source(...) |
|
||||
| main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) |
|
||||
| main.rs:307:10:307:10 | c | main.rs:305:28:305:37 | source(...) | main.rs:307:10:307:10 | c | $@ | main.rs:305:28:305:37 | source(...) | source(...) |
|
||||
| main.rs:317:10:317:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:317:10:317:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) |
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
models
|
||||
| 1 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value |
|
||||
| 2 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 3 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
|
||||
| 4 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 5 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
|
||||
| 6 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 7 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 8 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 9 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
|
||||
| 10 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self]; ReturnValue; taint |
|
||||
| 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
|
||||
| 3 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Reference; ReturnValue.Reference; value |
|
||||
| 4 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value |
|
||||
| 5 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
|
||||
| 6 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 7 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
|
||||
| 8 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
|
||||
| 10 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 11 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 12 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 13 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
|
||||
| 14 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 15 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 16 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
edges
|
||||
| main.rs:23:9:23:9 | s | main.rs:24:10:24:10 | s | provenance | |
|
||||
| main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | |
|
||||
@@ -34,10 +40,12 @@ edges
|
||||
| main.rs:81:9:81:13 | mut l | main.rs:82:5:82:5 | l | provenance | |
|
||||
| main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l | provenance | |
|
||||
| main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | |
|
||||
| main.rs:115:9:115:9 | i [&ref] | main.rs:116:10:116:11 | * ... | provenance | MaD:3 |
|
||||
| main.rs:115:9:115:9 | i [&ref] | main.rs:116:11:116:11 | i [&ref] | provenance | |
|
||||
| main.rs:115:13:115:31 | ...::new(...) [&ref] | main.rs:115:9:115:9 | i [&ref] | provenance | |
|
||||
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [&ref] | provenance | MaD:1 |
|
||||
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [&ref] | provenance | MaD:4 |
|
||||
| main.rs:116:11:116:11 | i [&ref] | main.rs:116:10:116:11 | * ... | provenance | |
|
||||
| main.rs:116:11:116:11 | i [&ref] | main.rs:116:10:116:11 | * ... | provenance | MaD:3 |
|
||||
| main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | |
|
||||
| main.rs:123:13:123:26 | TupleExpr [tuple.0] | main.rs:123:9:123:9 | a [tuple.0] | provenance | |
|
||||
| main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | |
|
||||
@@ -117,32 +125,32 @@ edges
|
||||
| main.rs:267:12:267:18 | Some(...) [Some] | main.rs:267:17:267:17 | n | provenance | |
|
||||
| main.rs:267:17:267:17 | n | main.rs:269:18:269:18 | n | provenance | |
|
||||
| main.rs:267:17:267:17 | n | main.rs:273:14:273:14 | n | provenance | |
|
||||
| main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:2 |
|
||||
| main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:6 |
|
||||
| main.rs:278:14:278:29 | Some(...) [Some] | main.rs:278:9:278:10 | s1 [Some] | provenance | |
|
||||
| main.rs:278:19:278:28 | source(...) | main.rs:278:14:278:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:4 |
|
||||
| main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:8 |
|
||||
| main.rs:283:14:283:29 | Some(...) [Some] | main.rs:283:9:283:10 | s1 [Some] | provenance | |
|
||||
| main.rs:283:19:283:28 | source(...) | main.rs:283:14:283:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:3 |
|
||||
| main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:6 |
|
||||
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:7 |
|
||||
| main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:10 |
|
||||
| main.rs:291:14:291:29 | Some(...) [Some] | main.rs:291:9:291:10 | s1 [Some] | provenance | |
|
||||
| main.rs:291:19:291:28 | source(...) | main.rs:291:14:291:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:5 |
|
||||
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:9 |
|
||||
| main.rs:299:9:299:10 | s1 [Some] | main.rs:301:14:301:15 | s1 [Some] | provenance | |
|
||||
| main.rs:299:14:299:29 | Some(...) [Some] | main.rs:299:9:299:10 | s1 [Some] | provenance | |
|
||||
| main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:301:9:301:10 | i1 | main.rs:302:10:302:11 | i1 | provenance | |
|
||||
| main.rs:301:14:301:15 | s1 [Some] | main.rs:301:14:301:16 | TryExpr | provenance | |
|
||||
| main.rs:301:14:301:16 | TryExpr | main.rs:301:9:301:10 | i1 | provenance | |
|
||||
| main.rs:308:9:308:10 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:10 |
|
||||
| main.rs:308:9:308:10 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:14 |
|
||||
| main.rs:308:32:308:45 | Ok(...) [Ok] | main.rs:308:9:308:10 | r1 [Ok] | provenance | |
|
||||
| main.rs:308:35:308:44 | source(...) | main.rs:308:32:308:45 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:2 |
|
||||
| main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:6 |
|
||||
| main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | |
|
||||
| main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:7 |
|
||||
| main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:11 |
|
||||
| main.rs:314:32:314:46 | Err(...) [Err] | main.rs:314:9:314:10 | r2 [Err] | provenance | |
|
||||
| main.rs:314:36:314:45 | source(...) | main.rs:314:32:314:46 | Err(...) [Err] | provenance | |
|
||||
| main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:2 |
|
||||
| main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:6 |
|
||||
| main.rs:316:28:316:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | |
|
||||
| main.rs:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | |
|
||||
| main.rs:322:32:322:45 | Ok(...) [Ok] | main.rs:322:9:322:10 | s1 [Ok] | provenance | |
|
||||
@@ -150,10 +158,10 @@ edges
|
||||
| main.rs:325:9:325:10 | i1 | main.rs:327:10:327:11 | i1 | provenance | |
|
||||
| main.rs:325:14:325:15 | s1 [Ok] | main.rs:325:14:325:16 | TryExpr | provenance | |
|
||||
| main.rs:325:14:325:16 | TryExpr | main.rs:325:9:325:10 | i1 | provenance | |
|
||||
| main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:8 |
|
||||
| main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:12 |
|
||||
| main.rs:335:32:335:45 | Ok(...) [Ok] | main.rs:335:9:335:10 | s1 [Ok] | provenance | |
|
||||
| main.rs:335:35:335:44 | source(...) | main.rs:335:32:335:45 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:9 |
|
||||
| main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:13 |
|
||||
| main.rs:339:32:339:46 | Err(...) [Err] | main.rs:339:9:339:10 | s2 [Err] | provenance | |
|
||||
| main.rs:339:36:339:45 | source(...) | main.rs:339:32:339:46 | Err(...) [Err] | provenance | |
|
||||
| main.rs:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | |
|
||||
@@ -236,8 +244,19 @@ edges
|
||||
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | |
|
||||
| main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | |
|
||||
| main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | |
|
||||
| main.rs:505:9:505:9 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:1 |
|
||||
| main.rs:505:9:505:9 | a | main.rs:510:10:510:10 | a | provenance | |
|
||||
| main.rs:505:13:505:22 | source(...) | main.rs:505:9:505:9 | a | provenance | |
|
||||
| main.rs:506:9:506:9 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:16 |
|
||||
| main.rs:506:9:506:9 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:16 |
|
||||
| main.rs:506:9:506:9 | b | main.rs:511:17:511:17 | b | provenance | |
|
||||
| main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b | provenance | |
|
||||
| main.rs:507:9:507:9 | c | main.rs:512:10:512:10 | c | provenance | |
|
||||
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:15 |
|
||||
| main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c | provenance | |
|
||||
| main.rs:508:9:508:9 | d | main.rs:513:10:513:10 | d | provenance | |
|
||||
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:15 |
|
||||
| main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d | provenance | |
|
||||
| main.rs:517:9:517:10 | vs [element] | main.rs:519:10:519:11 | vs [element] | provenance | |
|
||||
| main.rs:517:9:517:10 | vs [element] | main.rs:523:14:523:15 | vs [element] | provenance | |
|
||||
| main.rs:517:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | |
|
||||
@@ -251,12 +270,23 @@ edges
|
||||
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | |
|
||||
| main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | |
|
||||
| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | |
|
||||
| main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | |
|
||||
| main.rs:555:13:555:22 | source(...) | main.rs:555:9:555:9 | b | provenance | |
|
||||
| main.rs:556:9:556:9 | c | main.rs:557:18:557:18 | c | provenance | |
|
||||
| main.rs:556:13:556:22 | source(...) | main.rs:556:9:556:9 | c | provenance | |
|
||||
| main.rs:557:9:557:13 | c_ref [&ref] | main.rs:561:14:561:18 | c_ref | provenance | |
|
||||
| main.rs:557:9:557:13 | c_ref [&ref] | main.rs:562:11:562:15 | c_ref [&ref] | provenance | |
|
||||
| main.rs:557:17:557:18 | &c [&ref] | main.rs:557:9:557:13 | c_ref [&ref] | provenance | |
|
||||
| main.rs:557:18:557:18 | c | main.rs:557:17:557:18 | &c [&ref] | provenance | |
|
||||
| main.rs:560:15:560:15 | b | main.rs:560:14:560:15 | &b | provenance | |
|
||||
| main.rs:562:11:562:15 | c_ref [&ref] | main.rs:562:10:562:15 | * ... | provenance | |
|
||||
| main.rs:566:9:566:9 | a | main.rs:568:10:568:17 | a as i64 | provenance | |
|
||||
| main.rs:566:18:566:27 | source(...) | main.rs:566:9:566:9 | a | provenance | |
|
||||
| main.rs:572:9:572:9 | b | main.rs:574:10:574:17 | b as i64 | provenance | |
|
||||
| main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | |
|
||||
| main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | |
|
||||
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:2 |
|
||||
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:5 |
|
||||
nodes
|
||||
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:23:9:23:9 | s | semmle.label | s |
|
||||
@@ -530,7 +560,18 @@ nodes
|
||||
| main.rs:497:10:497:10 | s | semmle.label | s |
|
||||
| main.rs:505:9:505:9 | a | semmle.label | a |
|
||||
| main.rs:505:13:505:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:506:9:506:9 | b | semmle.label | b |
|
||||
| main.rs:506:13:506:25 | a.to_string() | semmle.label | a.to_string() |
|
||||
| main.rs:507:9:507:9 | c | semmle.label | c |
|
||||
| main.rs:507:13:507:28 | b.parse() [Ok] | semmle.label | b.parse() [Ok] |
|
||||
| main.rs:507:13:507:37 | ... .unwrap() | semmle.label | ... .unwrap() |
|
||||
| main.rs:508:9:508:9 | d | semmle.label | d |
|
||||
| main.rs:508:18:508:26 | b.parse() [Ok] | semmle.label | b.parse() [Ok] |
|
||||
| main.rs:508:18:508:35 | ... .unwrap() | semmle.label | ... .unwrap() |
|
||||
| main.rs:510:10:510:10 | a | semmle.label | a |
|
||||
| main.rs:511:17:511:17 | b | semmle.label | b |
|
||||
| main.rs:512:10:512:10 | c | semmle.label | c |
|
||||
| main.rs:513:10:513:10 | d | semmle.label | d |
|
||||
| main.rs:517:9:517:10 | vs [element] | semmle.label | vs [element] |
|
||||
| main.rs:517:14:517:34 | [...] [element] | semmle.label | [...] [element] |
|
||||
| main.rs:517:15:517:24 | source(...) | semmle.label | source(...) |
|
||||
@@ -546,14 +587,27 @@ nodes
|
||||
| main.rs:544:10:544:18 | vs_mut[0] | semmle.label | vs_mut[0] |
|
||||
| main.rs:554:9:554:9 | a | semmle.label | a |
|
||||
| main.rs:554:13:554:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:555:9:555:9 | b | semmle.label | b |
|
||||
| main.rs:555:13:555:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:556:9:556:9 | c | semmle.label | c |
|
||||
| main.rs:556:13:556:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:557:9:557:13 | c_ref [&ref] | semmle.label | c_ref [&ref] |
|
||||
| main.rs:557:17:557:18 | &c [&ref] | semmle.label | &c [&ref] |
|
||||
| main.rs:557:18:557:18 | c | semmle.label | c |
|
||||
| main.rs:559:10:559:10 | a | semmle.label | a |
|
||||
| main.rs:560:14:560:15 | &b | semmle.label | &b |
|
||||
| main.rs:560:15:560:15 | b | semmle.label | b |
|
||||
| main.rs:561:14:561:18 | c_ref | semmle.label | c_ref |
|
||||
| main.rs:562:10:562:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:562:11:562:15 | c_ref [&ref] | semmle.label | c_ref [&ref] |
|
||||
| main.rs:566:9:566:9 | a | semmle.label | a |
|
||||
| main.rs:566:18:566:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:568:10:568:17 | a as i64 | semmle.label | a as i64 |
|
||||
| main.rs:572:9:572:9 | b | semmle.label | b |
|
||||
| main.rs:572:18:572:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:574:10:574:17 | b as i64 | semmle.label | b as i64 |
|
||||
| main.rs:576:10:576:21 | ...::from(...) | semmle.label | ...::from(...) |
|
||||
| main.rs:576:20:576:20 | b | semmle.label | b |
|
||||
subpaths
|
||||
testFailures
|
||||
#select
|
||||
@@ -615,8 +669,16 @@ testFailures
|
||||
| main.rs:473:10:473:19 | mut_arr[0] | main.rs:470:18:470:27 | source(...) | main.rs:473:10:473:19 | mut_arr[0] | $@ | main.rs:470:18:470:27 | source(...) | source(...) |
|
||||
| main.rs:497:10:497:10 | s | main.rs:496:25:496:26 | source(...) | main.rs:497:10:497:10 | s | $@ | main.rs:496:25:496:26 | source(...) | source(...) |
|
||||
| main.rs:510:10:510:10 | a | main.rs:505:13:505:22 | source(...) | main.rs:510:10:510:10 | a | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
|
||||
| main.rs:511:17:511:17 | b | main.rs:505:13:505:22 | source(...) | main.rs:511:17:511:17 | b | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
|
||||
| main.rs:512:10:512:10 | c | main.rs:505:13:505:22 | source(...) | main.rs:512:10:512:10 | c | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
|
||||
| main.rs:513:10:513:10 | d | main.rs:505:13:505:22 | source(...) | main.rs:513:10:513:10 | d | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
|
||||
| main.rs:519:10:519:14 | vs[0] | main.rs:517:15:517:24 | source(...) | main.rs:519:10:519:14 | vs[0] | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
|
||||
| main.rs:524:14:524:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:524:14:524:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
|
||||
| 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(...) |
|
||||
| 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(...) |
|
||||
| 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(...) |
|
||||
| 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(...) |
|
||||
| main.rs:562:10:562:15 | * ... | main.rs:556:13:556:22 | source(...) | main.rs:562:10:562:15 | * ... | $@ | main.rs:556:13:556:22 | source(...) | source(...) |
|
||||
| main.rs:568:10:568:17 | a as i64 | main.rs:566:18:566:27 | source(...) | main.rs:568:10:568:17 | a as i64 | $@ | main.rs:566:18:566:27 | source(...) | source(...) |
|
||||
| main.rs:574:10:574:17 | b as i64 | main.rs:572:18:572:27 | source(...) | main.rs:574:10:574:17 | b as i64 | $@ | main.rs:572:18:572:27 | source(...) | source(...) |
|
||||
| main.rs:576:10:576:21 | ...::from(...) | main.rs:572:18:572:27 | source(...) | main.rs:576:10:576:21 | ...::from(...) | $@ | main.rs:572:18:572:27 | source(...) | source(...) |
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
@@ -1,40 +1,44 @@
|
||||
models
|
||||
| 1 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 2 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue; value |
|
||||
| 3 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value |
|
||||
| 4 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Reference; value |
|
||||
| 5 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 6 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 7 | Summary: <core::option::Option>::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value |
|
||||
| 8 | Summary: <core::pin::Pin>::into_inner; Argument[0]; ReturnValue; value |
|
||||
| 9 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[0]; ReturnValue; value |
|
||||
| 10 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value |
|
||||
| 11 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue; value |
|
||||
| 12 | Summary: <core::pin::Pin>::new_unchecked; Argument[0].Reference; ReturnValue; value |
|
||||
| 13 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 14 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value |
|
||||
| 15 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value |
|
||||
| 2 | Summary: <alloc::boxed::Box>::into_pin; Argument[0].Reference; ReturnValue; value |
|
||||
| 3 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue; value |
|
||||
| 4 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value |
|
||||
| 5 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Reference; value |
|
||||
| 6 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 7 | Summary: <core::option::Option>::map_or; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 8 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value |
|
||||
| 10 | Summary: <core::pin::Pin>::into_inner; Argument[0]; ReturnValue; value |
|
||||
| 11 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[0]; ReturnValue; value |
|
||||
| 12 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value |
|
||||
| 13 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue; value |
|
||||
| 14 | Summary: <core::pin::Pin>::new_unchecked; Argument[0].Reference; ReturnValue; value |
|
||||
| 15 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 16 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value |
|
||||
| 17 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value |
|
||||
edges
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:6 |
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:8 |
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | main.rs:12:9:12:9 | a [Some] | provenance | |
|
||||
| main.rs:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | |
|
||||
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:6 |
|
||||
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:8 |
|
||||
| main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | MaD:1 |
|
||||
| main.rs:14:13:14:21 | a.clone() [Some] | main.rs:14:9:14:9 | b [Some] | provenance | |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:13 |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:15 |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | |
|
||||
| main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | |
|
||||
| main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:13 |
|
||||
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:15 |
|
||||
| main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | MaD:1 |
|
||||
| main.rs:21:13:21:21 | a.clone() [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:1 |
|
||||
| main.rs:26:9:26:9 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:6 |
|
||||
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | |
|
||||
| main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:1 |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:5 |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:6 |
|
||||
| main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | |
|
||||
| main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:44:26:44:29 | self [Wrapper] | provenance | |
|
||||
| main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | provenance | |
|
||||
@@ -58,34 +62,53 @@ edges
|
||||
| main.rs:66:22:66:31 | source(...) | main.rs:66:17:66:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:67:13:67:13 | z [Some, tuple.1] | main.rs:68:15:68:15 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | main.rs:67:13:67:13 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:7 |
|
||||
| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:9 |
|
||||
| main.rs:68:15:68:15 | z [Some, tuple.1] | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | provenance | |
|
||||
| main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | main.rs:69:18:69:23 | TuplePat [tuple.1] | provenance | |
|
||||
| main.rs:69:18:69:23 | TuplePat [tuple.1] | main.rs:69:22:69:22 | m | provenance | |
|
||||
| main.rs:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | |
|
||||
| main.rs:79:13:79:13 | b | main.rs:80:14:80:14 | b | provenance | |
|
||||
| main.rs:79:17:79:47 | a.map_or(...) | main.rs:79:13:79:13 | b | provenance | |
|
||||
| main.rs:79:33:79:46 | ... + ... | main.rs:79:17:79:47 | a.map_or(...) | provenance | MaD:7 |
|
||||
| main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | |
|
||||
| main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | |
|
||||
| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:15 |
|
||||
| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:14 |
|
||||
| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:17 |
|
||||
| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:16 |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:109:34:109:34 | i | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:110:33:110:33 | i | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:112:24:112:27 | mut pinned | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:113:14:113:14 | i | provenance | |
|
||||
| main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | |
|
||||
| main.rs:109:13:109:20 | mut pin1 | main.rs:114:14:114:18 | * ... | provenance | |
|
||||
| main.rs:109:13:109:20 | mut pin1 | main.rs:115:31:115:34 | pin1 | provenance | |
|
||||
| main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:114:15:114:18 | pin1 [&ref] | provenance | |
|
||||
| main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:115:31:115:34 | pin1 [&ref] | provenance | |
|
||||
| main.rs:109:24:109:35 | ...::new(...) | main.rs:109:13:109:20 | mut pin1 | provenance | |
|
||||
| main.rs:109:24:109:35 | ...::new(...) [&ref] | main.rs:109:13:109:20 | mut pin1 [&ref] | provenance | |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:11 |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) | provenance | MaD:12 |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:13 |
|
||||
| main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | |
|
||||
| main.rs:110:13:110:20 | mut pin2 [&ref] | main.rs:116:15:116:18 | pin2 [&ref] | provenance | |
|
||||
| main.rs:110:24:110:34 | ...::pin(...) [&ref] | main.rs:110:13:110:20 | mut pin2 [&ref] | provenance | |
|
||||
| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [&ref] | provenance | MaD:4 |
|
||||
| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [&ref] | provenance | MaD:5 |
|
||||
| main.rs:111:13:111:20 | mut pin3 | main.rs:117:14:117:18 | * ... | provenance | |
|
||||
| main.rs:111:13:111:20 | mut pin3 [&ref] | main.rs:117:15:117:18 | pin3 [&ref] | provenance | |
|
||||
| main.rs:111:24:111:49 | ...::into_pin(...) | main.rs:111:13:111:20 | mut pin3 | provenance | |
|
||||
| main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | main.rs:111:13:111:20 | mut pin3 [&ref] | provenance | |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | provenance | MaD:2 |
|
||||
| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [&ref] | provenance | MaD:3 |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) | provenance | MaD:2 |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | provenance | MaD:3 |
|
||||
| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [&ref] | provenance | MaD:4 |
|
||||
| main.rs:112:13:112:20 | mut pin4 | main.rs:118:14:118:18 | * ... | provenance | |
|
||||
| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) | provenance | MaD:14 |
|
||||
| main.rs:112:24:112:27 | ...::new_unchecked(...) | main.rs:112:13:112:20 | mut pin4 | provenance | |
|
||||
| main.rs:112:24:112:27 | mut pinned | main.rs:112:24:112:27 | pinned | provenance | |
|
||||
| main.rs:112:24:112:27 | pinned | main.rs:112:24:112:27 | &mut pinned [&ref] | provenance | |
|
||||
| main.rs:114:15:114:18 | pin1 [&ref] | main.rs:114:14:114:18 | * ... | provenance | |
|
||||
| main.rs:115:15:115:35 | ...::into_inner(...) | main.rs:115:14:115:35 | * ... | provenance | |
|
||||
| main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | main.rs:115:14:115:35 | * ... | provenance | |
|
||||
| main.rs:115:31:115:34 | pin1 [&ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:8 |
|
||||
| main.rs:115:31:115:34 | pin1 | main.rs:115:15:115:35 | ...::into_inner(...) | provenance | MaD:10 |
|
||||
| main.rs:115:31:115:34 | pin1 [&ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:10 |
|
||||
| main.rs:116:15:116:18 | pin2 [&ref] | main.rs:116:14:116:18 | * ... | provenance | |
|
||||
| main.rs:117:15:117:18 | pin3 [&ref] | main.rs:117:14:117:18 | * ... | provenance | |
|
||||
| main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:123:34:123:35 | ms [MyStruct] | provenance | |
|
||||
@@ -94,20 +117,20 @@ edges
|
||||
| main.rs:122:38:122:47 | source(...) | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | provenance | |
|
||||
| main.rs:123:13:123:20 | mut pin1 [MyStruct] | main.rs:129:30:129:33 | pin1 [MyStruct] | provenance | |
|
||||
| main.rs:123:24:123:36 | ...::new(...) [MyStruct] | main.rs:123:13:123:20 | mut pin1 [MyStruct] | provenance | |
|
||||
| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [MyStruct] | provenance | MaD:10 |
|
||||
| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [MyStruct] | provenance | MaD:12 |
|
||||
| main.rs:123:34:123:35 | ms [MyStruct] | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | provenance | |
|
||||
| main.rs:127:14:127:15 | ms [MyStruct] | main.rs:127:14:127:19 | ms.val | provenance | |
|
||||
| main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | |
|
||||
| main.rs:129:30:129:33 | pin1 [MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | provenance | MaD:8 |
|
||||
| main.rs:129:30:129:33 | pin1 [MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | provenance | MaD:10 |
|
||||
| main.rs:136:13:136:18 | mut ms [MyStruct] | main.rs:137:44:137:45 | ms [MyStruct] | provenance | |
|
||||
| main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | main.rs:136:13:136:18 | mut ms [MyStruct] | provenance | |
|
||||
| main.rs:136:38:136:47 | source(...) | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | provenance | |
|
||||
| main.rs:137:13:137:20 | mut pin5 [MyStruct] | main.rs:139:40:139:43 | pin5 [MyStruct] | provenance | |
|
||||
| main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | main.rs:137:13:137:20 | mut pin5 [MyStruct] | provenance | |
|
||||
| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | provenance | MaD:12 |
|
||||
| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | provenance | MaD:14 |
|
||||
| main.rs:137:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | |
|
||||
| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | |
|
||||
| main.rs:139:40:139:43 | pin5 [MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | provenance | MaD:9 |
|
||||
| main.rs:139:40:139:43 | pin5 [MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | provenance | MaD:11 |
|
||||
nodes
|
||||
| main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
@@ -161,33 +184,50 @@ nodes
|
||||
| main.rs:69:18:69:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
|
||||
| main.rs:69:22:69:22 | m | semmle.label | m |
|
||||
| main.rs:71:22:71:22 | m | semmle.label | m |
|
||||
| main.rs:79:13:79:13 | b | semmle.label | b |
|
||||
| main.rs:79:17:79:47 | a.map_or(...) | semmle.label | a.map_or(...) |
|
||||
| main.rs:79:33:79:46 | ... + ... | semmle.label | ... + ... |
|
||||
| main.rs:79:37:79:46 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:80:14:80:14 | b | semmle.label | b |
|
||||
| main.rs:92:29:92:29 | [post] y [&ref] | semmle.label | [post] y [&ref] |
|
||||
| main.rs:92:32:92:41 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:93:18:93:34 | ...::read(...) | semmle.label | ...::read(...) |
|
||||
| main.rs:93:33:93:33 | y [&ref] | semmle.label | y [&ref] |
|
||||
| main.rs:108:13:108:17 | mut i | semmle.label | mut i |
|
||||
| main.rs:108:21:108:30 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:109:13:109:20 | mut pin1 | semmle.label | mut pin1 |
|
||||
| main.rs:109:13:109:20 | mut pin1 [&ref] | semmle.label | mut pin1 [&ref] |
|
||||
| main.rs:109:24:109:35 | ...::new(...) | semmle.label | ...::new(...) |
|
||||
| main.rs:109:24:109:35 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | semmle.label | &i [&ref] |
|
||||
| main.rs:109:34:109:34 | i | semmle.label | i |
|
||||
| main.rs:110:13:110:20 | mut pin2 [&ref] | semmle.label | mut pin2 [&ref] |
|
||||
| main.rs:110:24:110:34 | ...::pin(...) [&ref] | semmle.label | ...::pin(...) [&ref] |
|
||||
| main.rs:110:33:110:33 | i | semmle.label | i |
|
||||
| main.rs:111:13:111:20 | mut pin3 | semmle.label | mut pin3 |
|
||||
| main.rs:111:13:111:20 | mut pin3 [&ref] | semmle.label | mut pin3 [&ref] |
|
||||
| main.rs:111:24:111:49 | ...::into_pin(...) | semmle.label | ...::into_pin(...) |
|
||||
| main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | semmle.label | ...::into_pin(...) [&ref] |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
|
||||
| main.rs:111:47:111:47 | i | semmle.label | i |
|
||||
| main.rs:112:13:112:20 | mut pin4 | semmle.label | mut pin4 |
|
||||
| main.rs:112:24:112:27 | &mut pinned [&ref] | semmle.label | &mut pinned [&ref] |
|
||||
| main.rs:112:24:112:27 | ...::new_unchecked(...) | semmle.label | ...::new_unchecked(...) |
|
||||
| main.rs:112:24:112:27 | mut pinned | semmle.label | mut pinned |
|
||||
| main.rs:112:24:112:27 | pinned | semmle.label | pinned |
|
||||
| main.rs:113:14:113:14 | i | semmle.label | i |
|
||||
| main.rs:114:14:114:18 | * ... | semmle.label | * ... |
|
||||
| main.rs:114:15:114:18 | pin1 [&ref] | semmle.label | pin1 [&ref] |
|
||||
| main.rs:115:14:115:35 | * ... | semmle.label | * ... |
|
||||
| main.rs:115:15:115:35 | ...::into_inner(...) | semmle.label | ...::into_inner(...) |
|
||||
| main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | semmle.label | ...::into_inner(...) [&ref] |
|
||||
| main.rs:115:31:115:34 | pin1 | semmle.label | pin1 |
|
||||
| main.rs:115:31:115:34 | pin1 [&ref] | semmle.label | pin1 [&ref] |
|
||||
| main.rs:116:14:116:18 | * ... | semmle.label | * ... |
|
||||
| main.rs:116:15:116:18 | pin2 [&ref] | semmle.label | pin2 [&ref] |
|
||||
| main.rs:117:14:117:18 | * ... | semmle.label | * ... |
|
||||
| main.rs:117:15:117:18 | pin3 [&ref] | semmle.label | pin3 [&ref] |
|
||||
| main.rs:118:14:118:18 | * ... | semmle.label | * ... |
|
||||
| main.rs:122:13:122:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] |
|
||||
| main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] |
|
||||
| main.rs:122:38:122:47 | source(...) | semmle.label | source(...) |
|
||||
@@ -223,12 +263,14 @@ testFailures
|
||||
| main.rs:51:38:51:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:51:38:51:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) |
|
||||
| main.rs:55:38:55:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:55:38:55:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) |
|
||||
| main.rs:71:22:71:22 | m | main.rs:66:22:66:31 | source(...) | main.rs:71:22:71:22 | m | $@ | main.rs:66:22:66:31 | source(...) | source(...) |
|
||||
| main.rs:80:14:80:14 | b | main.rs:79:37:79:46 | source(...) | main.rs:80:14:80:14 | b | $@ | main.rs:79:37:79:46 | source(...) | source(...) |
|
||||
| main.rs:93:18:93:34 | ...::read(...) | main.rs:92:32:92:41 | source(...) | main.rs:93:18:93:34 | ...::read(...) | $@ | main.rs:92:32:92:41 | source(...) | source(...) |
|
||||
| main.rs:113:14:113:14 | i | main.rs:108:21:108:30 | source(...) | main.rs:113:14:113:14 | i | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:114:14:114:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:114:14:114:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:115:14:115:35 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:115:14:115:35 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:116:14:116:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:116:14:116:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:117:14:117:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:117:14:117:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:118:14:118:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:118:14:118:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
|
||||
| main.rs:127:14:127:19 | ms.val | main.rs:122:38:122:47 | source(...) | main.rs:127:14:127:19 | ms.val | $@ | main.rs:122:38:122:47 | source(...) | source(...) |
|
||||
| main.rs:129:14:129:38 | ... .val | main.rs:122:38:122:47 | source(...) | main.rs:129:14:129:38 | ... .val | $@ | main.rs:122:38:122:47 | source(...) | source(...) |
|
||||
| main.rs:139:14:139:48 | ... .val | main.rs:136:38:136:47 | source(...) | main.rs:139:14:139:48 | ... .val | $@ | main.rs:136:38:136:47 | source(...) | source(...) |
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import ValueFlow::PathGraph
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from ValueFlow::PathNode source, ValueFlow::PathNode sink
|
||||
where ValueFlow::flowPath(source, sink)
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
|
||||
Reference in New Issue
Block a user