Merge pull request #21020 from hvitved/shared/source-sink-provenance-prio

Shared: Prefer source/sink models with manual provenance over generated
This commit is contained in:
Tom Hvitved
2025-12-12 16:01:06 +01:00
committed by GitHub
7 changed files with 187 additions and 217 deletions

View File

@@ -60,7 +60,7 @@ private module DispatchImpl {
not (
// Only use summarized callables with generated summaries in case
// the static call target is not in the source code.
// Note that if applyGeneratedModel holds it implies that there doesn't
// Note that if `applyGeneratedModel` holds it implies that there doesn't
// exist a manual model.
exists(Callable staticTarget | staticTarget = call.getCallee().getSourceDeclaration() |
staticTarget.fromSource() and not staticTarget.isStub()

View File

@@ -445,7 +445,15 @@ module RustDataFlow implements InputSig<Location> {
or
exists(SummarizedCallable sc, Function staticTarget |
staticTarget = getStaticTargetExt(c) and
sc = result.asSummarizedCallable()
sc = result.asSummarizedCallable() and
// Only use summarized callables with generated summaries in case
// the static call target is not in the source code.
// Note that if `applyGeneratedModel` holds it implies that there doesn't
// exist a manual model.
not (
staticTarget.fromSource() and
sc.applyGeneratedModel()
)
|
sc = staticTarget
or

View File

@@ -10,57 +10,43 @@ models
| 9 | Source: <tokio::fs::read_dir::DirEntry>::file_name; ReturnValue; file |
| 10 | Source: <tokio::fs::read_dir::DirEntry>::path; ReturnValue; file |
| 11 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 12 | Source: std::fs::read; ReturnValue; file |
| 13 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 14 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 15 | Source: std::fs::read_to_string; ReturnValue; file |
| 16 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 17 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 18 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 19 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 20 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 21 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 22 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint |
| 23 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint |
| 24 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 25 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 26 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 27 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 28 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 38 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 39 | Summary: <std::path::PathBuf>::as_path; Argument[self]; ReturnValue; value |
| 12 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 13 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 14 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 15 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 16 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 17 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 19 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 20 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint |
| 21 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint |
| 22 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 23 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 24 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 25 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 26 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 36 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 37 | Summary: <std::path::PathBuf>::as_path; Argument[self]; ReturnValue; value |
edges
| test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | |
| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:43 | ...::read [Ok] | provenance | Src:MaD:11 |
| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) | provenance | Src:MaD:12 MaD:12 |
| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 |
| test.rs:12:31:12:43 | ...::read [Ok] | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | MaD:12 |
| test.rs:12:31:12:55 | ...::read(...) | test.rs:12:13:12:18 | buffer | provenance | |
| test.rs:12:31:12:55 | ...::read(...) [Ok] | test.rs:12:31:12:56 | TryExpr | provenance | |
| test.rs:12:31:12:56 | TryExpr | test.rs:12:13:12:18 | buffer | provenance | |
| test.rs:17:13:17:18 | buffer | test.rs:18:14:18:19 | buffer | provenance | |
| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:38 | ...::read [Ok] | provenance | Src:MaD:11 |
| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:50 | ...::read(...) | provenance | Src:MaD:12 MaD:12 |
| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | Src:MaD:11 |
| test.rs:17:31:17:38 | ...::read [Ok] | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | MaD:12 |
| test.rs:17:31:17:50 | ...::read(...) | test.rs:17:13:17:18 | buffer | provenance | |
| test.rs:17:31:17:50 | ...::read(...) [Ok] | test.rs:17:31:17:51 | TryExpr | provenance | |
| test.rs:17:31:17:51 | TryExpr | test.rs:17:13:17:18 | buffer | provenance | |
| test.rs:22:13:22:18 | buffer | test.rs:23:14:23:19 | buffer | provenance | |
| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:39 | ...::read_to_string [Ok] | provenance | Src:MaD:14 |
| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) | provenance | Src:MaD:15 MaD:15 |
| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:14 |
| test.rs:22:22:22:39 | ...::read_to_string [Ok] | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | MaD:15 |
| test.rs:22:22:22:51 | ...::read_to_string(...) | test.rs:22:13:22:18 | buffer | provenance | |
| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:13 |
| test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | |
| test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | |
| test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | |
@@ -68,43 +54,41 @@ edges
| test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | |
| test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | |
| test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 |
| test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:20 |
| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:20 |
| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:39 |
| test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:18 |
| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 |
| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:37 |
| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | |
| test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | |
| test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | |
| test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 |
| test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:20 |
| test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:18 |
| test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | |
| test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:13 |
| test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 |
| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | |
| test.rs:65:22:65:50 | TryExpr | test.rs:65:13:65:18 | target | provenance | |
| test.rs:74:13:74:18 | buffer | test.rs:75:14:75:19 | buffer | provenance | |
| test.rs:74:31:74:45 | ...::read | test.rs:74:31:74:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:16 |
| test.rs:74:31:74:45 | ...::read | test.rs:74:31:74:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 |
| test.rs:74:31:74:57 | ...::read(...) [future, Ok] | test.rs:74:31:74:63 | await ... [Ok] | provenance | |
| test.rs:74:31:74:63 | await ... [Ok] | test.rs:74:31:74:64 | TryExpr | provenance | |
| test.rs:74:31:74:64 | TryExpr | test.rs:74:13:74:18 | buffer | provenance | |
| test.rs:79:13:79:18 | buffer | test.rs:80:14:80:19 | buffer | provenance | |
| test.rs:79:31:79:45 | ...::read | test.rs:79:31:79:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:16 |
| test.rs:79:31:79:45 | ...::read | test.rs:79:31:79:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 |
| test.rs:79:31:79:57 | ...::read(...) [future, Ok] | test.rs:79:31:79:63 | await ... [Ok] | provenance | |
| test.rs:79:31:79:63 | await ... [Ok] | test.rs:79:31:79:64 | TryExpr | provenance | |
| test.rs:79:31:79:64 | TryExpr | test.rs:79:13:79:18 | buffer | provenance | |
| test.rs:84:13:84:18 | buffer | test.rs:85:14:85:19 | buffer | provenance | |
| test.rs:84:22:84:46 | ...::read_to_string | test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:18 |
| test.rs:84:22:84:46 | ...::read_to_string | test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:16 |
| test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | test.rs:84:22:84:64 | await ... [Ok] | provenance | |
| test.rs:84:22:84:64 | await ... [Ok] | test.rs:84:22:84:65 | TryExpr | provenance | |
| test.rs:84:22:84:65 | TryExpr | test.rs:84:13:84:18 | buffer | provenance | |
| test.rs:90:13:90:16 | path | test.rs:92:14:92:17 | path | provenance | |
| test.rs:90:20:90:31 | entry.path() | test.rs:90:13:90:16 | path | provenance | |
| test.rs:90:26:90:29 | path | test.rs:90:20:90:31 | entry.path() | provenance | Src:MaD:10 MaD:10 |
| test.rs:90:26:90:29 | path | test.rs:90:20:90:31 | entry.path() | provenance | Src:MaD:10 MaD:10 |
| test.rs:91:13:91:21 | file_name | test.rs:93:14:93:22 | file_name | provenance | |
| test.rs:91:25:91:41 | entry.file_name() | test.rs:91:13:91:21 | file_name | provenance | |
| test.rs:91:31:91:39 | file_name | test.rs:91:25:91:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 |
| test.rs:91:31:91:39 | file_name | test.rs:91:25:91:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 |
| test.rs:97:13:97:18 | target | test.rs:98:14:98:19 | target | provenance | |
| test.rs:97:22:97:41 | ...::read_link | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:17 |
| test.rs:97:22:97:41 | ...::read_link | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:15 |
| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | |
| test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | |
| test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | |
@@ -116,45 +100,45 @@ edges
| test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | |
| test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | |
| test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | |
| test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | |
| test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | |
| test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | |
| test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | |
| test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | |
| test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | |
| test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | |
| test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | |
| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | |
| test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | |
| test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | |
| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:21 |
| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:19 |
| test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | |
| test.rs:140:13:140:18 | mut f1 | test.rs:142:22:142:23 | f1 | provenance | |
| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:38 |
| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:36 |
| test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | |
| test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | |
| test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | |
| test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | |
| test.rs:147:13:147:18 | mut f2 | test.rs:149:22:149:23 | f2 | provenance | |
| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:38 |
| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:36 |
| test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | |
| test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | |
| test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | |
| test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | |
| test.rs:154:13:154:18 | mut f3 | test.rs:156:22:156:23 | f3 | provenance | |
| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:38 |
| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:36 |
| test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | |
| test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | |
| test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | |
| test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | |
@@ -167,10 +151,10 @@ edges
| test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | |
| test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | |
| test.rs:166:13:166:22 | mut reader | test.rs:167:9:167:14 | reader | provenance | |
| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:23 |
| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:21 |
| test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | |
| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:22 |
| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:20 |
| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | |
| test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | |
| test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | |
@@ -179,9 +163,9 @@ edges
| test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | |
| test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | |
| test.rs:174:13:174:22 | mut reader | test.rs:175:9:175:14 | reader | provenance | |
| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:28 |
| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:26 |
| test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | |
| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | |
| test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | |
| test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | |
@@ -198,43 +182,43 @@ edges
| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | |
| test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | |
| test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | |
| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | |
| test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | |
| test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | |
| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:35 |
| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:33 |
| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | |
| test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | |
| test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | |
| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:36 |
| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:34 |
| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | |
| test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | |
| test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | |
| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:31 |
| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | |
| test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | |
| test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | |
| test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | |
| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:37 |
| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:35 |
| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | |
| test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | |
| test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | |
| test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | |
| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:33 |
| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:31 |
| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | |
| test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | |
| test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | |
| test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | |
| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:32 |
| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:30 |
| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | |
| test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | |
| test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | |
| test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | |
| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:34 |
| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:32 |
| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | |
| test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | |
| test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | |
| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:30 |
| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | |
| test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | |
| test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | |
@@ -243,7 +227,7 @@ edges
| test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | |
| test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | |
| test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 |
| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | |
| test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | |
| test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | |
@@ -252,7 +236,7 @@ edges
| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | |
| test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | |
| test.rs:262:20:262:63 | TryExpr | test.rs:262:9:262:16 | mut file | provenance | |
| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 |
| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:17 |
| test.rs:266:32:266:42 | [post] &mut buffer [&ref] | test.rs:266:37:266:42 | [post] buffer | provenance | |
| test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | |
| test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | |
@@ -261,32 +245,23 @@ edges
| test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | |
| test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | |
| test.rs:273:56:273:59 | open | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 |
| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 |
| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:17 |
| test.rs:275:30:275:40 | [post] &mut buffer [&ref] | test.rs:275:35:275:40 | [post] buffer | provenance | |
| test.rs:275:35:275:40 | [post] buffer | test.rs:276:15:276:20 | buffer | provenance | |
| test.rs:276:15:276:20 | buffer | test.rs:276:14:276:20 | &buffer | provenance | |
nodes
| test.rs:12:13:12:18 | buffer | semmle.label | buffer |
| test.rs:12:31:12:43 | ...::read | semmle.label | ...::read |
| test.rs:12:31:12:43 | ...::read | semmle.label | ...::read |
| test.rs:12:31:12:43 | ...::read [Ok] | semmle.label | ...::read [Ok] |
| test.rs:12:31:12:55 | ...::read(...) | semmle.label | ...::read(...) |
| test.rs:12:31:12:55 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] |
| test.rs:12:31:12:56 | TryExpr | semmle.label | TryExpr |
| test.rs:13:14:13:19 | buffer | semmle.label | buffer |
| test.rs:17:13:17:18 | buffer | semmle.label | buffer |
| test.rs:17:31:17:38 | ...::read | semmle.label | ...::read |
| test.rs:17:31:17:38 | ...::read | semmle.label | ...::read |
| test.rs:17:31:17:38 | ...::read [Ok] | semmle.label | ...::read [Ok] |
| test.rs:17:31:17:50 | ...::read(...) | semmle.label | ...::read(...) |
| test.rs:17:31:17:50 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] |
| test.rs:17:31:17:51 | TryExpr | semmle.label | TryExpr |
| test.rs:18:14:18:19 | buffer | semmle.label | buffer |
| test.rs:22:13:22:18 | buffer | semmle.label | buffer |
| test.rs:22:22:22:39 | ...::read_to_string | semmle.label | ...::read_to_string |
| test.rs:22:22:22:39 | ...::read_to_string | semmle.label | ...::read_to_string |
| test.rs:22:22:22:39 | ...::read_to_string [Ok] | semmle.label | ...::read_to_string [Ok] |
| test.rs:22:22:22:51 | ...::read_to_string(...) | semmle.label | ...::read_to_string(...) |
| test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] |
| test.rs:22:22:22:52 | TryExpr | semmle.label | TryExpr |
| test.rs:23:14:23:19 | buffer | semmle.label | buffer |
@@ -331,11 +306,9 @@ nodes
| test.rs:90:13:90:16 | path | semmle.label | path |
| test.rs:90:20:90:31 | entry.path() | semmle.label | entry.path() |
| test.rs:90:26:90:29 | path | semmle.label | path |
| test.rs:90:26:90:29 | path | semmle.label | path |
| test.rs:91:13:91:21 | file_name | semmle.label | file_name |
| test.rs:91:25:91:41 | entry.file_name() | semmle.label | entry.file_name() |
| test.rs:91:31:91:39 | file_name | semmle.label | file_name |
| test.rs:91:31:91:39 | file_name | semmle.label | file_name |
| test.rs:92:14:92:17 | path | semmle.label | path |
| test.rs:93:14:93:22 | file_name | semmle.label | file_name |
| test.rs:97:13:97:18 | target | semmle.label | target |
@@ -515,10 +488,7 @@ subpaths
testFailures
#select
| test.rs:13:14:13:19 | buffer | test.rs:12:31:12:43 | ...::read | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:43 | ...::read | ...::read |
| test.rs:13:14:13:19 | buffer | test.rs:12:31:12:43 | ...::read | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:43 | ...::read | ...::read |
| test.rs:18:14:18:19 | buffer | test.rs:17:31:17:38 | ...::read | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:38 | ...::read | ...::read |
| test.rs:18:14:18:19 | buffer | test.rs:17:31:17:38 | ...::read | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:38 | ...::read | ...::read |
| test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string |
| test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string |
| test.rs:30:14:30:25 | path.clone() | test.rs:29:22:29:25 | path | test.rs:30:14:30:25 | path.clone() | $@ | test.rs:29:22:29:25 | path | path |
| test.rs:31:14:31:35 | ... .as_path() | test.rs:29:22:29:25 | path | test.rs:31:14:31:35 | ... .as_path() | $@ | test.rs:29:22:29:25 | path | path |
@@ -530,8 +500,6 @@ testFailures
| test.rs:80:14:80:19 | buffer | test.rs:79:31:79:45 | ...::read | test.rs:80:14:80:19 | buffer | $@ | test.rs:79:31:79:45 | ...::read | ...::read |
| test.rs:85:14:85:19 | buffer | test.rs:84:22:84:46 | ...::read_to_string | test.rs:85:14:85:19 | buffer | $@ | test.rs:84:22:84:46 | ...::read_to_string | ...::read_to_string |
| test.rs:92:14:92:17 | path | test.rs:90:26:90:29 | path | test.rs:92:14:92:17 | path | $@ | test.rs:90:26:90:29 | path | path |
| test.rs:92:14:92:17 | path | test.rs:90:26:90:29 | path | test.rs:92:14:92:17 | path | $@ | test.rs:90:26:90:29 | path | path |
| test.rs:93:14:93:22 | file_name | test.rs:91:31:91:39 | file_name | test.rs:93:14:93:22 | file_name | $@ | test.rs:91:31:91:39 | file_name | file_name |
| test.rs:93:14:93:22 | file_name | test.rs:91:31:91:39 | file_name | test.rs:93:14:93:22 | file_name | $@ | test.rs:91:31:91:39 | file_name | file_name |
| test.rs:98:14:98:19 | target | test.rs:97:22:97:41 | ...::read_link | test.rs:98:14:98:19 | target | $@ | test.rs:97:22:97:41 | ...::read_link | ...::read_link |
| test.rs:112:14:112:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:112:14:112:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open |

View File

@@ -1,8 +1,5 @@
| test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:26:18:26:29 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:29:22:29:25 | path | Flow source 'FileSource' of type file (DEFAULT). |
@@ -15,8 +12,6 @@
| test.rs:79:31:79:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:84:22:84:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:90:26:90:29 | path | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:90:26:90:29 | path | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:91:31:91:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:91:31:91:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:97:22:97:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). |
| test.rs:107:20:107:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). |

View File

@@ -49,118 +49,117 @@
| test_logging.rs:223:13:223:28 | ...::assert_failed | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:13:223:28 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:223:52:223:59 | password | password |
| test_logging.rs:226:13:226:28 | ...::assert_failed | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:13:226:28 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:226:52:226:59 | password | password |
| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password |
| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password |
| test_logging.rs:242:10:242:14 | write | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:10:242:14 | write | This operation writes $@ to a log file. | test_logging.rs:242:42:242:49 | password | password |
| test_logging.rs:245:10:245:18 | write_all | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:10:245:18 | write_all | This operation writes $@ to a log file. | test_logging.rs:245:46:245:53 | password | password |
| test_logging.rs:248:9:248:13 | write | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:9:248:13 | write | This operation writes $@ to a log file. | test_logging.rs:248:41:248:48 | password | password |
| test_logging.rs:251:9:251:13 | write | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:9:251:13 | write | This operation writes $@ to a log file. | test_logging.rs:251:41:251:48 | password | password |
edges
| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | |
| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | |
| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | |
| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | |
| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | |
| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:8 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:8 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | |
| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | |
| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | |
| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | |
| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | |
| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | |
| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config |
| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | |
| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:8 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:8 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | |
| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:8 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:8 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:8 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config |
| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | |
| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | |
| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config |
| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | |
| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | |
| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | |
| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:10 | ...::log | provenance | MaD:12 Sink:MaD:12 Sink:MaD:12 |
| test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | |
| test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | |
| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | |
| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | |
| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config |
| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | |
| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | |
| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | |
| test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | |
| test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config |
| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | |
| test_logging.rs:96:14:96:49 | ... + ... | test_logging.rs:96:9:96:10 | m2 | provenance | |
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:18 |
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 |
| test_logging.rs:96:41:96:49 | &password [&ref] | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 |
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:16 |
| test_logging.rs:96:41:96:49 | &password [&ref] | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:16 |
| test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config |
| test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password [&ref] | provenance | |
| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | |
| test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:22:99:45 | { ... } | provenance | |
| test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | |
| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | |
| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | |
| test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | |
| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | |
| test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | |
| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:10 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:10 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | |
| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | |
| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | provenance | |
| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:9 | ...::log | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | provenance | |
| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:1 Sink:MaD:1 |
| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:1 Sink:MaD:1 |
@@ -168,8 +167,8 @@ edges
| test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | |
| test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:42:176:78 | { ... } | provenance | |
| test_logging.rs:176:42:176:78 | ...::must_use(...) | test_logging.rs:176:34:176:79 | MacroExpr | provenance | |
| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | |
| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 |
| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 |
@@ -177,93 +176,84 @@ edges
| test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | |
| test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:44:180:80 | { ... } | provenance | |
| test_logging.rs:180:44:180:80 | ...::must_use(...) | test_logging.rs:180:36:180:81 | MacroExpr | provenance | |
| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | |
| test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | |
| test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | |
| test_logging.rs:183:51:183:59 | password2 | test_logging.rs:183:51:183:67 | password2.clone() | provenance | MaD:16 |
| test_logging.rs:183:51:183:59 | password2 | test_logging.rs:183:51:183:67 | password2.clone() | provenance | MaD:15 |
| test_logging.rs:183:51:183:67 | password2.clone() | test_logging.rs:183:47:183:68 | Err(...) [Err] | provenance | |
| test_logging.rs:184:13:184:23 | err_result2 [Err] | test_logging.rs:184:25:184:34 | log_expect | provenance | MaD:4 Sink:MaD:4 |
| test_logging.rs:187:9:187:19 | err_result3 [Err] | test_logging.rs:188:13:188:23 | err_result3 [Err] | provenance | |
| test_logging.rs:187:47:187:60 | Err(...) [Err] | test_logging.rs:187:9:187:19 | err_result3 [Err] | provenance | |
| test_logging.rs:187:51:187:59 | password2 | test_logging.rs:187:47:187:60 | Err(...) [Err] | provenance | |
| test_logging.rs:188:13:188:23 | err_result3 [Err] | test_logging.rs:188:25:188:34 | log_unwrap | provenance | MaD:5 Sink:MaD:5 |
| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:10 | ...::_print | provenance | MaD:15 Sink:MaD:15 |
| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:10 | ...::_print | provenance | MaD:14 Sink:MaD:14 |
| test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | provenance | |
| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:12 | ...::_print | provenance | MaD:15 Sink:MaD:15 |
| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:12 | ...::_print | provenance | MaD:14 Sink:MaD:14 |
| test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | provenance | |
| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:11 | ...::_eprint | provenance | MaD:14 Sink:MaD:14 |
| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:11 | ...::_eprint | provenance | MaD:13 Sink:MaD:13 |
| test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | provenance | |
| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:13 | ...::_eprint | provenance | MaD:14 Sink:MaD:14 |
| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:13 | ...::_eprint | provenance | MaD:13 Sink:MaD:13 |
| test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | provenance | |
| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:18 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:18 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | provenance | |
| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:17 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:17 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | provenance | |
| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:26 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:26 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | provenance | |
| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:24 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:24 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | |
| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:19 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:19 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | |
| test_logging.rs:214:13:214:22 | ...::assert_failed [Some] | test_logging.rs:214:13:214:22 | ...::assert_failed | provenance | Sink:MaD:9 |
| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:22 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:22 | ...::assert_failed [Some] | provenance | MaD:10 |
| test_logging.rs:214:30:214:53 | MacroExpr | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | MacroExpr | provenance | |
| test_logging.rs:217:13:217:22 | ...::assert_failed [Some] | test_logging.rs:217:13:217:22 | ...::assert_failed | provenance | Sink:MaD:9 |
| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:22 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:22 | ...::assert_failed [Some] | provenance | MaD:10 |
| test_logging.rs:217:30:217:53 | MacroExpr | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | MacroExpr | provenance | |
| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:25 | ...::panic_fmt | provenance | MaD:11 Sink:MaD:11 |
| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:25 | ...::panic_fmt | provenance | MaD:10 Sink:MaD:10 |
| test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | |
| test_logging.rs:223:13:223:28 | ...::assert_failed [Some] | test_logging.rs:223:13:223:28 | ...::assert_failed | provenance | Sink:MaD:9 |
| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:28 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:28 | ...::assert_failed [Some] | provenance | MaD:10 |
| test_logging.rs:223:36:223:59 | MacroExpr | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | MacroExpr | provenance | |
| test_logging.rs:226:13:226:28 | ...::assert_failed [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed | provenance | Sink:MaD:9 |
| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed | provenance | MaD:9 Sink:MaD:9 |
| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed [Some] | provenance | MaD:10 |
| test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | |
| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:20 |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:19 |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | |
| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | |
| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | |
| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:18 |
| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | |
| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | |
| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | |
| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:18 |
| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 |
| test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | |
| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | |
| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | |
| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:18 |
| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | |
| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | |
| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | |
| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:18 |
| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 |
| test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | |
| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | |
| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:20 |
| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:21 |
| test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | |
models
| 1 | Sink: <core::option::Option as log_err::LogErrOption>::log_expect; Argument[0]; log-injection |
@@ -275,19 +265,18 @@ models
| 7 | Sink: <std::io::stdio::StdoutLock as std::io::Write>::write; Argument[0]; log-injection |
| 8 | Sink: <std::io::stdio::StdoutLock as std::io::Write>::write_all; Argument[0]; log-injection |
| 9 | Sink: core::panicking::assert_failed; Argument[3].Field[core::option::Option::Some(0)]; log-injection |
| 10 | Sink: core::panicking::assert_failed; Argument[3]; log-injection |
| 11 | Sink: core::panicking::panic_fmt; Argument[0]; log-injection |
| 12 | Sink: log::__private_api::log; Argument[1]; log-injection |
| 13 | Sink: log::__private_api::log; Argument[3]; log-injection |
| 14 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection |
| 15 | Sink: std::io::stdio::_print; Argument[0]; log-injection |
| 16 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 17 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
| 18 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint |
| 19 | Summary: <alloc::string::String>::as_bytes; Argument[self]; ReturnValue; value |
| 20 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value |
| 21 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
| 22 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
| 10 | Sink: core::panicking::panic_fmt; Argument[0]; log-injection |
| 11 | Sink: log::__private_api::log; Argument[1]; log-injection |
| 12 | Sink: log::__private_api::log; Argument[3]; log-injection |
| 13 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection |
| 14 | Sink: std::io::stdio::_print; Argument[0]; log-injection |
| 15 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 16 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
| 17 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint |
| 18 | Summary: <alloc::string::String>::as_bytes; Argument[self]; ReturnValue; value |
| 19 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value |
| 20 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
| 21 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
nodes
| test_logging.rs:42:5:42:10 | ...::log | semmle.label | ...::log |
| test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr |
@@ -474,12 +463,10 @@ nodes
| test_logging.rs:211:28:211:51 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:211:44:211:51 | password | semmle.label | password |
| test_logging.rs:214:13:214:22 | ...::assert_failed | semmle.label | ...::assert_failed |
| test_logging.rs:214:13:214:22 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] |
| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| test_logging.rs:214:30:214:53 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:214:46:214:53 | password | semmle.label | password |
| test_logging.rs:217:13:217:22 | ...::assert_failed | semmle.label | ...::assert_failed |
| test_logging.rs:217:13:217:22 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] |
| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| test_logging.rs:217:30:217:53 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:217:46:217:53 | password | semmle.label | password |
@@ -487,17 +474,14 @@ nodes
| test_logging.rs:220:34:220:57 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:220:50:220:57 | password | semmle.label | password |
| test_logging.rs:223:13:223:28 | ...::assert_failed | semmle.label | ...::assert_failed |
| test_logging.rs:223:13:223:28 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] |
| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| test_logging.rs:223:36:223:59 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:223:52:223:59 | password | semmle.label | password |
| test_logging.rs:226:13:226:28 | ...::assert_failed | semmle.label | ...::assert_failed |
| test_logging.rs:226:13:226:28 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] |
| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] |
| test_logging.rs:226:36:226:59 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:226:52:226:59 | password | semmle.label | password |
| test_logging.rs:229:23:229:28 | expect | semmle.label | expect |
| test_logging.rs:229:23:229:28 | expect | semmle.label | expect |
| test_logging.rs:229:30:229:62 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | semmle.label | ... .as_str() [&ref] |
| test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) |

View File

@@ -10,7 +10,6 @@
| deallocation.rs:95:5:95:31 | ...::write::<...> | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:95:5:95:31 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid |
| deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid |
| deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid |
| deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid |
| deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid |
| deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid |
| deallocation.rs:163:13:163:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:163:13:163:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid |
@@ -27,8 +26,6 @@
| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:26 | ...::null_mut | invalid |
| deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid |
| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid |
| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid |
| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid |
| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid |
edges
| deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 |
@@ -49,7 +46,6 @@ edges
| deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | |
| deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | |
| deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 |
| deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 |
| deallocation.rs:123:23:123:42 | ...::dangling(...) | deallocation.rs:123:6:123:7 | p1 | provenance | |
| deallocation.rs:124:6:124:7 | p2 | deallocation.rs:131:14:131:15 | p2 | provenance | |
| deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | provenance | Src:MaD:5 MaD:5 |
@@ -83,10 +79,8 @@ edges
| deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:219:15:219:34 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 |
| deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | |
| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 |
| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 |
| deallocation.rs:270:27:270:28 | [post] p1 | deallocation.rs:274:15:274:16 | p1 | provenance | |
| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 |
| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 |
| deallocation.rs:336:27:336:29 | [post] ptr | deallocation.rs:342:18:342:20 | ptr | provenance | |
models
| 1 | Sink: core::ptr::read; Argument[0]; pointer-access |
@@ -120,7 +114,6 @@ nodes
| deallocation.rs:115:13:115:18 | my_ptr | semmle.label | my_ptr |
| deallocation.rs:123:6:123:7 | p1 | semmle.label | p1 |
| deallocation.rs:123:23:123:40 | ...::dangling | semmle.label | ...::dangling |
| deallocation.rs:123:23:123:40 | ...::dangling | semmle.label | ...::dangling |
| deallocation.rs:123:23:123:42 | ...::dangling(...) | semmle.label | ...::dangling(...) |
| deallocation.rs:124:6:124:7 | p2 | semmle.label | p2 |
| deallocation.rs:124:21:124:42 | ...::dangling_mut | semmle.label | ...::dangling_mut |
@@ -160,11 +153,9 @@ nodes
| deallocation.rs:219:15:219:34 | ...::null_mut(...) | semmle.label | ...::null_mut(...) |
| deallocation.rs:226:13:226:21 | const_ptr | semmle.label | const_ptr |
| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place |
| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place |
| deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 |
| deallocation.rs:274:15:274:16 | p1 | semmle.label | p1 |
| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place |
| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place |
| deallocation.rs:336:27:336:29 | [post] ptr | semmle.label | [post] ptr |
| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr |
subpaths

View File

@@ -662,6 +662,30 @@ module Make<
unsupportedCallable(callable, _, _, _)
}
private predicate isRelevantSource(
SourceElement e, string output, string kind, Provenance provenance, string model
) {
e.isSource(output, kind, provenance, model) and
(
provenance.isManual()
or
provenance.isGenerated() and
not exists(Provenance p | p.isManual() and e.isSource(_, kind, p, _))
)
}
private predicate isRelevantSink(
SinkElement e, string input, string kind, Provenance provenance, string model
) {
e.isSink(input, kind, provenance, model) and
(
provenance.isManual()
or
provenance.isGenerated() and
not exists(Provenance p | p.isManual() and e.isSink(_, kind, p, _))
)
}
private predicate summarySpec(string spec) {
exists(SummarizedCallable c |
c.propagatesFlow(spec, _, _, _)
@@ -669,9 +693,9 @@ module Make<
c.propagatesFlow(_, spec, _, _)
)
or
any(SourceElement s).isSource(spec, _, _, _)
isRelevantSource(_, spec, _, _, _)
or
any(SinkElement s).isSink(spec, _, _, _)
isRelevantSink(_, spec, _, _, _)
}
import AccessPathSyntax::AccessPath<summarySpec/1>
@@ -1034,7 +1058,7 @@ module Make<
SourceElement source, SummaryComponentStack s, string kind, string model
) {
exists(string outSpec |
source.isSource(outSpec, kind, _, model) and
isRelevantSource(source, outSpec, kind, _, model) and
External::interpretSpec(outSpec, s)
)
}
@@ -1057,7 +1081,7 @@ module Make<
SinkElement sink, SummaryComponentStack s, string kind, string model
) {
exists(string inSpec |
sink.isSink(inSpec, kind, _, model) and
isRelevantSink(sink, inSpec, kind, _, model) and
External::interpretSpec(inSpec, s)
)
}