Rust: Adapt to changes in FlowSummaryImpl

This commit is contained in:
Tom Hvitved
2026-01-12 20:24:34 +01:00
parent b11b091559
commit c4e0dda178
20 changed files with 533 additions and 553 deletions

View File

@@ -17,9 +17,13 @@ module SummarizedCallable {
Range() { any() }
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
string input, string output, boolean preservesValue, Provenance p, boolean isExact,
string model
) {
this.propagatesFlow(input, output, preservesValue) and model = ""
this.propagatesFlow(input, output, preservesValue) and
p = "manual" and
isExact = true and
model = "QL"
}
/**
@@ -31,6 +35,6 @@ module SummarizedCallable {
}
}
final class SummarizedCallable = SummarizedCallable::Range;
class SummarizedCallable = Impl::Public::RelevantSummarizedCallable;
final class Provenance = Impl::Public::Provenance;

View File

@@ -30,6 +30,8 @@ module Input implements InputSig<Location, RustDataFlow> {
class SummarizedCallableBase = Function;
predicate callableFromSource(SummarizedCallableBase c) { c.fromSource() }
abstract private class SourceSinkBase extends AstNode {
/** Gets the associated call. */
abstract Call getCall();

View File

@@ -111,60 +111,38 @@ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) {
)
}
private predicate summaryModel(
Function f, string input, string output, string kind, Provenance provenance, boolean isInherited,
QlBuiltins::ExtensionId madId
) {
exists(string path, Function f0 |
summaryModel(path, input, output, kind, provenance, madId) and
f0.getCanonicalPath() = path
|
f = f0 and
isInherited = false
or
f.implements(f0) and
isInherited = true
)
}
private predicate summaryModelRelevant(
Function f, string input, string output, string kind, Provenance provenance, boolean isInherited,
QlBuiltins::ExtensionId madId
) {
summaryModel(f, input, output, kind, provenance, isInherited, madId) and
// Only apply generated or inherited models to functions in library code and
// when no strictly better model exists
if provenance.isGenerated() or isInherited = true
then
not f.fromSource() and
not exists(Provenance other | summaryModel(f, _, _, _, other, false, _) |
provenance.isGenerated() and other.isManual()
or
provenance = other and isInherited = true
)
else any()
}
private class SummarizedCallableFromModel extends SummarizedCallable::Range {
SummarizedCallableFromModel() { summaryModelRelevant(this, _, _, _, _, _, _) }
string input_;
string output_;
string kind;
Provenance p_;
boolean isExact_;
QlBuiltins::ExtensionId madId;
override predicate hasProvenance(Provenance provenance) {
summaryModelRelevant(this, _, _, _, provenance, _, _)
SummarizedCallableFromModel() {
exists(string path, Function f, Provenance p |
summaryModel(path, input_, output_, kind, p, madId) and
f.getCanonicalPath() = path
|
this = f and isExact_ = true and p_ = p
or
this.implements(f) and
isExact_ = false and
// making inherited models generated means that source code definitions and
// exact generated models take precedence
p_ = "hq-generated"
)
}
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
string input, string output, boolean preservesValue, Provenance p, boolean isExact, string model
) {
exists(string kind, QlBuiltins::ExtensionId madId |
summaryModelRelevant(this, input, output, kind, _, _, madId) and
model = "MaD:" + madId.toString()
|
kind = "value" and
preservesValue = true
or
kind = "taint" and
preservesValue = false
)
input = input_ and
output = output_ and
(if kind = "value" then preservesValue = true else preservesValue = false) and
p = p_ and
isExact = isExact_ and
model = "MaD:" + madId.toString()
}
}
@@ -211,7 +189,7 @@ private module Debug {
private predicate relevantManualModel(SummarizedCallableImpl sc, string can) {
exists(Provenance manual |
can = sc.getCanonicalPath() and
summaryModelRelevant(sc, _, _, _, manual, false, _) and
sc.(SummarizedCallableFromModel).propagatesFlow(_, _, _, manual, true, _) and
manual.isManual()
)
}
@@ -221,7 +199,7 @@ private module Debug {
) {
exists(RustDataFlow::ParameterPosition pos, TypeMention tm |
relevantManualModel(sc, can) and
sc.propagatesFlow(input, _, _, _) and
sc.propagatesFlow(input, _, _, _, _, _) and
input.head() = SummaryComponent::argument(pos) and
p = pos.getParameterIn(sc.getParamList()) and
tm.getType() instanceof RefType and
@@ -238,7 +216,7 @@ private module Debug {
) {
exists(TypeMention tm |
relevantManualModel(sc, can) and
sc.propagatesFlow(_, output, _, _) and
sc.propagatesFlow(_, output, _, _, _, _) and
tm.getType() instanceof RefType and
output.head() = SummaryComponent::return(_) and
not output.tail().head() =

View File

@@ -41,11 +41,13 @@ private class ReflexiveFrom extends SummarizedCallable::Range {
}
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
string input, string output, boolean preservesValue, Provenance p, boolean isExact, string model
) {
input = "Argument[0]" and
output = "ReturnValue" and
preservesValue = true and
p = "manual" and
isExact = true and
model = "ReflexiveFrom"
}
}

View File

@@ -12,9 +12,9 @@ extensions:
- ["<_ as core::ops::index::IndexMut>::index_mut", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"]
# Unary operators
- ["<_ as core::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as core::ops::arith::Neg>::neg", "Argument[self].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "taint", "manual"]
- ["<core::num::wrapping::Wrapping as core::ops::arith::Neg>::neg", "Argument[self].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "taint", "manual"]
- ["<_ as core::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as core::ops::bit::Not>::not", "Argument[self].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "taint", "manual"]
- ["<core::num::wrapping::Wrapping as core::ops::bit::Not>::not", "Argument[self].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "taint", "manual"]
# Arithmetic operators
- ["<_ as core::ops::arith::Add>::add", "Argument[self,0]", "ReturnValue", "taint", "manual"]
- ["<_ as core::ops::arith::Add>::add", "Argument[self,0].Field[core::num::wrapping::Wrapping(0)]", "ReturnValue.Field[core::num::wrapping::Wrapping(0)]", "taint", "manual"]

View File

@@ -5,4 +5,6 @@ extensions:
data:
- ["<std::ffi::os_str::OsStr>::to_str", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"]
- ["<std::ffi::os_str::OsStr>::to_string_lossy", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)]", "taint", "manual"]
- ["<std::ffi::os_str::OsStr>::as_encoded_bytes", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Reference", "taint", "manual"]
- ["<std::ffi::os_str::OsStr>::as_encoded_bytes", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Reference", "taint", "manual"]
# Overwrite generated model
- ["<std::ffi::os_str::OsString as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"]

View File

@@ -86,3 +86,7 @@ extensions:
- ["<std::fs::Metadata>::len", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
- ["<std::fs::Metadata>::modified", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<std::fs::Metadata>::permissions", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
# Overwrite generated models
- ["<std::fs::File as std::io::Read>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::fs::File as std::io::Read>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]

View File

@@ -26,3 +26,18 @@ extensions:
- ["<std::io::stdio::Stdin>::lock", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
- ["<std::io::stdio::Stdin>::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::Split as core::iter::traits::iterator::Iterator>::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"]
# Overwrite generated models
- ["<std::io::stdio::Stdin as std::io::Read>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::Stdin as std::io::Read>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::Stdin as std::io::Read>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::Stdin as std::io::Read>::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinLock as std::io::Read>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinLock as std::io::Read>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinLock as std::io::Read>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinLock as std::io::Read>::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinLock as std::io::BufRead>::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<std::io::stdio::StdinRaw as std::io::Read>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinRaw as std::io::Read>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinRaw as std::io::Read>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::stdio::StdinRaw as std::io::Read>::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<std::io::buffered::bufreader::BufReader as std::io::BufRead>::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]

View File

@@ -1,25 +1,23 @@
models
| 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
| 2 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint |
| 3 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 4 | Summary: <_ as core::convert::Into>::into; Argument[self].Element; ReturnValue.Element; taint |
| 5 | Summary: <_ as core::convert::Into>::into; Argument[self].Reference.Element; ReturnValue.Element; taint |
| 6 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 7 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 8 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
| 9 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
| 10 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 11 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 12 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 13 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 14 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 15 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 16 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 17 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 18 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 19 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
| 20 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 21 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 3 | Summary: <_ as core::convert::Into>::into; Argument[self].Element; ReturnValue.Element; taint |
| 4 | Summary: <_ as core::convert::Into>::into; Argument[self].Reference.Element; ReturnValue.Element; taint |
| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 6 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
| 7 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
| 8 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 9 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 10 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 11 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 12 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 13 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
| 14 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 15 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 16 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 17 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
| 18 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 19 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
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 | |
@@ -47,8 +45,8 @@ edges
| main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | |
| main.rs:115:9:115:9 | i [Box(0)] | main.rs:116:11:116:11 | i [Box(0)] | provenance | |
| main.rs:115:13:115:31 | ...::new(...) [Box(0)] | main.rs:115:9:115:9 | i [Box(0)] | provenance | |
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:9 |
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:8 |
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:7 |
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:6 |
| 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 | |
@@ -131,17 +129,17 @@ edges
| main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:11 | s1 [Some] | provenance | |
| 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:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:12 |
| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:10 |
| main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:11 | s1 [Some] | provenance | |
| 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:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:14 |
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:13 |
| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:12 |
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:11 |
| main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:11 | s1 [Some] | provenance | |
| 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:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:16 |
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:15 |
| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:14 |
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:13 |
| 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 | |
@@ -152,16 +150,16 @@ edges
| 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:12 | o1a [Some] | provenance | |
| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:20 |
| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:18 |
| main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | |
| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:12 |
| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:10 |
| main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:29 | r2 [Err] | provenance | |
| 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:12 | o2b [Some] | provenance | |
| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:17 |
| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:15 |
| main.rs:316:28:316:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | |
| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:12 |
| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:10 |
| 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 | |
| main.rs:322:35:322:44 | source(...) | main.rs:322:32:322:45 | Ok(...) [Ok] | provenance | |
@@ -171,11 +169,11 @@ edges
| main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:11 | s1 [Ok] | provenance | |
| 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:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:18 |
| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:16 |
| main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:11 | s2 [Err] | provenance | |
| 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:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:19 |
| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:17 |
| main.rs:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | |
| main.rs:350:14:350:39 | ...::A(...) [A] | main.rs:350:9:350:10 | s1 [A] | provenance | |
| main.rs:350:29:350:38 | source(...) | main.rs:350:14:350:39 | ...::A(...) [A] | provenance | |
@@ -224,13 +222,13 @@ edges
| main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | |
| main.rs:430:23:430:32 | source(...) | main.rs:430:16:430:33 | [...] [element] | provenance | |
| main.rs:431:9:431:10 | n1 | main.rs:432:10:432:11 | n1 | provenance | |
| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:7 |
| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:5 |
| main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 | provenance | |
| main.rs:434:9:434:12 | arr2 [element] | main.rs:435:14:435:17 | arr2 [element] | provenance | |
| main.rs:434:16:434:31 | [...; 10] [element] | main.rs:434:9:434:12 | arr2 [element] | provenance | |
| main.rs:434:17:434:26 | source(...) | main.rs:434:16:434:31 | [...; 10] [element] | provenance | |
| main.rs:435:9:435:10 | n2 | main.rs:436:10:436:11 | n2 | provenance | |
| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:7 |
| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:5 |
| main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 | provenance | |
| main.rs:444:9:444:12 | arr1 [element] | main.rs:445:15:445:18 | arr1 [element] | provenance | |
| main.rs:444:16:444:33 | [...] [element] | main.rs:444:9:444:12 | arr1 [element] | provenance | |
@@ -251,9 +249,9 @@ edges
| main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:473:10:473:16 | mut_arr [element] | provenance | |
| main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:11 | [post] mut_arr [element] | provenance | |
| main.rs:471:9:471:9 | d | main.rs:472:10:472:10 | d | provenance | |
| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:7 |
| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:5 |
| main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d | provenance | |
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:7 |
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:5 |
| 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:13 | a | provenance | |
@@ -265,26 +263,24 @@ edges
| main.rs:506:13:506:13 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:2 |
| 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:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:6 |
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:10 |
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:21 |
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:8 |
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:19 |
| 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:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:6 |
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:10 |
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:21 |
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:8 |
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:19 |
| 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 | |
| main.rs:517:15:517:24 | source(...) | main.rs:517:14:517:34 | [...] [element] | provenance | |
| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:7 |
| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:5 |
| main.rs:523:9:523:9 | v | main.rs:524:14:524:14 | v | provenance | |
| main.rs:523:14:523:15 | vs [element] | main.rs:523:9:523:9 | v | provenance | |
| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | |
| main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | |
| main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | |
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:7 |
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:5 |
| 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 | |
@@ -301,17 +297,16 @@ edges
| main.rs:566:9:566:9 | a | main.rs:569:10:569:10 | a | provenance | |
| main.rs:566:9:566:9 | a | main.rs:570:20:570:20 | a | provenance | |
| main.rs:566:18:566:27 | source(...) | main.rs:566:9:566:9 | a | provenance | |
| main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:3 |
| main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:4 |
| main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:5 |
| main.rs:570:20:570:20 | a | main.rs:570:10:570:21 | ...::from(...) | provenance | ReflexiveFrom |
| 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:575:10:575:10 | b | 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:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:3 |
| main.rs:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:4 |
| main.rs:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:5 |
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:3 |
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:11 |
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:9 |
nodes
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
| main.rs:23:9:23:9 | s | semmle.label | s |

View File

@@ -47,7 +47,6 @@ edges
| 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:9:28:9 | b [&ref] | 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:2 |
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:10 |
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() [&ref] | provenance | MaD:11 |
| main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | |

View File

@@ -13,8 +13,12 @@ import codeql.rust.dataflow.FlowSink
import PathGraph
query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) {
(sc.propagatesFlow(s, _, _) or sc.propagatesFlow(_, s, _)) and
Private::External::invalidSpecComponent(s, c)
exists(Provenance p |
Private::External::invalidSpecComponent(s, c) and
p.isManual()
|
sc.propagatesFlow(s, _, _, p, _, _) or sc.propagatesFlow(_, s, _, p, _, _)
)
}
// not defined in `models.ext.yml`, in order to test that we can also define
@@ -22,13 +26,10 @@ query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c)
private class SummarizedCallableIdentity extends SummarizedCallable::Range {
SummarizedCallableIdentity() { this.getName().getText() = "identity" }
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string provenance
) {
override predicate propagatesFlow(string input, string output, boolean preservesValue) {
input = "Argument[0]" and
output = "ReturnValue" and
preservesValue = true and
provenance = "QL"
preservesValue = true
}
}

View File

@@ -10,23 +10,22 @@ models
| 9 | Source: std::env::vars_os; ReturnValue.Element; environment |
| 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value |
| 11 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 12 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 13 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 14 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 15 | Summary: <core::option::Option>::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 16 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 17 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 18 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 12 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 13 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 14 | Summary: <core::option::Option>::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 15 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 16 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 17 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
edges
| test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | provenance | Src:MaD:6 |
| test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | provenance | Src:MaD:7 |
| test.rs:9:9:9:12 | var1 | test.rs:12:10:12:13 | var1 | provenance | |
| test.rs:9:16:9:28 | ...::var | test.rs:9:16:9:36 | ...::var(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:17 |
| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:16 |
| test.rs:9:16:9:59 | ... .expect(...) | test.rs:9:9:9:12 | var1 | provenance | |
| test.rs:10:9:10:12 | var2 | test.rs:13:10:13:13 | var2 | provenance | |
| test.rs:10:16:10:31 | ...::var_os | test.rs:10:16:10:39 | ...::var_os(...) [Some] | provenance | Src:MaD:7 |
| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:16 |
| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:15 |
| test.rs:10:16:10:48 | ... .unwrap() | test.rs:10:9:10:12 | var2 | provenance | |
| test.rs:15:9:15:20 | TuplePat | test.rs:16:14:16:16 | key | provenance | |
| test.rs:15:9:15:20 | TuplePat | test.rs:17:14:17:18 | value | provenance | |
@@ -43,29 +42,28 @@ edges
| test.rs:27:29:27:54 | ... .collect() [element] | test.rs:27:9:27:12 | args [element] | provenance | |
| test.rs:28:9:28:15 | my_path [&ref] | test.rs:34:10:34:16 | my_path | provenance | |
| test.rs:28:19:28:26 | &... [&ref] | test.rs:28:9:28:15 | my_path [&ref] | provenance | |
| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | MaD:13 |
| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | MaD:12 |
| test.rs:28:20:28:26 | args[0] | test.rs:28:19:28:26 | &... [&ref] | provenance | |
| test.rs:29:9:29:12 | arg1 [&ref] | test.rs:35:10:35:13 | arg1 | provenance | |
| test.rs:29:16:29:23 | &... [&ref] | test.rs:29:9:29:12 | arg1 [&ref] | provenance | |
| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:13 |
| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:12 |
| test.rs:29:17:29:23 | args[1] | test.rs:29:16:29:23 | &... [&ref] | provenance | |
| test.rs:30:9:30:12 | arg2 | test.rs:36:10:36:13 | arg2 | provenance | |
| test.rs:30:16:30:29 | ...::args | test.rs:30:16:30:31 | ...::args(...) [element] | provenance | Src:MaD:1 |
| test.rs:30:16:30:31 | ...::args(...) [element] | test.rs:30:16:30:38 | ... .nth(...) [Some] | provenance | MaD:11 |
| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:16 |
| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:15 |
| test.rs:30:16:30:47 | ... .unwrap() | test.rs:30:9:30:12 | arg2 | provenance | |
| test.rs:31:9:31:12 | arg3 | test.rs:37:10:37:13 | arg3 | provenance | |
| test.rs:31:16:31:32 | ...::args_os | test.rs:31:16:31:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 |
| test.rs:31:16:31:34 | ...::args_os(...) [element] | test.rs:31:16:31:41 | ... .nth(...) [Some] | provenance | MaD:11 |
| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:16 |
| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:15 |
| test.rs:31:16:31:50 | ... .unwrap() | test.rs:31:9:31:12 | arg3 | provenance | |
| test.rs:32:9:32:12 | arg4 | test.rs:38:10:38:13 | arg4 | provenance | |
| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:1 |
| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:11 |
| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:16 |
| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:12 |
| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:14 |
| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:18 |
| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:15 |
| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:13 |
| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:17 |
| test.rs:32:16:32:73 | ... .unwrap() | test.rs:32:9:32:12 | arg4 | provenance | |
| test.rs:40:9:40:11 | arg | test.rs:41:14:41:16 | arg | provenance | |
| test.rs:40:16:40:29 | ...::args | test.rs:40:16:40:31 | ...::args(...) [element] | provenance | Src:MaD:1 |
@@ -75,15 +73,15 @@ edges
| test.rs:44:16:44:34 | ...::args_os(...) [element] | test.rs:44:9:44:11 | arg | provenance | |
| test.rs:50:9:50:11 | dir | test.rs:54:10:54:12 | dir | provenance | |
| test.rs:50:15:50:35 | ...::current_dir | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:3 |
| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:17 |
| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:16 |
| test.rs:50:15:50:54 | ... .expect(...) | test.rs:50:9:50:11 | dir | provenance | |
| test.rs:51:9:51:11 | exe | test.rs:55:10:55:12 | exe | provenance | |
| test.rs:51:15:51:35 | ...::current_exe | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:4 |
| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:17 |
| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:16 |
| test.rs:51:15:51:54 | ... .expect(...) | test.rs:51:9:51:11 | exe | provenance | |
| test.rs:52:9:52:12 | home | test.rs:56:10:56:13 | home | provenance | |
| test.rs:52:16:52:33 | ...::home_dir | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:5 |
| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:15 |
| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:14 |
| test.rs:52:16:52:52 | ... .expect(...) | test.rs:52:9:52:12 | home | provenance | |
nodes
| test.rs:6:10:6:22 | ...::var | semmle.label | ...::var |

View File

@@ -17,33 +17,34 @@ models
| 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 core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 20 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 21 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint |
| 22 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint |
| 23 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 24 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 25 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 26 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 27 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 37 | Summary: <alloc::borrow::Cow>::to_mut; Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]; ReturnValue.Reference; value |
| 38 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 39 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 40 | Summary: <std::ffi::os_str::OsString>::into_string; Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]; ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]; value |
| 41 | Summary: <std::path::PathBuf as core::convert::From>::from; Argument[0]; ReturnValue.Field[std::path::PathBuf::inner]; value |
| 42 | Summary: <std::path::PathBuf as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[std::path::PathBuf::inner]; ReturnValue.Reference; value |
| 43 | Summary: <std::path::PathBuf>::as_path; Argument[self].Reference; ReturnValue.Reference; value |
| 44 | Summary: <std::path::PathBuf>::into_boxed_path; Argument[self]; ReturnValue.Field[alloc::boxed::Box(0)]; taint |
| 45 | Summary: <std::path::PathBuf>::into_os_string; Argument[self].Field[std::path::PathBuf::inner]; 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_string; Argument[self].Reference; Argument[0].Reference; taint |
| 25 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 35 | Summary: <alloc::borrow::Cow>::to_mut; Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]; ReturnValue.Reference; value |
| 36 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 37 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 38 | Summary: <std::ffi::os_str::OsString as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 39 | Summary: <std::ffi::os_str::OsString>::into_string; Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]; ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]; value |
| 40 | Summary: <std::fs::File as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 41 | Summary: <std::fs::File as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 42 | Summary: <std::path::PathBuf as core::convert::From>::from; Argument[0]; ReturnValue.Field[std::path::PathBuf::inner]; value |
| 43 | Summary: <std::path::PathBuf as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[std::path::PathBuf::inner]; ReturnValue.Reference; value |
| 44 | Summary: <std::path::PathBuf>::as_path; Argument[self].Reference; ReturnValue.Reference; value |
| 45 | Summary: <std::path::PathBuf>::into_boxed_path; Argument[self]; ReturnValue.Field[alloc::boxed::Box(0)]; taint |
| 46 | Summary: <std::path::PathBuf>::into_os_string; Argument[self].Field[std::path::PathBuf::inner]; 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:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 |
@@ -73,31 +74,24 @@ edges
| test.rs:30:22:30:25 | path | test.rs:30:20:30:27 | e.path() | provenance | Src:MaD:4 MaD:4 |
| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 |
| test.rs:32:14:32:17 | path | test.rs:32:14:32:25 | path.clone() | provenance | MaD:18 |
| test.rs:32:14:32:25 | path.clone() | test.rs:32:14:32:35 | ... .as_path() | provenance | MaD:43 |
| test.rs:32:14:32:25 | path.clone() | test.rs:32:14:32:35 | ... .as_path() | provenance | MaD:44 |
| test.rs:33:14:33:17 | path | test.rs:33:14:33:25 | path.clone() | provenance | MaD:18 |
| test.rs:33:14:33:25 | path.clone() | test.rs:33:14:33:42 | ... .into_os_string() | provenance | MaD:45 |
| test.rs:33:14:33:25 | path.clone() | test.rs:33:14:33:42 | ... .into_os_string() | provenance | MaD:46 |
| test.rs:34:39:34:42 | path | test.rs:34:39:34:50 | path.clone() | provenance | MaD:18 |
| test.rs:34:39:34:50 | path.clone() | test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | provenance | MaD:44 |
| test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | test.rs:34:14:34:69 | ...::from(...) | provenance | MaD:41 |
| test.rs:34:39:34:50 | path.clone() | test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | provenance | MaD:45 |
| test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | test.rs:34:14:34:69 | ...::from(...) | provenance | MaD:42 |
| test.rs:35:14:35:17 | path | test.rs:35:14:35:25 | path.clone() | provenance | MaD:18 |
| test.rs:35:14:35:25 | path.clone() | test.rs:35:14:35:37 | ... .as_os_str() | provenance | MaD:19 |
| test.rs:35:14:35:25 | path.clone() | test.rs:35:14:35:37 | ... .as_os_str() | provenance | MaD:42 |
| test.rs:35:14:35:25 | path.clone() | test.rs:35:14:35:37 | ... .as_os_str() | provenance | MaD:43 |
| test.rs:36:14:36:17 | path | test.rs:36:14:36:25 | path.clone() | provenance | MaD:18 |
| test.rs:36:14:36:25 | path.clone() | test.rs:36:14:36:41 | ... .as_mut_os_str() | provenance | MaD:19 |
| test.rs:36:14:36:25 | path.clone() | test.rs:36:14:36:41 | ... .as_mut_os_str() | provenance | MaD:42 |
| test.rs:37:14:37:17 | path | test.rs:37:14:37:26 | path.to_str() | provenance | MaD:19 |
| test.rs:37:14:37:17 | path | test.rs:37:14:37:26 | path.to_str() | provenance | MaD:42 |
| test.rs:38:14:38:17 | path | test.rs:38:14:38:31 | path.to_path_buf() | provenance | MaD:19 |
| test.rs:38:14:38:17 | path | test.rs:38:14:38:31 | path.to_path_buf() | provenance | MaD:42 |
| test.rs:39:14:39:17 | path | test.rs:39:14:39:29 | path.file_name() [Some, &ref] | provenance | MaD:19 |
| test.rs:39:14:39:17 | path | test.rs:39:14:39:29 | path.file_name() [Some, &ref] | provenance | MaD:42 |
| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | test.rs:39:14:39:38 | ... .unwrap() | provenance | MaD:38 |
| test.rs:40:14:40:17 | path | test.rs:40:14:40:29 | path.extension() [Some, &ref] | provenance | MaD:19 |
| test.rs:40:14:40:17 | path | test.rs:40:14:40:29 | path.extension() [Some, &ref] | provenance | MaD:42 |
| test.rs:40:14:40:29 | path.extension() [Some, &ref] | test.rs:40:14:40:38 | ... .unwrap() | provenance | MaD:38 |
| test.rs:41:14:41:17 | path | test.rs:41:14:41:32 | path.canonicalize() [Ok] | provenance | MaD:19 |
| test.rs:41:14:41:17 | path | test.rs:41:14:41:32 | path.canonicalize() [Ok] | provenance | MaD:42 |
| test.rs:41:14:41:32 | path.canonicalize() [Ok] | test.rs:41:14:41:41 | ... .unwrap() | provenance | MaD:39 |
| test.rs:36:14:36:25 | path.clone() | test.rs:36:14:36:41 | ... .as_mut_os_str() | provenance | MaD:43 |
| test.rs:37:14:37:17 | path | test.rs:37:14:37:26 | path.to_str() | provenance | MaD:43 |
| test.rs:38:14:38:17 | path | test.rs:38:14:38:31 | path.to_path_buf() | provenance | MaD:43 |
| test.rs:39:14:39:17 | path | test.rs:39:14:39:29 | path.file_name() [Some, &ref] | provenance | MaD:43 |
| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | test.rs:39:14:39:38 | ... .unwrap() | provenance | MaD:36 |
| test.rs:40:14:40:17 | path | test.rs:40:14:40:29 | path.extension() [Some, &ref] | provenance | MaD:43 |
| test.rs:40:14:40:29 | path.extension() [Some, &ref] | test.rs:40:14:40:38 | ... .unwrap() | provenance | MaD:36 |
| test.rs:41:14:41:17 | path | test.rs:41:14:41:32 | path.canonicalize() [Ok] | provenance | MaD:43 |
| test.rs:41:14:41:32 | path.canonicalize() [Ok] | test.rs:41:14:41:41 | ... .unwrap() | provenance | MaD:37 |
| test.rs:44:13:44:21 | file_name | test.rs:45:14:45:22 | file_name | provenance | |
| test.rs:44:13:44:21 | file_name | test.rs:46:14:46:22 | file_name | provenance | |
| test.rs:44:13:44:21 | file_name | test.rs:47:14:47:22 | file_name | provenance | |
@@ -108,14 +102,14 @@ edges
| test.rs:44:27:44:35 | file_name | test.rs:44:25:44:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 |
| test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:18 |
| test.rs:46:14:46:22 | file_name | test.rs:46:14:46:30 | file_name.clone() | provenance | MaD:18 |
| test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:40 |
| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | test.rs:46:14:46:53 | ... .unwrap() | provenance | MaD:39 |
| test.rs:47:14:47:22 | file_name | test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | provenance | MaD:19 |
| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | test.rs:47:14:47:40 | ... .unwrap() | provenance | MaD:38 |
| test.rs:48:14:48:22 | file_name | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | provenance | MaD:19 |
| test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | test.rs:48:14:48:49 | ... .to_mut() | provenance | MaD:37 |
| test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:39 |
| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | test.rs:46:14:46:53 | ... .unwrap() | provenance | MaD:37 |
| test.rs:47:14:47:22 | file_name | test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | provenance | MaD:38 |
| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | test.rs:47:14:47:40 | ... .unwrap() | provenance | MaD:36 |
| test.rs:48:14:48:22 | file_name | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | provenance | MaD:38 |
| test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | test.rs:48:14:48:49 | ... .to_mut() | provenance | MaD:35 |
| test.rs:49:14:49:22 | file_name | test.rs:49:14:49:30 | file_name.clone() | provenance | MaD:18 |
| test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:19 |
| test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:38 |
| test.rs:68:13:68:18 | target | test.rs:69:14:69:19 | target | provenance | |
| test.rs:68:22:68:34 | ...::read_link | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 |
| test.rs:68:22:68:49 | ...::read_link(...) [Ok] | test.rs:68:22:68:50 | TryExpr | provenance | |
@@ -154,45 +148,45 @@ edges
| test.rs:110:20:110:38 | ...::open | test.rs:110:20:110:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:110:20:110:50 | ...::open(...) [Ok] | test.rs:110:20:110:51 | TryExpr | provenance | |
| test.rs:110:20:110:51 | TryExpr | test.rs:110:9:110:16 | mut file | provenance | |
| test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:114:32:114:42 | [post] &mut buffer [&ref] | test.rs:114:37:114:42 | [post] buffer | provenance | |
| test.rs:114:37:114:42 | [post] buffer | test.rs:115:15:115:20 | buffer | provenance | |
| test.rs:115:15:115:20 | buffer | test.rs:115:14:115:20 | &buffer | provenance | |
| test.rs:120:22:120:25 | file | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:120:22:120:25 | file | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | provenance | MaD:40 |
| test.rs:120:39:120:49 | [post] &mut buffer [&ref] | test.rs:120:44:120:49 | [post] buffer | provenance | |
| test.rs:120:44:120:49 | [post] buffer | test.rs:121:15:121:20 | buffer | provenance | |
| test.rs:121:15:121:20 | buffer | test.rs:121:14:121:20 | &buffer | provenance | |
| test.rs:126:22:126:25 | file | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:126:22:126:25 | file | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | provenance | MaD:41 |
| test.rs:126:42:126:52 | [post] &mut buffer [&ref] | test.rs:126:47:126:52 | [post] buffer | provenance | |
| test.rs:126:47:126:52 | [post] buffer | test.rs:127:15:127:20 | buffer | provenance | |
| test.rs:127:15:127:20 | buffer | test.rs:127:14:127:20 | &buffer | provenance | |
| test.rs:132:9:132:12 | file | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:132:9:132:12 | file | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:132:25:132:35 | [post] &mut buffer [&ref] | test.rs:132:30:132:35 | [post] buffer | provenance | |
| test.rs:132:30:132:35 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | |
| test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | |
| test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:20 |
| test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:19 |
| test.rs:136:17:136:28 | file.bytes() | test.rs:137:14:137:17 | byte | provenance | |
| test.rs:143:13:143:18 | mut f1 | test.rs:145:22:145:23 | f1 | provenance | |
| test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:39 |
| test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:37 |
| test.rs:143:22:143:72 | ... .unwrap() | test.rs:143:13:143:18 | mut f1 | provenance | |
| test.rs:143:50:143:53 | open | test.rs:143:22:143:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:145:30:145:40 | [post] &mut buffer [&ref] | test.rs:145:35:145:40 | [post] buffer | provenance | |
| test.rs:145:35:145:40 | [post] buffer | test.rs:146:15:146:20 | buffer | provenance | |
| test.rs:146:15:146:20 | buffer | test.rs:146:14:146:20 | &buffer | provenance | |
| test.rs:150:13:150:18 | mut f2 | test.rs:155:22:155:23 | f2 | provenance | |
| test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:39 |
| test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:37 |
| test.rs:150:22:153:21 | ... .unwrap() | test.rs:150:13:150:18 | mut f2 | provenance | |
| test.rs:152:14:152:17 | open | test.rs:150:22:152:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:155:30:155:40 | [post] &mut buffer [&ref] | test.rs:155:35:155:40 | [post] buffer | provenance | |
| test.rs:155:35:155:40 | [post] buffer | test.rs:156:15:156:20 | buffer | provenance | |
| test.rs:156:15:156:20 | buffer | test.rs:156:14:156:20 | &buffer | provenance | |
| test.rs:160:13:160:18 | mut f3 | test.rs:168:22:168:23 | f3 | provenance | |
| test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:39 |
| test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:37 |
| test.rs:160:22:166:21 | ... .unwrap() | test.rs:160:13:160:18 | mut f3 | provenance | |
| test.rs:165:14:165:17 | open | test.rs:160:22:165:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:168:30:168:40 | [post] &mut buffer [&ref] | test.rs:168:35:168:40 | [post] buffer | provenance | |
| test.rs:168:35:168:40 | [post] buffer | test.rs:169:15:169:20 | buffer | provenance | |
| test.rs:169:15:169:20 | buffer | test.rs:169:14:169:20 | &buffer | provenance | |
@@ -205,10 +199,10 @@ edges
| test.rs:177:21:177:59 | ...::open(...) [Ok] | test.rs:177:21:177:60 | TryExpr | provenance | |
| test.rs:177:21:177:60 | TryExpr | test.rs:177:13:177:17 | file2 | provenance | |
| test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | |
| test.rs:178:26:178:30 | file1 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:22 |
| test.rs:178:26:178:30 | file1 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:21 |
| test.rs:178:26:178:43 | file1.chain(...) | test.rs:178:13:178:22 | mut reader | provenance | |
| test.rs:178:38:178:42 | file2 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:21 |
| test.rs:179:9:179:14 | reader | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:178:38:178:42 | file2 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:20 |
| test.rs:179:9:179:14 | reader | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:179:31:179:41 | [post] &mut buffer [&ref] | test.rs:179:36:179:41 | [post] buffer | provenance | |
| test.rs:179:36:179:41 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | |
| test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | |
@@ -217,9 +211,9 @@ edges
| test.rs:185:21:185:51 | ...::open(...) [Ok] | test.rs:185:21:185:52 | TryExpr | provenance | |
| test.rs:185:21:185:52 | TryExpr | test.rs:185:13:185:17 | file1 | provenance | |
| test.rs:186:13:186:22 | mut reader | test.rs:187:9:187:14 | reader | provenance | |
| test.rs:186:26:186:30 | file1 | test.rs:186:26:186:40 | file1.take(...) | provenance | MaD:27 |
| test.rs:186:26:186:30 | file1 | test.rs:186:26:186:40 | file1.take(...) | provenance | MaD:25 |
| test.rs:186:26:186:40 | file1.take(...) | test.rs:186:13:186:22 | mut reader | provenance | |
| test.rs:187:9:187:14 | reader | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:187:9:187:14 | reader | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:187:31:187:41 | [post] &mut buffer [&ref] | test.rs:187:36:187:41 | [post] buffer | provenance | |
| test.rs:187:36:187:41 | [post] buffer | test.rs:188:15:188:20 | buffer | provenance | |
| test.rs:188:15:188:20 | buffer | test.rs:188:14:188:20 | &buffer | provenance | |
@@ -236,43 +230,43 @@ edges
| test.rs:197:20:197:52 | ...::open(...) [future, Ok] | test.rs:197:20:197:58 | await ... [Ok] | provenance | |
| test.rs:197:20:197:58 | await ... [Ok] | test.rs:197:20:197:59 | TryExpr | provenance | |
| test.rs:197:20:197:59 | TryExpr | test.rs:197:9:197:16 | mut file | provenance | |
| test.rs:201:22:201:25 | file | test.rs:201:32:201:42 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:201:22:201:25 | file | test.rs:201:32:201:42 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:201:32:201:42 | [post] &mut buffer [&ref] | test.rs:201:37:201:42 | [post] buffer | provenance | |
| test.rs:201:37:201:42 | [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:22:207:25 | file | test.rs:207:39:207:49 | [post] &mut buffer [&ref] | provenance | MaD:34 |
| test.rs:207:22:207:25 | file | test.rs:207:39:207:49 | [post] &mut buffer [&ref] | provenance | MaD:32 |
| test.rs:207:39:207:49 | [post] &mut buffer [&ref] | test.rs:207:44:207:49 | [post] buffer | provenance | |
| test.rs:207:44:207:49 | [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:213:22:213:25 | file | test.rs:213:42:213:52 | [post] &mut buffer [&ref] | provenance | MaD:35 |
| test.rs:213:22:213:25 | file | test.rs:213:42:213:52 | [post] &mut buffer [&ref] | provenance | MaD:33 |
| test.rs:213:42:213:52 | [post] &mut buffer [&ref] | test.rs:213:47:213:52 | [post] buffer | provenance | |
| test.rs:213:47:213:52 | [post] buffer | test.rs:214:15:214:20 | buffer | provenance | |
| test.rs:214:15:214:20 | buffer | test.rs:214:14:214:20 | &buffer | provenance | |
| test.rs:219:9:219:12 | file | test.rs:219:25:219:35 | [post] &mut buffer [&ref] | provenance | MaD:30 |
| test.rs:219:9:219:12 | file | test.rs:219:25:219:35 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:219:25:219:35 | [post] &mut buffer [&ref] | test.rs:219:30:219:35 | [post] buffer | provenance | |
| test.rs:219:30:219:35 | [post] buffer | test.rs:220:15:220:20 | buffer | provenance | |
| test.rs:220:15:220:20 | buffer | test.rs:220:14:220:20 | &buffer | provenance | |
| test.rs:224:13:224:14 | v1 | test.rs:228:14:228:15 | v1 | provenance | |
| test.rs:224:18:224:21 | file | test.rs:224:18:224:31 | file.read_u8() [future, Ok] | provenance | MaD:36 |
| test.rs:224:18:224:21 | file | test.rs:224:18:224:31 | file.read_u8() [future, Ok] | provenance | MaD:34 |
| test.rs:224:18:224:31 | file.read_u8() [future, Ok] | test.rs:224:18:224:37 | await ... [Ok] | provenance | |
| test.rs:224:18:224:37 | await ... [Ok] | test.rs:224:18:224:38 | TryExpr | provenance | |
| test.rs:224:18:224:38 | TryExpr | test.rs:224:13:224:14 | v1 | provenance | |
| test.rs:225:13:225:14 | v2 | test.rs:229:14:229:15 | v2 | provenance | |
| test.rs:225:18:225:21 | file | test.rs:225:18:225:32 | file.read_i16() [future, Ok] | provenance | MaD:32 |
| test.rs:225:18:225:21 | file | test.rs:225:18:225:32 | file.read_i16() [future, Ok] | provenance | MaD:30 |
| test.rs:225:18:225:32 | file.read_i16() [future, Ok] | test.rs:225:18:225:38 | await ... [Ok] | provenance | |
| test.rs:225:18:225:38 | await ... [Ok] | test.rs:225:18:225:39 | TryExpr | provenance | |
| test.rs:225:18:225:39 | TryExpr | test.rs:225:13:225:14 | v2 | provenance | |
| test.rs:226:13:226:14 | v3 | test.rs:230:14:230:15 | v3 | provenance | |
| test.rs:226:18:226:21 | file | test.rs:226:18:226:32 | file.read_f32() [future, Ok] | provenance | MaD:31 |
| test.rs:226:18:226:21 | file | test.rs:226:18:226:32 | file.read_f32() [future, Ok] | provenance | MaD:29 |
| test.rs:226:18:226:32 | file.read_f32() [future, Ok] | test.rs:226:18:226:38 | await ... [Ok] | provenance | |
| test.rs:226:18:226:38 | await ... [Ok] | test.rs:226:18:226:39 | TryExpr | provenance | |
| test.rs:226:18:226:39 | TryExpr | test.rs:226:13:226:14 | v3 | provenance | |
| test.rs:227:13:227:14 | v4 | test.rs:231:14:231:15 | v4 | provenance | |
| test.rs:227:18:227:21 | file | test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | provenance | MaD:33 |
| test.rs:227:18:227:21 | file | test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | provenance | MaD:31 |
| test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | test.rs:227:18:227:41 | await ... [Ok] | provenance | |
| test.rs:227:18:227:41 | await ... [Ok] | test.rs:227:18:227:42 | TryExpr | provenance | |
| test.rs:227:18:227:42 | TryExpr | test.rs:227:13:227:14 | v4 | provenance | |
| test.rs:236:9:236:12 | file | test.rs:236:23:236:33 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:236:9:236:12 | file | test.rs:236:23:236:33 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:236:23:236:33 | [post] &mut buffer [&ref] | test.rs:236:28:236:33 | [post] buffer | provenance | |
| test.rs:236:28:236:33 | [post] buffer | test.rs:237:15:237:20 | buffer | provenance | |
| test.rs:237:15:237:20 | buffer | test.rs:237:14:237:20 | &buffer | provenance | |
@@ -281,7 +275,7 @@ edges
| test.rs:243:22:243:71 | await ... [Ok] | test.rs:243:22:243:72 | TryExpr | provenance | |
| test.rs:243:22:243:72 | TryExpr | test.rs:243:13:243:18 | mut f1 | provenance | |
| test.rs:243:52:243:55 | open | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 |
| test.rs:245:22:245:23 | f1 | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:245:22:245:23 | f1 | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:245:30:245:40 | [post] &mut buffer [&ref] | test.rs:245:35:245:40 | [post] buffer | provenance | |
| test.rs:245:35:245:40 | [post] buffer | test.rs:246:15:246:20 | buffer | provenance | |
| test.rs:246:15:246:20 | buffer | test.rs:246:14:246:20 | &buffer | provenance | |

View File

@@ -4,100 +4,101 @@ models
| 3 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 4 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 6 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 7 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint |
| 8 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 9 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
| 10 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint |
| 11 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 12 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 13 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 14 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 15 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint |
| 18 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 19 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
| 20 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint |
| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 30 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 31 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 32 | Summary: <std::io::Split as core::iter::traits::iterator::Iterator>::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value |
| 33 | Summary: <std::io::buffered::bufreader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
| 34 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 6 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint |
| 7 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 8 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
| 9 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint |
| 10 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 11 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 12 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint |
| 13 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 14 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
| 15 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint |
| 16 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 17 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 18 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 20 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 25 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 26 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 27 | Summary: <std::io::Split as core::iter::traits::iterator::Iterator>::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value |
| 28 | Summary: <std::io::buffered::bufreader::BufReader as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 29 | Summary: <std::io::buffered::bufreader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
| 30 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 31 | Summary: <std::io::stdio::Stdin as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 32 | Summary: <std::io::stdio::Stdin as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 33 | Summary: <std::io::stdio::Stdin as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 34 | Summary: <std::io::stdio::Stdin as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 35 | Summary: <std::io::stdio::Stdin>::lock; Argument[self].Reference; ReturnValue; taint |
| 36 | Summary: <tokio::io::util::buf_reader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
| 37 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 38 | Summary: <tokio::io::util::lines::Lines>::next_line; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
| 39 | Summary: <tokio::io::util::split::Split>::next_segment; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
| 36 | Summary: <std::io::stdio::StdinLock as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 37 | Summary: <tokio::io::util::buf_reader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
| 38 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 39 | Summary: <tokio::io::util::lines::Lines>::next_line; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
| 40 | Summary: <tokio::io::util::split::Split>::next_segment; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
edges
| test.rs:13:22:13:35 | ...::stdin | test.rs:13:22:13:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:12 |
| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:31 |
| test.rs:13:44:13:54 | [post] &mut buffer [&ref] | test.rs:13:49:13:54 | [post] buffer | provenance | |
| test.rs:13:49:13:54 | [post] buffer | test.rs:14:15:14:20 | buffer | provenance | |
| test.rs:14:15:14:20 | buffer | test.rs:14:14:14:20 | &buffer | provenance | |
| test.rs:19:22:19:35 | ...::stdin | test.rs:19:22:19:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:14 |
| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:33 |
| test.rs:19:51:19:61 | [post] &mut buffer [&ref] | test.rs:19:56:19:61 | [post] buffer | provenance | |
| test.rs:19:56:19:61 | [post] buffer | test.rs:20:15:20:20 | buffer | provenance | |
| test.rs:20:15:20:20 | buffer | test.rs:20:14:20:20 | &buffer | provenance | |
| test.rs:25:22:25:35 | ...::stdin | test.rs:25:22:25:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:15 |
| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:34 |
| test.rs:25:54:25:64 | [post] &mut buffer [&ref] | test.rs:25:59:25:64 | [post] buffer | provenance | |
| test.rs:25:59:25:64 | [post] buffer | test.rs:26:15:26:20 | buffer | provenance | |
| test.rs:26:15:26:20 | buffer | test.rs:26:14:26:20 | &buffer | provenance | |
| test.rs:31:22:31:35 | ...::stdin | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:35 |
| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:15 |
| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:36 |
| test.rs:31:61:31:71 | [post] &mut buffer [&ref] | test.rs:31:66:31:71 | [post] buffer | provenance | |
| test.rs:31:66:31:71 | [post] buffer | test.rs:32:15:32:20 | buffer | provenance | |
| test.rs:32:15:32:20 | buffer | test.rs:32:14:32:20 | &buffer | provenance | |
| test.rs:37:9:37:22 | ...::stdin | test.rs:37:9:37:24 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:13 |
| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:32 |
| test.rs:37:37:37:47 | [post] &mut buffer [&ref] | test.rs:37:42:37:47 | [post] buffer | provenance | |
| test.rs:37:42:37:47 | [post] buffer | test.rs:38:15:38:20 | buffer | provenance | |
| test.rs:38:15:38:20 | buffer | test.rs:38:14:38:20 | &buffer | provenance | |
| test.rs:41:17:41:30 | ...::stdin | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:11 |
| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:10 |
| test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | |
| test.rs:48:13:48:22 | mut reader | test.rs:49:20:49:25 | reader | provenance | |
| test.rs:48:26:48:66 | ...::new(...) | test.rs:48:13:48:22 | mut reader | provenance | |
| test.rs:48:50:48:63 | ...::stdin | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:34 |
| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:30 |
| test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | |
| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:6 |
| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:28 |
| test.rs:49:20:49:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | |
| test.rs:49:20:49:37 | TryExpr | test.rs:49:13:49:16 | data | provenance | |
| test.rs:50:15:50:18 | data | test.rs:50:14:50:18 | &data | provenance | |
| test.rs:54:13:54:18 | reader | test.rs:55:20:55:25 | reader | provenance | |
| test.rs:54:22:54:62 | ...::new(...) | test.rs:54:13:54:18 | reader | provenance | |
| test.rs:54:46:54:59 | ...::stdin | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:34 |
| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:30 |
| test.rs:55:13:55:16 | data [&ref] | test.rs:56:15:56:18 | data [&ref] | provenance | |
| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:33 |
| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:29 |
| test.rs:55:20:55:34 | reader.buffer() [&ref] | test.rs:55:13:55:16 | data [&ref] | provenance | |
| test.rs:56:15:56:18 | data [&ref] | test.rs:56:14:56:18 | &data | provenance | |
| test.rs:61:13:61:22 | mut reader | test.rs:62:9:62:14 | reader | provenance | |
| test.rs:61:26:61:66 | ...::new(...) | test.rs:61:13:61:22 | mut reader | provenance | |
| test.rs:61:50:61:63 | ...::stdin | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:34 |
| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:8 |
| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:30 |
| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:7 |
| test.rs:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | |
| test.rs:62:31:62:36 | [post] buffer | test.rs:63:15:63:20 | buffer | provenance | |
| test.rs:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | |
| test.rs:68:13:68:22 | mut reader | test.rs:69:9:69:14 | reader | provenance | |
| test.rs:68:26:68:66 | ...::new(...) | test.rs:68:13:68:22 | mut reader | provenance | |
| test.rs:68:50:68:63 | ...::stdin | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:34 |
| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:9 |
| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:30 |
| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:8 |
| test.rs:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | |
| test.rs:69:38:69:43 | [post] buffer | test.rs:70:15:70:20 | buffer | provenance | |
| test.rs:69:38:69:43 | [post] buffer | test.rs:71:14:71:19 | buffer | provenance | |
@@ -105,60 +106,60 @@ edges
| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:5 |
| test.rs:75:13:75:28 | mut reader_split | test.rs:76:14:76:25 | reader_split | provenance | |
| test.rs:75:13:75:28 | mut reader_split | test.rs:77:33:77:44 | reader_split | provenance | |
| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:10 |
| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:9 |
| test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | |
| test.rs:75:56:75:69 | ...::stdin | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:34 |
| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:32 |
| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:30 |
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:31 |
| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:30 |
| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:27 |
| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:25 |
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:26 |
| test.rs:77:19:77:29 | Some(...) [Some, Ok] | test.rs:77:24:77:28 | chunk [Ok] | provenance | |
| test.rs:77:24:77:28 | chunk [Ok] | test.rs:78:18:78:22 | chunk [Ok] | provenance | |
| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:32 |
| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:27 |
| test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | |
| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:31 |
| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:26 |
| test.rs:83:13:83:18 | reader | test.rs:84:21:84:26 | reader | provenance | |
| test.rs:83:22:83:62 | ...::new(...) | test.rs:83:13:83:18 | reader | provenance | |
| test.rs:83:46:83:59 | ...::stdin | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:34 |
| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:7 |
| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:30 |
| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:6 |
| test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | |
| test.rs:90:13:90:18 | reader | test.rs:91:20:91:25 | reader | provenance | |
| test.rs:90:22:90:62 | ...::new(...) | test.rs:90:13:90:18 | reader | provenance | |
| test.rs:90:46:90:59 | ...::stdin | test.rs:90:46:90:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:34 |
| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:30 |
| test.rs:91:13:91:16 | line | test.rs:92:14:92:17 | line | provenance | |
| test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:7 |
| test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:6 |
| test.rs:91:20:91:33 | reader.lines() | test.rs:91:20:91:40 | ... .nth(...) [Some] | provenance | MaD:4 |
| test.rs:91:20:91:40 | ... .nth(...) [Some] | test.rs:91:20:91:49 | ... .unwrap() | provenance | MaD:30 |
| test.rs:91:20:91:40 | ... .nth(...) [Some] | test.rs:91:20:91:49 | ... .unwrap() | provenance | MaD:25 |
| test.rs:91:20:91:49 | ... .unwrap() | test.rs:91:13:91:16 | line | provenance | |
| test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:31 |
| test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:26 |
| test.rs:92:14:92:26 | line.unwrap() | test.rs:92:14:92:34 | ... .clone() | provenance | MaD:3 |
| test.rs:109:13:109:21 | mut stdin | test.rs:111:22:111:26 | stdin | provenance | |
| test.rs:109:25:109:40 | ...::stdin | test.rs:109:25:109:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | |
| test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:21 |
| test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:16 |
| test.rs:111:33:111:43 | [post] &mut buffer [&ref] | test.rs:111:38:111:43 | [post] buffer | provenance | |
| test.rs:111:38:111:43 | [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:116:13:116:21 | mut stdin | test.rs:118:22:118:26 | stdin | provenance | |
| test.rs:116:25:116:40 | ...::stdin | test.rs:116:25:116:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:116:25:116:42 | ...::stdin(...) | test.rs:116:13:116:21 | mut stdin | provenance | |
| test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:118:40:118:50 | [post] &mut buffer [&ref] | test.rs:118:45:118:50 | [post] buffer | provenance | |
| test.rs:118:45:118:50 | [post] buffer | test.rs:119:15:119:20 | buffer | provenance | |
| test.rs:119:15:119:20 | buffer | test.rs:119:14:119:20 | &buffer | provenance | |
| test.rs:123:13:123:21 | mut stdin | test.rs:125:22:125:26 | stdin | provenance | |
| test.rs:123:25:123:40 | ...::stdin | test.rs:123:25:123:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:123:25:123:42 | ...::stdin(...) | test.rs:123:13:123:21 | mut stdin | provenance | |
| test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:125:43:125:53 | [post] &mut buffer [&ref] | test.rs:125:48:125:53 | [post] buffer | provenance | |
| test.rs:125:48:125:53 | [post] buffer | test.rs:126:15:126:20 | buffer | provenance | |
| test.rs:126:15:126:20 | buffer | test.rs:126:14:126:20 | &buffer | provenance | |
| test.rs:130:13:130:21 | mut stdin | test.rs:132:9:132:13 | stdin | provenance | |
| test.rs:130:25:130:40 | ...::stdin | test.rs:130:25:130:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:130:25:130:42 | ...::stdin(...) | test.rs:130:13:130:21 | mut stdin | provenance | |
| test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:23 |
| test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:18 |
| test.rs:132:26:132:36 | [post] &mut buffer [&ref] | test.rs:132:31:132:36 | [post] buffer | provenance | |
| test.rs:132:31:132:36 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | |
| test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | |
@@ -169,38 +170,38 @@ edges
| test.rs:137:25:137:40 | ...::stdin | test.rs:137:25:137:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:137:25:137:42 | ...::stdin(...) | test.rs:137:13:137:21 | mut stdin | provenance | |
| test.rs:138:13:138:14 | v1 | test.rs:142:14:142:15 | v1 | provenance | |
| test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:29 |
| test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:24 |
| test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | test.rs:138:18:138:38 | await ... [Ok] | provenance | |
| test.rs:138:18:138:38 | await ... [Ok] | test.rs:138:18:138:39 | TryExpr | provenance | |
| test.rs:138:18:138:39 | TryExpr | test.rs:138:13:138:14 | v1 | provenance | |
| test.rs:139:13:139:14 | v2 | test.rs:143:14:143:15 | v2 | provenance | |
| test.rs:139:18:139:22 | stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:25 |
| test.rs:139:18:139:22 | stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:20 |
| test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | test.rs:139:18:139:39 | await ... [Ok] | provenance | |
| test.rs:139:18:139:39 | await ... [Ok] | test.rs:139:18:139:40 | TryExpr | provenance | |
| test.rs:139:18:139:40 | TryExpr | test.rs:139:13:139:14 | v2 | provenance | |
| test.rs:140:13:140:14 | v3 | test.rs:144:14:144:15 | v3 | provenance | |
| test.rs:140:18:140:22 | stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:24 |
| test.rs:140:18:140:22 | stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:19 |
| test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | test.rs:140:18:140:39 | await ... [Ok] | provenance | |
| test.rs:140:18:140:39 | await ... [Ok] | test.rs:140:18:140:40 | TryExpr | provenance | |
| test.rs:140:18:140:40 | TryExpr | test.rs:140:13:140:14 | v3 | provenance | |
| test.rs:141:13:141:14 | v4 | test.rs:145:14:145:15 | v4 | provenance | |
| test.rs:141:18:141:22 | stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:26 |
| test.rs:141:18:141:22 | stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:21 |
| test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | test.rs:141:18:141:42 | await ... [Ok] | provenance | |
| test.rs:141:18:141:42 | await ... [Ok] | test.rs:141:18:141:43 | TryExpr | provenance | |
| test.rs:141:18:141:43 | TryExpr | test.rs:141:13:141:14 | v4 | provenance | |
| test.rs:149:13:149:21 | mut stdin | test.rs:151:9:151:13 | stdin | provenance | |
| test.rs:149:25:149:40 | ...::stdin | test.rs:149:25:149:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:149:25:149:42 | ...::stdin(...) | test.rs:149:13:149:21 | mut stdin | provenance | |
| test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:22 |
| test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:17 |
| test.rs:151:24:151:34 | [post] &mut buffer [&ref] | test.rs:151:29:151:34 | [post] buffer | provenance | |
| test.rs:151:29:151:34 | [post] buffer | test.rs:152:15:152:20 | buffer | provenance | |
| test.rs:152:15:152:20 | buffer | test.rs:152:14:152:20 | &buffer | provenance | |
| test.rs:158:13:158:22 | mut reader | test.rs:159:20:159:25 | reader | provenance | |
| test.rs:158:26:158:70 | ...::new(...) | test.rs:158:13:158:22 | mut reader | provenance | |
| test.rs:158:52:158:67 | ...::stdin | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:37 |
| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:38 |
| test.rs:159:13:159:16 | data | test.rs:160:15:160:18 | data | provenance | |
| test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:16 |
| test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:11 |
| test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | test.rs:159:20:159:42 | await ... [Ok] | provenance | |
| test.rs:159:20:159:42 | await ... [Ok] | test.rs:159:20:159:43 | TryExpr | provenance | |
| test.rs:159:20:159:43 | TryExpr | test.rs:159:13:159:16 | data | provenance | |
@@ -208,24 +209,24 @@ edges
| test.rs:164:13:164:18 | reader | test.rs:165:20:165:25 | reader | provenance | |
| test.rs:164:22:164:66 | ...::new(...) | test.rs:164:13:164:18 | reader | provenance | |
| test.rs:164:48:164:63 | ...::stdin | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:37 |
| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:38 |
| test.rs:165:13:165:16 | data [&ref] | test.rs:166:15:166:18 | data [&ref] | provenance | |
| test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:36 |
| test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:37 |
| test.rs:165:20:165:34 | reader.buffer() [&ref] | test.rs:165:13:165:16 | data [&ref] | provenance | |
| test.rs:166:15:166:18 | data [&ref] | test.rs:166:14:166:18 | &data | provenance | |
| test.rs:171:13:171:22 | mut reader | test.rs:172:9:172:14 | reader | provenance | |
| test.rs:171:26:171:70 | ...::new(...) | test.rs:171:13:171:22 | mut reader | provenance | |
| test.rs:171:52:171:67 | ...::stdin | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:37 |
| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:18 |
| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:38 |
| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:13 |
| test.rs:172:26:172:36 | [post] &mut buffer [&ref] | test.rs:172:31:172:36 | [post] buffer | provenance | |
| test.rs:172:31:172:36 | [post] buffer | test.rs:173:15:173:20 | buffer | provenance | |
| test.rs:173:15:173:20 | buffer | test.rs:173:14:173:20 | &buffer | provenance | |
| test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | |
| test.rs:178:26:178:70 | ...::new(...) | test.rs:178:13:178:22 | mut reader | provenance | |
| test.rs:178:52:178:67 | ...::stdin | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:37 |
| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:19 |
| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:38 |
| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:14 |
| test.rs:179:33:179:43 | [post] &mut buffer [&ref] | test.rs:179:38:179:43 | [post] buffer | provenance | |
| test.rs:179:38:179:43 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | |
| test.rs:179:38:179:43 | [post] buffer | test.rs:181:14:181:19 | buffer | provenance | |
@@ -233,35 +234,35 @@ edges
| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:5 |
| test.rs:185:13:185:28 | mut reader_split | test.rs:186:14:186:25 | reader_split | provenance | |
| test.rs:185:13:185:28 | mut reader_split | test.rs:187:33:187:44 | reader_split | provenance | |
| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:20 |
| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:15 |
| test.rs:185:32:185:88 | ... .split(...) | test.rs:185:13:185:28 | mut reader_split | provenance | |
| test.rs:185:58:185:73 | ...::stdin | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:37 |
| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 |
| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:38 |
| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:40 |
| test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:186:14:186:46 | await ... [Ok, Some] | provenance | |
| test.rs:186:14:186:46 | await ... [Ok, Some] | test.rs:186:14:186:47 | TryExpr [Some] | provenance | |
| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:30 |
| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:25 |
| test.rs:187:19:187:29 | Some(...) [Some] | test.rs:187:24:187:28 | chunk | provenance | |
| test.rs:187:24:187:28 | chunk | test.rs:188:18:188:22 | chunk | provenance | |
| test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 |
| test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:40 |
| test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:187:33:187:65 | await ... [Ok, Some] | provenance | |
| test.rs:187:33:187:65 | await ... [Ok, Some] | test.rs:187:33:187:66 | TryExpr [Some] | provenance | |
| test.rs:187:33:187:66 | TryExpr [Some] | test.rs:187:19:187:29 | Some(...) [Some] | provenance | |
| test.rs:193:13:193:18 | reader | test.rs:194:25:194:30 | reader | provenance | |
| test.rs:193:22:193:66 | ...::new(...) | test.rs:193:13:193:18 | reader | provenance | |
| test.rs:193:48:193:63 | ...::stdin | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:37 |
| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:38 |
| test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:18 | lines | provenance | |
| test.rs:194:13:194:21 | mut lines | test.rs:196:32:196:36 | lines | provenance | |
| test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:17 |
| test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:12 |
| test.rs:194:25:194:38 | reader.lines() | test.rs:194:13:194:21 | mut lines | provenance | |
| test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 |
| test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:39 |
| test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | test.rs:195:14:195:36 | await ... [Ok, Some] | provenance | |
| test.rs:195:14:195:36 | await ... [Ok, Some] | test.rs:195:14:195:37 | TryExpr [Some] | provenance | |
| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:30 |
| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:25 |
| test.rs:196:19:196:28 | Some(...) [Some] | test.rs:196:24:196:27 | line | provenance | |
| test.rs:196:24:196:27 | line | test.rs:197:18:197:21 | line | provenance | |
| test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 |
| test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:39 |
| test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | test.rs:196:32:196:54 | await ... [Ok, Some] | provenance | |
| test.rs:196:32:196:54 | await ... [Ok, Some] | test.rs:196:32:196:55 | TryExpr [Some] | provenance | |
| test.rs:196:32:196:55 | TryExpr [Some] | test.rs:196:19:196:28 | Some(...) [Some] | provenance | |

View File

@@ -1,36 +1,34 @@
models
| 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint |
| 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 3 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 4 | Summary: <alloc::string::String as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 5 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
| 6 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
| 7 | Summary: <alloc::string::String>::as_str; Argument[self].Reference; ReturnValue.Reference; taint |
| 8 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
| 9 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
| 2 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 3 | Summary: <alloc::string::String as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 4 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
| 5 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
| 6 | Summary: <alloc::string::String>::as_str; Argument[self].Reference; ReturnValue.Reference; taint |
| 7 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
| 8 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
edges
| main.rs:26:9:26:9 | s | main.rs:27:19:27:19 | s | provenance | |
| main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | |
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | s | provenance | |
| main.rs:27:9:27:14 | sliced [&ref] | main.rs:28:16:28:21 | sliced | provenance | |
| main.rs:27:18:27:25 | &... [&ref] | main.rs:27:9:27:14 | sliced [&ref] | provenance | |
| main.rs:27:19:27:19 | s | main.rs:27:19:27:25 | s[...] | provenance | MaD:3 |
| main.rs:27:19:27:19 | s | main.rs:27:19:27:25 | s[...] | provenance | MaD:2 |
| main.rs:27:19:27:25 | s[...] | main.rs:27:18:27:25 | &... [&ref] | provenance | |
| main.rs:32:9:32:10 | s1 | main.rs:35:14:35:15 | s1 | provenance | |
| main.rs:32:14:32:23 | source(...) | main.rs:32:9:32:10 | s1 | provenance | |
| main.rs:35:9:35:10 | s4 | main.rs:38:10:38:11 | s4 | provenance | |
| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:6 |
| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:5 |
| main.rs:35:14:35:20 | ... + ... | main.rs:35:9:35:10 | s4 | provenance | |
| main.rs:43:9:43:10 | s1 | main.rs:46:34:46:35 | s1 | provenance | |
| main.rs:43:14:43:23 | source(...) | main.rs:43:9:43:10 | s1 | provenance | |
| main.rs:46:33:46:35 | &s1 [&ref] | main.rs:46:10:46:35 | ... + ... | provenance | MaD:5 |
| main.rs:46:33:46:35 | &s1 [&ref] | main.rs:46:10:46:35 | ... + ... | provenance | MaD:4 |
| main.rs:46:34:46:35 | s1 | main.rs:46:33:46:35 | &s1 [&ref] | provenance | |
| main.rs:51:9:51:10 | s1 | main.rs:52:27:52:28 | s1 | provenance | |
| main.rs:51:14:51:29 | source_slice(...) | main.rs:51:9:51:10 | s1 | provenance | |
| main.rs:52:9:52:10 | s2 | main.rs:53:10:53:11 | s2 | provenance | |
| main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | |
| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:2 |
| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:4 |
| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:3 |
| main.rs:57:9:57:10 | s1 | main.rs:58:14:58:15 | s1 | provenance | |
| main.rs:57:14:57:29 | source_slice(...) | main.rs:57:9:57:10 | s1 | provenance | |
| main.rs:58:9:58:10 | s2 | main.rs:59:10:59:11 | s2 | provenance | |
@@ -38,32 +36,32 @@ edges
| main.rs:58:14:58:27 | s1.to_string() | main.rs:58:9:58:10 | s2 | provenance | |
| main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | |
| main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | |
| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 |
| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:6 |
| main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | |
| main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | |
| main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | |
| main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | |
| main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | |
| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:8 |
| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:7 |
| main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | |
| main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | |
| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:8 |
| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:7 |
| main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | |
| main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | |
| main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | |
| main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | |
| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:8 |
| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:7 |
| main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | |
| main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | |
| main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | |
| main.rs:86:18:86:25 | ...::format(...) | main.rs:86:18:86:25 | { ... } | provenance | |
| main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | |
| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:8 |
| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:9 |
| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:7 |
| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:8 |
| main.rs:87:18:87:32 | ...::format(...) | main.rs:87:18:87:32 | { ... } | provenance | |
| main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | |
| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:8 |
| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:9 |
| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:7 |
| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:8 |
nodes
| main.rs:26:9:26:9 | s | semmle.label | s |
| main.rs:26:13:26:22 | source(...) | semmle.label | source(...) |

View File

@@ -8,32 +8,32 @@ models
| 7 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint |
| 8 | Summary: <_ as core::ops::arith::MulAssign>::mul_assign; Argument[0]; Argument[self].Reference; taint |
| 9 | Summary: <_ as core::ops::arith::MulAssign>::mul_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 10 | Summary: <_ as core::ops::arith::Neg>::neg; Argument[self].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 11 | Summary: <_ as core::ops::arith::Neg>::neg; Argument[self]; ReturnValue; taint |
| 12 | Summary: <_ as core::ops::arith::Sub>::sub; Argument[self,0]; ReturnValue; taint |
| 13 | Summary: <_ as core::ops::arith::SubAssign>::sub_assign; Argument[0]; Argument[self].Reference; taint |
| 14 | Summary: <_ as core::ops::arith::SubAssign>::sub_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 15 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[self,0].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 16 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[0].Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 17 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[0]; Argument[self].Reference; taint |
| 18 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 19 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 20 | Summary: <_ as core::ops::bit::BitOr>::bitor; Argument[self,0]; ReturnValue; taint |
| 21 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self,0]; ReturnValue; taint |
| 22 | Summary: <_ as core::ops::bit::BitXorAssign>::bitxor_assign; Argument[0]; Argument[self].Reference; taint |
| 23 | Summary: <_ as core::ops::bit::BitXorAssign>::bitxor_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 24 | Summary: <_ as core::ops::bit::Not>::not; Argument[self].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 25 | Summary: <_ as core::ops::bit::Not>::not; Argument[self]; ReturnValue; taint |
| 26 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 27 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0]; ReturnValue; taint |
| 28 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[0].Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 29 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[0]; Argument[self].Reference; taint |
| 30 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 31 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 32 | Summary: <_ as core::ops::bit::Shr>::shr; Argument[self,0]; ReturnValue; taint |
| 33 | Summary: <_ as core::ops::bit::ShrAssign>::shr_assign; Argument[0]; Argument[self].Reference; taint |
| 34 | Summary: <_ as core::ops::bit::ShrAssign>::shr_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 35 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 10 | Summary: <_ as core::ops::arith::Neg>::neg; Argument[self]; ReturnValue; taint |
| 11 | Summary: <_ as core::ops::arith::Sub>::sub; Argument[self,0]; ReturnValue; taint |
| 12 | Summary: <_ as core::ops::arith::SubAssign>::sub_assign; Argument[0]; Argument[self].Reference; taint |
| 13 | Summary: <_ as core::ops::arith::SubAssign>::sub_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 14 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[self,0].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 15 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[0].Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 16 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[0]; Argument[self].Reference; taint |
| 17 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 18 | Summary: <_ as core::ops::bit::BitAndAssign>::bitand_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 19 | Summary: <_ as core::ops::bit::BitOr>::bitor; Argument[self,0]; ReturnValue; taint |
| 20 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self,0]; ReturnValue; taint |
| 21 | Summary: <_ as core::ops::bit::BitXorAssign>::bitxor_assign; Argument[0]; Argument[self].Reference; taint |
| 22 | Summary: <_ as core::ops::bit::BitXorAssign>::bitxor_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 23 | Summary: <_ as core::ops::bit::Not>::not; Argument[self]; ReturnValue; taint |
| 24 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 25 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0]; ReturnValue; taint |
| 26 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[0].Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 27 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[0]; Argument[self].Reference; taint |
| 28 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; Argument[self].Reference.Field[core::num::wrapping::Wrapping(0)]; taint |
| 29 | Summary: <_ as core::ops::bit::ShlAssign>::shl_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 30 | Summary: <_ as core::ops::bit::Shr>::shr; Argument[self,0]; ReturnValue; taint |
| 31 | Summary: <_ as core::ops::bit::ShrAssign>::shr_assign; Argument[0]; Argument[self].Reference; taint |
| 32 | Summary: <_ as core::ops::bit::ShrAssign>::shr_assign; Argument[self].Reference; Argument[self].Reference; taint |
| 33 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
| 34 | Summary: <core::num::wrapping::Wrapping as core::ops::arith::Neg>::neg; Argument[self].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
| 35 | Summary: <core::num::wrapping::Wrapping as core::ops::bit::Not>::not; Argument[self].Field[core::num::wrapping::Wrapping(0)]; ReturnValue.Field[core::num::wrapping::Wrapping(0)]; taint |
edges
| main.rs:12:9:12:9 | a | main.rs:13:10:13:10 | a | provenance | |
| main.rs:12:9:12:9 | a | main.rs:14:14:14:14 | a | provenance | |
@@ -46,16 +46,16 @@ edges
| main.rs:21:10:21:19 | source(...) | main.rs:22:10:22:10 | c | provenance | MaD:4 |
| main.rs:26:9:26:9 | a | main.rs:27:11:27:11 | a | provenance | |
| main.rs:26:13:26:21 | source(...) | main.rs:26:9:26:9 | a | provenance | |
| main.rs:27:11:27:11 | a | main.rs:27:10:27:11 | - ... | provenance | MaD:11 |
| main.rs:29:11:29:19 | source(...) | main.rs:29:10:29:19 | ! ... | provenance | MaD:25 |
| main.rs:31:10:31:18 | source(...) | main.rs:31:10:31:22 | ... - ... | provenance | MaD:12 |
| main.rs:32:17:32:25 | source(...) | main.rs:32:10:32:25 | ... - ... | provenance | MaD:12 |
| main.rs:27:11:27:11 | a | main.rs:27:10:27:11 | - ... | provenance | MaD:10 |
| main.rs:29:11:29:19 | source(...) | main.rs:29:10:29:19 | ! ... | provenance | MaD:23 |
| main.rs:31:10:31:18 | source(...) | main.rs:31:10:31:22 | ... - ... | provenance | MaD:11 |
| main.rs:32:17:32:25 | source(...) | main.rs:32:10:32:25 | ... - ... | provenance | MaD:11 |
| main.rs:34:10:34:18 | source(...) | main.rs:34:10:34:22 | ... * ... | provenance | MaD:7 |
| main.rs:35:17:35:25 | source(...) | main.rs:35:10:35:25 | ... * ... | provenance | MaD:7 |
| main.rs:37:10:37:18 | source(...) | main.rs:37:10:37:23 | ... << ... | provenance | MaD:27 |
| main.rs:38:18:38:26 | source(...) | main.rs:38:10:38:26 | ... << ... | provenance | MaD:27 |
| main.rs:40:10:40:18 | source(...) | main.rs:40:10:40:22 | ... ^ ... | provenance | MaD:21 |
| main.rs:41:18:41:27 | source(...) | main.rs:41:10:41:27 | ... ^ ... | provenance | MaD:21 |
| main.rs:37:10:37:18 | source(...) | main.rs:37:10:37:23 | ... << ... | provenance | MaD:25 |
| main.rs:38:18:38:26 | source(...) | main.rs:38:10:38:26 | ... << ... | provenance | MaD:25 |
| main.rs:40:10:40:18 | source(...) | main.rs:40:10:40:22 | ... ^ ... | provenance | MaD:20 |
| main.rs:41:18:41:27 | source(...) | main.rs:41:10:41:27 | ... ^ ... | provenance | MaD:20 |
| main.rs:45:9:45:9 | a | main.rs:46:9:46:9 | b | provenance | |
| main.rs:45:13:45:22 | source(...) | main.rs:45:9:45:9 | a | provenance | |
| main.rs:46:9:46:9 | b | main.rs:47:10:47:17 | b as i64 | provenance | |
@@ -64,11 +64,11 @@ edges
| main.rs:60:17:60:26 | source(...) | main.rs:60:13:60:13 | s | provenance | |
| main.rs:61:13:61:18 | sliced [&ref] | main.rs:62:14:62:19 | sliced | provenance | |
| main.rs:61:22:61:29 | &... [&ref] | main.rs:61:13:61:18 | sliced [&ref] | provenance | |
| main.rs:61:23:61:23 | s | main.rs:61:23:61:29 | s[...] | provenance | MaD:35 |
| main.rs:61:23:61:23 | s | main.rs:61:23:61:29 | s[...] | provenance | MaD:33 |
| main.rs:61:23:61:29 | s[...] | main.rs:61:22:61:29 | &... [&ref] | provenance | |
| main.rs:76:13:76:15 | arr | main.rs:77:14:77:16 | arr | provenance | |
| main.rs:76:19:76:28 | source(...) | main.rs:76:13:76:15 | arr | provenance | |
| main.rs:77:14:77:16 | arr | main.rs:77:14:77:19 | arr[1] | provenance | MaD:35 |
| main.rs:77:14:77:16 | arr | main.rs:77:14:77:19 | arr[1] | provenance | MaD:33 |
| main.rs:92:9:92:12 | [post] arr2 [element] | main.rs:93:14:93:17 | arr2 | provenance | |
| main.rs:92:19:92:28 | source(...) | main.rs:92:9:92:12 | [post] arr2 [element] | provenance | |
| main.rs:113:14:113:47 | TupleExpr [tuple.0] | main.rs:113:14:113:49 | ... .0 | provenance | |
@@ -89,18 +89,18 @@ edges
| main.rs:131:15:131:29 | source_tuple(...) | main.rs:131:14:131:64 | TupleExpr [tuple.0] | provenance | |
| main.rs:141:10:141:18 | source(...) | main.rs:141:10:141:28 | ... .add(...) | provenance | MaD:2 |
| main.rs:143:19:143:27 | source(...) | main.rs:143:10:143:28 | 1i64.add(...) | provenance | MaD:2 |
| main.rs:146:10:146:18 | source(...) | main.rs:146:10:146:28 | ... .sub(...) | provenance | MaD:12 |
| main.rs:148:19:148:27 | source(...) | main.rs:148:10:148:28 | 1i64.sub(...) | provenance | MaD:12 |
| main.rs:146:10:146:18 | source(...) | main.rs:146:10:146:28 | ... .sub(...) | provenance | MaD:11 |
| main.rs:148:19:148:27 | source(...) | main.rs:148:10:148:28 | 1i64.sub(...) | provenance | MaD:11 |
| main.rs:151:10:151:18 | source(...) | main.rs:151:10:151:28 | ... .mul(...) | provenance | MaD:7 |
| main.rs:153:19:153:27 | source(...) | main.rs:153:10:153:28 | 1i64.mul(...) | provenance | MaD:7 |
| main.rs:156:10:156:18 | source(...) | main.rs:156:10:156:28 | ... .shl(...) | provenance | MaD:27 |
| main.rs:157:10:157:18 | source(...) | main.rs:157:10:157:25 | ... .shl(...) | provenance | MaD:27 |
| main.rs:158:19:158:27 | source(...) | main.rs:158:10:158:28 | 1i64.shl(...) | provenance | MaD:27 |
| main.rs:160:10:160:18 | source(...) | main.rs:160:10:160:28 | ... .shr(...) | provenance | MaD:32 |
| main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | provenance | MaD:32 |
| main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | provenance | MaD:32 |
| main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | provenance | MaD:20 |
| main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | provenance | MaD:20 |
| main.rs:156:10:156:18 | source(...) | main.rs:156:10:156:28 | ... .shl(...) | provenance | MaD:25 |
| main.rs:157:10:157:18 | source(...) | main.rs:157:10:157:25 | ... .shl(...) | provenance | MaD:25 |
| main.rs:158:19:158:27 | source(...) | main.rs:158:10:158:28 | 1i64.shl(...) | provenance | MaD:25 |
| main.rs:160:10:160:18 | source(...) | main.rs:160:10:160:28 | ... .shr(...) | provenance | MaD:30 |
| main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | provenance | MaD:30 |
| main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | provenance | MaD:30 |
| main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | provenance | MaD:19 |
| main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | provenance | MaD:19 |
| main.rs:170:5:170:5 | [post] a | main.rs:171:5:171:5 | a | provenance | |
| main.rs:170:5:170:5 | [post] a | main.rs:172:5:172:5 | a | provenance | |
| main.rs:170:5:170:5 | [post] a | main.rs:173:5:173:5 | a | provenance | |
@@ -113,8 +113,8 @@ edges
| main.rs:171:5:171:5 | [post] a | main.rs:174:5:174:5 | a | provenance | |
| main.rs:171:5:171:5 | [post] a | main.rs:175:5:175:5 | a | provenance | |
| main.rs:171:5:171:5 | [post] a | main.rs:176:10:176:10 | a | provenance | |
| main.rs:171:5:171:5 | a | main.rs:171:5:171:5 | [post] a | provenance | MaD:14 |
| main.rs:171:18:171:26 | source(...) | main.rs:171:5:171:5 | [post] a | provenance | MaD:13 |
| main.rs:171:5:171:5 | a | main.rs:171:5:171:5 | [post] a | provenance | MaD:13 |
| main.rs:171:18:171:26 | source(...) | main.rs:171:5:171:5 | [post] a | provenance | MaD:12 |
| main.rs:172:5:172:5 | [post] a | main.rs:173:5:173:5 | a | provenance | |
| main.rs:172:5:172:5 | [post] a | main.rs:174:5:174:5 | a | provenance | |
| main.rs:172:5:172:5 | [post] a | main.rs:175:5:175:5 | a | provenance | |
@@ -124,17 +124,17 @@ edges
| main.rs:173:5:173:5 | [post] a | main.rs:174:5:174:5 | a | provenance | |
| main.rs:173:5:173:5 | [post] a | main.rs:175:5:175:5 | a | provenance | |
| main.rs:173:5:173:5 | [post] a | main.rs:176:10:176:10 | a | provenance | |
| main.rs:173:5:173:5 | a | main.rs:173:5:173:5 | [post] a | provenance | MaD:31 |
| main.rs:173:18:173:26 | source(...) | main.rs:173:5:173:5 | [post] a | provenance | MaD:29 |
| main.rs:173:5:173:5 | a | main.rs:173:5:173:5 | [post] a | provenance | MaD:29 |
| main.rs:173:18:173:26 | source(...) | main.rs:173:5:173:5 | [post] a | provenance | MaD:27 |
| main.rs:174:5:174:5 | [post] a | main.rs:175:5:175:5 | a | provenance | |
| main.rs:174:5:174:5 | [post] a | main.rs:176:10:176:10 | a | provenance | |
| main.rs:174:5:174:5 | a | main.rs:174:5:174:5 | [post] a | provenance | MaD:34 |
| main.rs:174:18:174:26 | source(...) | main.rs:174:5:174:5 | [post] a | provenance | MaD:33 |
| main.rs:174:5:174:5 | a | main.rs:174:5:174:5 | [post] a | provenance | MaD:32 |
| main.rs:174:18:174:26 | source(...) | main.rs:174:5:174:5 | [post] a | provenance | MaD:31 |
| main.rs:175:5:175:5 | [post] a | main.rs:176:10:176:10 | a | provenance | |
| main.rs:175:5:175:5 | a | main.rs:175:5:175:5 | [post] a | provenance | MaD:23 |
| main.rs:175:21:175:29 | source(...) | main.rs:175:5:175:5 | [post] a | provenance | MaD:22 |
| main.rs:178:10:178:18 | source(...) | main.rs:178:10:178:24 | ... .neg() | provenance | MaD:11 |
| main.rs:179:10:179:18 | source(...) | main.rs:179:10:179:24 | ... .not() | provenance | MaD:25 |
| main.rs:175:5:175:5 | a | main.rs:175:5:175:5 | [post] a | provenance | MaD:22 |
| main.rs:175:21:175:29 | source(...) | main.rs:175:5:175:5 | [post] a | provenance | MaD:21 |
| main.rs:178:10:178:18 | source(...) | main.rs:178:10:178:24 | ... .neg() | provenance | MaD:10 |
| main.rs:179:10:179:18 | source(...) | main.rs:179:10:179:24 | ... .not() | provenance | MaD:23 |
| main.rs:199:13:199:17 | mut a [Wrapping] | main.rs:201:21:201:21 | a [Wrapping] | provenance | |
| main.rs:199:13:199:17 | mut a [Wrapping] | main.rs:203:9:203:9 | a [Wrapping] | provenance | |
| main.rs:199:13:199:17 | mut a [Wrapping] | main.rs:204:9:204:9 | a [Wrapping] | provenance | |
@@ -174,25 +174,25 @@ edges
| main.rs:212:21:212:21 | a [Wrapping] | main.rs:212:21:212:23 | a.0 | provenance | |
| main.rs:214:9:214:9 | a | main.rs:215:9:215:9 | a | provenance | |
| main.rs:214:13:214:21 | source(...) | main.rs:214:9:214:9 | a | provenance | |
| main.rs:215:9:215:9 | a | main.rs:216:9:216:9 | a | provenance | MaD:19 |
| main.rs:215:9:215:9 | a | main.rs:216:9:216:9 | a [Wrapping] | provenance | MaD:18 |
| main.rs:215:14:215:22 | source(...) | main.rs:216:9:216:9 | a | provenance | MaD:17 |
| main.rs:215:14:215:22 | source(...) | main.rs:216:9:216:9 | a [Wrapping] | provenance | MaD:16 |
| main.rs:216:9:216:9 | a | main.rs:217:14:217:14 | a | provenance | MaD:19 |
| main.rs:216:9:216:9 | a | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:18 |
| main.rs:216:9:216:9 | a | main.rs:218:21:218:23 | a.0 | provenance | MaD:19 |
| main.rs:216:9:216:9 | a [Wrapping] | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:18 |
| main.rs:216:14:216:39 | Wrapping(...) [Wrapping] | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:16 |
| main.rs:215:9:215:9 | a | main.rs:216:9:216:9 | a | provenance | MaD:18 |
| main.rs:215:9:215:9 | a | main.rs:216:9:216:9 | a [Wrapping] | provenance | MaD:17 |
| main.rs:215:14:215:22 | source(...) | main.rs:216:9:216:9 | a | provenance | MaD:16 |
| main.rs:215:14:215:22 | source(...) | main.rs:216:9:216:9 | a [Wrapping] | provenance | MaD:15 |
| main.rs:216:9:216:9 | a | main.rs:217:14:217:14 | a | provenance | MaD:18 |
| main.rs:216:9:216:9 | a | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:17 |
| main.rs:216:9:216:9 | a | main.rs:218:21:218:23 | a.0 | provenance | MaD:18 |
| main.rs:216:9:216:9 | a [Wrapping] | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:17 |
| main.rs:216:14:216:39 | Wrapping(...) [Wrapping] | main.rs:218:21:218:21 | a [Wrapping] | provenance | MaD:15 |
| main.rs:216:23:216:38 | ...::source(...) | main.rs:216:14:216:39 | Wrapping(...) [Wrapping] | provenance | |
| main.rs:218:21:218:21 | a [Wrapping] | main.rs:218:21:218:23 | a.0 | provenance | |
| main.rs:220:9:220:9 | a | main.rs:221:9:221:9 | a | provenance | |
| main.rs:220:13:220:22 | source(...) | main.rs:220:9:220:9 | a | provenance | |
| main.rs:221:9:221:9 | a | main.rs:222:14:222:14 | a | provenance | MaD:31 |
| main.rs:221:9:221:9 | a | main.rs:223:21:223:21 | a [Wrapping] | provenance | MaD:30 |
| main.rs:221:9:221:9 | a | main.rs:223:21:223:23 | a.0 | provenance | MaD:31 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:222:14:222:14 | a | provenance | MaD:29 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:21 | a [Wrapping] | provenance | MaD:28 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:23 | a.0 | provenance | MaD:29 |
| main.rs:221:9:221:9 | a | main.rs:222:14:222:14 | a | provenance | MaD:29 |
| main.rs:221:9:221:9 | a | main.rs:223:21:223:21 | a [Wrapping] | provenance | MaD:28 |
| main.rs:221:9:221:9 | a | main.rs:223:21:223:23 | a.0 | provenance | MaD:29 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:222:14:222:14 | a | provenance | MaD:27 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:21 | a [Wrapping] | provenance | MaD:26 |
| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:23 | a.0 | provenance | MaD:27 |
| main.rs:223:21:223:21 | a [Wrapping] | main.rs:223:21:223:23 | a.0 | provenance | |
| main.rs:225:13:225:13 | b [Wrapping] | main.rs:227:18:227:18 | b [Wrapping] | provenance | |
| main.rs:225:13:225:13 | b [Wrapping] | main.rs:229:18:229:18 | b [Wrapping] | provenance | |
@@ -221,32 +221,32 @@ edges
| main.rs:230:21:230:22 | v2 [Wrapping] | main.rs:230:21:230:24 | v2.0 | provenance | |
| main.rs:231:13:231:14 | v3 [Wrapping] | main.rs:232:21:232:22 | v3 [Wrapping] | provenance | |
| main.rs:231:18:231:19 | - ... [Wrapping] | main.rs:231:13:231:14 | v3 [Wrapping] | provenance | |
| main.rs:231:19:231:19 | b [Wrapping] | main.rs:231:18:231:19 | - ... [Wrapping] | provenance | MaD:10 |
| main.rs:231:19:231:19 | b [Wrapping] | main.rs:231:18:231:19 | - ... [Wrapping] | provenance | MaD:34 |
| main.rs:232:21:232:22 | v3 [Wrapping] | main.rs:232:21:232:24 | v3.0 | provenance | |
| main.rs:233:13:233:14 | v4 [Wrapping] | main.rs:234:21:234:22 | v4 [Wrapping] | provenance | |
| main.rs:233:18:233:18 | b [Wrapping] | main.rs:233:18:233:24 | b.neg() [Wrapping] | provenance | MaD:10 |
| main.rs:233:18:233:18 | b [Wrapping] | main.rs:233:18:233:24 | b.neg() [Wrapping] | provenance | MaD:34 |
| main.rs:233:18:233:24 | b.neg() [Wrapping] | main.rs:233:13:233:14 | v4 [Wrapping] | provenance | |
| main.rs:234:21:234:22 | v4 [Wrapping] | main.rs:234:21:234:24 | v4.0 | provenance | |
| main.rs:235:13:235:14 | v5 [Wrapping] | main.rs:236:21:236:22 | v5 [Wrapping] | provenance | |
| main.rs:235:18:235:19 | ! ... [Wrapping] | main.rs:235:13:235:14 | v5 [Wrapping] | provenance | |
| main.rs:235:19:235:19 | b [Wrapping] | main.rs:235:18:235:19 | ! ... [Wrapping] | provenance | MaD:24 |
| main.rs:235:19:235:19 | b [Wrapping] | main.rs:235:18:235:19 | ! ... [Wrapping] | provenance | MaD:35 |
| main.rs:236:21:236:22 | v5 [Wrapping] | main.rs:236:21:236:24 | v5.0 | provenance | |
| main.rs:237:13:237:14 | v6 [Wrapping] | main.rs:238:21:238:22 | v6 [Wrapping] | provenance | |
| main.rs:237:18:237:18 | b [Wrapping] | main.rs:237:18:237:24 | b.not() [Wrapping] | provenance | MaD:24 |
| main.rs:237:18:237:18 | b [Wrapping] | main.rs:237:18:237:24 | b.not() [Wrapping] | provenance | MaD:35 |
| main.rs:237:18:237:24 | b.not() [Wrapping] | main.rs:237:13:237:14 | v6 [Wrapping] | provenance | |
| main.rs:238:21:238:22 | v6 [Wrapping] | main.rs:238:21:238:24 | v6.0 | provenance | |
| main.rs:239:13:239:14 | v7 [Wrapping] | main.rs:240:21:240:22 | v7 [Wrapping] | provenance | |
| main.rs:239:18:239:18 | b [Wrapping] | main.rs:239:18:239:22 | ... & ... [Wrapping] | provenance | MaD:15 |
| main.rs:239:18:239:18 | b [Wrapping] | main.rs:239:18:239:22 | ... & ... [Wrapping] | provenance | MaD:14 |
| main.rs:239:18:239:22 | ... & ... [Wrapping] | main.rs:239:13:239:14 | v7 [Wrapping] | provenance | |
| main.rs:239:22:239:22 | c [Wrapping] | main.rs:239:18:239:22 | ... & ... [Wrapping] | provenance | MaD:15 |
| main.rs:239:22:239:22 | c [Wrapping] | main.rs:239:18:239:22 | ... & ... [Wrapping] | provenance | MaD:14 |
| main.rs:240:21:240:22 | v7 [Wrapping] | main.rs:240:21:240:24 | v7.0 | provenance | |
| main.rs:241:13:241:14 | v8 | main.rs:242:21:242:24 | v8.0 | provenance | |
| main.rs:241:13:241:14 | v8 [Wrapping] | main.rs:242:21:242:22 | v8 [Wrapping] | provenance | |
| main.rs:241:18:241:18 | b [Wrapping] | main.rs:241:18:241:37 | ... << ... [Wrapping] | provenance | MaD:26 |
| main.rs:241:18:241:18 | b [Wrapping] | main.rs:241:18:241:37 | ... << ... [Wrapping] | provenance | MaD:24 |
| main.rs:241:18:241:37 | ... << ... | main.rs:241:13:241:14 | v8 | provenance | |
| main.rs:241:18:241:37 | ... << ... [Wrapping] | main.rs:241:13:241:14 | v8 [Wrapping] | provenance | |
| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... | provenance | MaD:27 |
| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... [Wrapping] | provenance | MaD:26 |
| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... | provenance | MaD:25 |
| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... [Wrapping] | provenance | MaD:24 |
| main.rs:242:21:242:22 | v8 [Wrapping] | main.rs:242:21:242:24 | v8.0 | provenance | |
nodes
| main.rs:12:9:12:9 | a | semmle.label | a |

View File

@@ -19,42 +19,38 @@ edges
| src/main.rs:7:11:7:19 | file_name | src/main.rs:9:35:9:43 | file_name | provenance | |
| src/main.rs:9:9:9:17 | file_path | src/main.rs:11:24:11:32 | file_path | provenance | |
| src/main.rs:9:21:9:44 | ...::from(...) | src/main.rs:9:9:9:17 | file_path | provenance | |
| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:9 |
| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:16 |
| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:14 |
| src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:38:11:38:19 | file_path | src/main.rs:41:52:41:60 | file_path | provenance | |
| src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | |
| src/main.rs:41:21:41:62 | public_path.join(...) | src/main.rs:41:9:41:17 | file_path | provenance | |
| src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:14 |
| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:9 |
| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:16 |
| src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:12 |
| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:14 |
| src/main.rs:46:24:46:32 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:63:11:63:19 | file_path | src/main.rs:66:32:66:40 | file_path | provenance | |
| src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path [&ref] | provenance | |
| src/main.rs:66:21:66:41 | ...::new(...) [&ref] | src/main.rs:66:9:66:17 | file_path [&ref] | provenance | |
| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:15 |
| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | |
| src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:76:11:76:19 | file_path | src/main.rs:79:52:79:60 | file_path | provenance | |
| src/main.rs:79:9:79:17 | file_path | src/main.rs:80:21:80:29 | file_path | provenance | |
| src/main.rs:79:21:79:62 | public_path.join(...) | src/main.rs:79:9:79:17 | file_path | provenance | |
| src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:14 |
| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:9 |
| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:16 |
| src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:12 |
| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:14 |
| src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | |
| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:11 |
| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:17 |
| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:15 |
| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:80:21:80:53 | ... .unwrap() | src/main.rs:80:9:80:17 | file_path | provenance | |
| src/main.rs:85:24:85:32 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | |
| src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:29 | file_path [&ref] | provenance | |
| src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | |
| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:15 |
| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | |
| src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | |
| src/main.rs:98:21:98:29 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config |
| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:98:21:98:53 | ... .unwrap() | src/main.rs:98:9:98:17 | file_path | provenance | |
| src/main.rs:99:24:99:32 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:37 | path1 | provenance | |
@@ -65,40 +61,40 @@ edges
| src/main.rs:103:9:103:13 | path1 | src/main.rs:122:27:122:31 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:41 | path1 | provenance | |
| src/main.rs:103:17:103:30 | ...::args | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 |
| src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:10 |
| src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:12 |
| src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:9 |
| src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:10 |
| src/main.rs:103:17:103:48 | ... .unwrap() | src/main.rs:103:9:103:13 | path1 | provenance | |
| src/main.rs:104:33:104:37 | path1 | src/main.rs:104:33:104:45 | path1.clone() | provenance | MaD:8 |
| src/main.rs:104:33:104:45 | path1.clone() | src/main.rs:104:13:104:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:106:9:106:13 | path2 | src/main.rs:107:33:107:37 | path2 | provenance | |
| src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | src/main.rs:106:17:106:61 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | src/main.rs:106:17:106:61 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:106:17:106:61 | ... .unwrap() | src/main.rs:106:9:106:13 | path2 | provenance | |
| src/main.rs:106:39:106:43 | path1 | src/main.rs:106:39:106:51 | path1.clone() | provenance | MaD:8 |
| src/main.rs:106:39:106:51 | path1.clone() | src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | provenance | Config |
| src/main.rs:107:33:107:37 | path2 | src/main.rs:107:13:107:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:109:9:109:13 | path3 | src/main.rs:110:35:110:39 | path3 | provenance | |
| src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | src/main.rs:109:17:109:60 | await ... [Ok] | provenance | |
| src/main.rs:109:17:109:60 | await ... [Ok] | src/main.rs:109:17:109:69 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:109:17:109:60 | await ... [Ok] | src/main.rs:109:17:109:69 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:109:17:109:69 | ... .unwrap() | src/main.rs:109:9:109:13 | path3 | provenance | |
| src/main.rs:109:41:109:45 | path1 | src/main.rs:109:41:109:53 | path1.clone() | provenance | MaD:8 |
| src/main.rs:109:41:109:53 | path1.clone() | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | provenance | Config |
| src/main.rs:110:35:110:39 | path3 | src/main.rs:110:13:110:33 | ...::open | provenance | MaD:4 Sink:MaD:4 |
| src/main.rs:112:9:112:13 | path4 | src/main.rs:113:39:113:43 | path4 | provenance | |
| src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | src/main.rs:112:17:112:64 | await ... [Ok] | provenance | |
| src/main.rs:112:17:112:64 | await ... [Ok] | src/main.rs:112:17:112:73 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:112:17:112:64 | await ... [Ok] | src/main.rs:112:17:112:73 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:112:17:112:73 | ... .unwrap() | src/main.rs:112:9:112:13 | path4 | provenance | |
| src/main.rs:112:45:112:49 | path1 | src/main.rs:112:45:112:57 | path1.clone() | provenance | MaD:8 |
| src/main.rs:112:45:112:57 | path1.clone() | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | provenance | Config |
| src/main.rs:113:39:113:43 | path4 | src/main.rs:113:13:113:37 | ...::open | provenance | MaD:1 Sink:MaD:1 |
| src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:116:33:116:37 | path5 [&ref] | provenance | |
| src/main.rs:115:17:115:44 | ...::new(...) [&ref] | src/main.rs:115:9:115:13 | path5 [&ref] | provenance | |
| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:15 |
| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | |
| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | |
| src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | |
| src/main.rs:118:17:118:21 | path5 [&ref] | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | provenance | Config |
| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:13 |
| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:11 |
| src/main.rs:118:17:118:45 | ... .unwrap() | src/main.rs:118:9:118:13 | path6 | provenance | |
| src/main.rs:119:33:119:37 | path6 | src/main.rs:119:13:119:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:122:27:122:31 | path1 | src/main.rs:122:27:122:39 | path1.clone() | provenance | MaD:8 |
@@ -109,15 +105,15 @@ edges
| src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:174:36:174:43 | path_str [&ref] | provenance | |
| src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:173:8:173:11 | path [&ref] | provenance | |
| src/main.rs:172:16:172:34 | ...::new(...) [&ref] | src/main.rs:172:9:172:12 | path [&ref] | provenance | |
| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:15 |
| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:173:13:173:18 | exists | provenance | MaD:3 Sink:MaD:3 |
| src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:177:36:177:39 | path [&ref] | provenance | |
| src/main.rs:174:36:174:43 | path_str [&ref] | src/main.rs:174:25:174:34 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:177:36:177:39 | path [&ref] | src/main.rs:177:25:177:34 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:185:9:185:13 | path1 | src/main.rs:186:18:186:22 | path1 | provenance | |
| src/main.rs:185:17:185:30 | ...::args | src/main.rs:185:17:185:32 | ...::args(...) [element] | provenance | Src:MaD:7 |
| src/main.rs:185:17:185:32 | ...::args(...) [element] | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | provenance | MaD:10 |
| src/main.rs:185:17:185:39 | ... .nth(...) [Some] | src/main.rs:185:17:185:48 | ... .unwrap() | provenance | MaD:12 |
| src/main.rs:185:17:185:32 | ...::args(...) [element] | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | provenance | MaD:9 |
| src/main.rs:185:17:185:39 | ... .nth(...) [Some] | src/main.rs:185:17:185:48 | ... .unwrap() | provenance | MaD:10 |
| src/main.rs:185:17:185:48 | ... .unwrap() | src/main.rs:185:9:185:13 | path1 | provenance | |
| src/main.rs:186:17:186:22 | &path1 [&ref] | src/main.rs:170:16:170:29 | ...: ... [&ref] | provenance | |
| src/main.rs:186:18:186:22 | path1 | src/main.rs:186:17:186:22 | &path1 [&ref] | provenance | |
@@ -130,15 +126,13 @@ models
| 6 | Sink: std::fs::read_to_string; Argument[0]; path-injection |
| 7 | Source: std::env::args; ReturnValue.Element; commandargs |
| 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 11 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 12 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 13 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 14 | Summary: <std::path::Path>::join; Argument[0]; ReturnValue; taint |
| 15 | Summary: <std::path::Path>::new; Argument[0].Reference; ReturnValue.Reference; value |
| 16 | Summary: <std::path::PathBuf as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 17 | Summary: <std::path::PathBuf as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[std::path::PathBuf::inner]; ReturnValue.Reference; value |
| 9 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 10 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 11 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 12 | Summary: <std::path::Path>::join; Argument[0]; ReturnValue; taint |
| 13 | Summary: <std::path::Path>::new; Argument[0].Reference; ReturnValue.Reference; value |
| 14 | Summary: <std::path::PathBuf as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 15 | Summary: <std::path::PathBuf as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[std::path::PathBuf::inner]; ReturnValue.Reference; value |
nodes
| src/main.rs:7:11:7:19 | file_name | semmle.label | file_name |
| src/main.rs:9:9:9:17 | file_path | semmle.label | file_path |

View File

@@ -38,31 +38,30 @@ edges
| main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 |
| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | |
| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 |
| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:13 |
| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:12 |
| main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | |
| main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 |
| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | |
| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:13 |
| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:16 |
| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:12 |
| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:15 |
| main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | |
| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 |
| main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 |
| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | |
| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 |
| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:13 |
| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:15 |
| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:12 |
| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:14 |
| main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | |
| main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 |
| main.rs:129:6:129:10 | input | main.rs:130:2:130:6 | input | provenance | |
| main.rs:129:14:129:27 | ...::stdin | main.rs:129:14:129:29 | ...::stdin(...) | provenance | Src:MaD:10 MaD:10 |
| main.rs:129:14:129:29 | ...::stdin(...) | main.rs:129:6:129:10 | input | provenance | |
| main.rs:130:2:130:6 | input | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | provenance | MaD:17 |
| main.rs:130:2:130:6 | input | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | provenance | MaD:16 |
| main.rs:130:18:130:32 | [post] &mut input_line [&ref] | main.rs:130:23:130:32 | [post] input_line | provenance | |
| main.rs:130:23:130:32 | [post] input_line | main.rs:132:17:132:26 | input_line | provenance | |
| main.rs:132:6:132:7 | b4 | main.rs:134:36:134:37 | b4 | provenance | |
| main.rs:132:17:132:26 | input_line | main.rs:132:17:132:42 | input_line.parse() [Ok] | provenance | MaD:11 |
| main.rs:132:17:132:26 | input_line | main.rs:132:17:132:42 | input_line.parse() [Ok] | provenance | MaD:12 |
| main.rs:132:17:132:42 | input_line.parse() [Ok] | main.rs:132:17:132:59 | ... .unwrap_or(...) | provenance | MaD:14 |
| main.rs:132:17:132:42 | input_line.parse() [Ok] | main.rs:132:17:132:59 | ... .unwrap_or(...) | provenance | MaD:13 |
| main.rs:132:17:132:59 | ... .unwrap_or(...) | main.rs:132:6:132:7 | b4 | provenance | |
| main.rs:134:36:134:37 | b4 | main.rs:134:4:134:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 |
| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | |
@@ -80,13 +79,12 @@ models
| 8 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 9 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file |
| 10 | Source: std::io::stdio::stdin; ReturnValue; stdin |
| 11 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 12 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 13 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 14 | Summary: <core::result::Result>::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 15 | Summary: <std::fs::Metadata>::is_dir; Argument[self].Reference; ReturnValue; taint |
| 16 | Summary: <std::fs::Metadata>::is_file; Argument[self].Reference; ReturnValue; taint |
| 17 | Summary: <std::io::stdio::Stdin>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 11 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 12 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 13 | Summary: <core::result::Result>::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 14 | Summary: <std::fs::Metadata>::is_dir; Argument[self].Reference; ReturnValue; taint |
| 15 | Summary: <std::fs::Metadata>::is_file; Argument[self].Reference; ReturnValue; taint |
| 16 | Summary: <std::io::stdio::Stdin>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
nodes
| main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs |
| main.rs:4:32:4:35 | true | semmle.label | true |

View File

@@ -59,29 +59,29 @@ edges
| main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | |
| main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | |
| main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | |
| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:42 |
| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:41 |
| main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | |
| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:33 |
| main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:32 | l2 | provenance | |
| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:32 | l2 | provenance | |
| main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | |
| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:28 |
| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:42 |
| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:27 |
| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:41 |
| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:28 |
| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:42 |
| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:36 |
| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:27 |
| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:41 |
| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:35 |
| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 |
| main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | |
| main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | |
| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:34 |
| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | |
| main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | |
| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:25 |
| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:34 |
| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | |
| main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | |
@@ -89,13 +89,13 @@ edges
| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 |
| main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | |
| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | |
| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:34 |
| main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | |
| main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | |
| main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | |
| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:39 |
| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:38 |
| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:34 |
| main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | |
| main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | |
@@ -103,27 +103,27 @@ edges
| main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:48 | v | provenance | |
| main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | |
| main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | |
| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:42 |
| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:41 |
| main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | |
| main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:37 |
| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:42 |
| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 |
| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:41 |
| main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | |
| main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:24 |
| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:37 |
| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:42 |
| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:36 |
| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:41 |
| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:38 |
| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:42 |
| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 |
| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:41 |
| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:25 |
| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:38 |
| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:37 |
| main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | |
| main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | |
| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:41 |
| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:40 |
| main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | |
| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:37 |
| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:36 |
| main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | |
| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | |
@@ -131,32 +131,32 @@ edges
| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:32 | k1 | provenance | |
| main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | |
| main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | |
| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:42 |
| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 |
| main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | |
| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:30 |
| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:29 |
| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | |
| main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | |
| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:31 |
| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:42 |
| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:30 |
| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 |
| main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | |
| main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:42 |
| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:41 |
| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:32 |
| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:33 |
| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:42 |
| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:31 |
| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:32 |
| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:41 |
| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | |
| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:42 |
| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:41 |
| main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | |
| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | |
| main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | |
| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:42 |
| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:41 |
| main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | |
| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:33 |
| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | |
| main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | |
@@ -167,16 +167,16 @@ edges
| main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | |
| main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | |
| main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | |
| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:42 |
| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:41 |
| main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | |
| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | |
| main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | |
| main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | |
| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:42 |
| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:41 |
| main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | |
| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | |
| main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | |
@@ -187,28 +187,28 @@ edges
| main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | |
| main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | |
| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:42 |
| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:41 |
| main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | |
| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | |
| main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | |
| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:42 |
| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:41 |
| main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | |
| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:44 |
| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 |
| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | |
| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:42 |
| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:41 |
| main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | |
| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:43 |
| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 |
| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | |
| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:42 |
| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:41 |
| main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | |
| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:33 |
| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | |
| main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
@@ -216,9 +216,9 @@ edges
| main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | |
| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | |
| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | |
| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:42 |
| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 |
| main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | |
| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:28 |
| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:12 Sink:MaD:12 |
| main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | |
| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 |
@@ -258,18 +258,17 @@ edges
| main.rs:282:24:282:41 | ...: String | main.rs:283:21:283:30 | user_input | provenance | |
| main.rs:283:9:283:17 | num_bytes | main.rs:285:54:285:62 | num_bytes | provenance | |
| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:26 |
| main.rs:283:21:283:30 | user_input | main.rs:283:21:283:47 | user_input.parse() [Ok] | provenance | MaD:27 |
| main.rs:283:21:283:47 | user_input.parse() [Ok] | main.rs:283:21:283:48 | TryExpr | provenance | |
| main.rs:283:21:283:48 | TryExpr | main.rs:283:21:283:77 | ... * ... | provenance | MaD:25 |
| main.rs:283:21:283:77 | ... * ... | main.rs:283:9:283:17 | num_bytes | provenance | |
| main.rs:285:9:285:14 | layout | main.rs:287:40:287:45 | layout | provenance | |
| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:42 |
| main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | main.rs:285:18:285:75 | ... .unwrap() | provenance | MaD:41 |
| main.rs:285:18:285:75 | ... .unwrap() | main.rs:285:9:285:14 | layout | provenance | |
| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
| main.rs:285:54:285:62 | num_bytes | main.rs:285:18:285:66 | ...::from_size_align(...) [Ok] | provenance | MaD:33 |
| main.rs:287:40:287:45 | layout | main.rs:287:22:287:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:311:25:311:38 | ...::args | main.rs:311:25:311:40 | ...::args(...) [element] | provenance | Src:MaD:22 |
| main.rs:311:25:311:40 | ...::args(...) [element] | main.rs:311:25:311:47 | ... .nth(...) [Some] | provenance | MaD:23 |
| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:40 |
| main.rs:311:25:311:47 | ... .nth(...) [Some] | main.rs:311:25:311:74 | ... .unwrap_or(...) | provenance | MaD:39 |
| main.rs:311:25:311:74 | ... .unwrap_or(...) | main.rs:282:24:282:41 | ...: String | provenance | |
| main.rs:320:9:320:9 | v | main.rs:323:34:323:34 | v | provenance | |
| main.rs:320:9:320:9 | v | main.rs:324:42:324:42 | v | provenance | |
@@ -279,10 +278,9 @@ edges
| main.rs:320:9:320:9 | v | main.rs:328:22:328:22 | v | provenance | |
| main.rs:320:13:320:26 | ...::args | main.rs:320:13:320:28 | ...::args(...) [element] | provenance | Src:MaD:22 |
| main.rs:320:13:320:28 | ...::args(...) [element] | main.rs:320:13:320:35 | ... .nth(...) [Some] | provenance | MaD:23 |
| main.rs:320:13:320:35 | ... .nth(...) [Some] | main.rs:320:13:320:65 | ... .unwrap_or(...) | provenance | MaD:40 |
| main.rs:320:13:320:35 | ... .nth(...) [Some] | main.rs:320:13:320:65 | ... .unwrap_or(...) | provenance | MaD:39 |
| main.rs:320:13:320:65 | ... .unwrap_or(...) | main.rs:320:13:320:82 | ... .parse() [Ok] | provenance | MaD:26 |
| main.rs:320:13:320:65 | ... .unwrap_or(...) | main.rs:320:13:320:82 | ... .parse() [Ok] | provenance | MaD:27 |
| main.rs:320:13:320:82 | ... .parse() [Ok] | main.rs:320:13:320:91 | ... .unwrap() | provenance | MaD:42 |
| main.rs:320:13:320:82 | ... .parse() [Ok] | main.rs:320:13:320:91 | ... .unwrap() | provenance | MaD:41 |
| main.rs:320:13:320:91 | ... .unwrap() | main.rs:320:9:320:9 | v | provenance | |
| main.rs:323:34:323:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | |
| main.rs:324:42:324:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | |
@@ -316,25 +314,24 @@ models
| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 24 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint |
| 25 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self,0]; ReturnValue; taint |
| 26 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint |
| 27 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 28 | Summary: <core::alloc::layout::Layout>::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 29 | Summary: <core::alloc::layout::Layout>::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 30 | Summary: <core::alloc::layout::Layout>::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 31 | Summary: <core::alloc::layout::Layout>::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 32 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 34 | Summary: <core::alloc::layout::Layout>::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 35 | Summary: <core::alloc::layout::Layout>::from_size_align_unchecked; Argument[0]; ReturnValue; taint |
| 36 | Summary: <core::alloc::layout::Layout>::pad_to_align; Argument[self].Reference; ReturnValue; taint |
| 37 | Summary: <core::alloc::layout::Layout>::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 38 | Summary: <core::alloc::layout::Layout>::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 39 | Summary: <core::alloc::layout::Layout>::size; Argument[self].Reference; ReturnValue; taint |
| 40 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 41 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 42 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 43 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
| 44 | Summary: core::cmp::min; Argument[0]; ReturnValue; value |
| 26 | Summary: <alloc::string::String as core::ops::deref::Deref>::deref; Argument[self]; ReturnValue; value |
| 27 | Summary: <core::alloc::layout::Layout>::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 28 | Summary: <core::alloc::layout::Layout>::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 29 | Summary: <core::alloc::layout::Layout>::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 30 | Summary: <core::alloc::layout::Layout>::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 31 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 32 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <core::alloc::layout::Layout>::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 34 | Summary: <core::alloc::layout::Layout>::from_size_align_unchecked; Argument[0]; ReturnValue; taint |
| 35 | Summary: <core::alloc::layout::Layout>::pad_to_align; Argument[self].Reference; ReturnValue; taint |
| 36 | Summary: <core::alloc::layout::Layout>::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
| 37 | Summary: <core::alloc::layout::Layout>::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 38 | Summary: <core::alloc::layout::Layout>::size; Argument[self].Reference; ReturnValue; taint |
| 39 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 40 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 41 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 42 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
| 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value |
nodes
| main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize |
| main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc |

View File

@@ -23,32 +23,32 @@ edges
| test_cipher.rs:18:28:18:36 | &... [&ref] | test_cipher.rs:18:9:18:14 | const1 [&ref] | provenance | |
| test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:18:28:18:36 | &... [&ref] | provenance | |
| test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | test_cipher.rs:19:30:19:47 | ...::new | provenance | MaD:3 Sink:MaD:3 |
| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:18 |
| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:17 |
| test_cipher.rs:25:9:25:14 | const4 [&ref] | test_cipher.rs:26:66:26:71 | const4 [&ref] | provenance | |
| test_cipher.rs:25:28:25:36 | &... [&ref] | test_cipher.rs:25:9:25:14 | const4 [&ref] | provenance | |
| test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:25:28:25:36 | &... [&ref] | provenance | |
| test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | test_cipher.rs:26:30:26:40 | ...::new | provenance | MaD:4 Sink:MaD:4 |
| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:18 |
| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:17 |
| test_cipher.rs:29:9:29:14 | const5 [&ref] | test_cipher.rs:30:95:30:100 | const5 [&ref] | provenance | |
| test_cipher.rs:29:28:29:36 | &... [&ref] | test_cipher.rs:29:9:29:14 | const5 [&ref] | provenance | |
| test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:29:28:29:36 | &... [&ref] | provenance | |
| test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | test_cipher.rs:30:30:30:40 | ...::new | provenance | MaD:5 Sink:MaD:5 |
| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:18 |
| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:17 |
| test_cipher.rs:37:9:37:14 | const7 | test_cipher.rs:38:74:38:79 | const7 | provenance | |
| test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:9:37:14 | const7 | provenance | |
| test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | test_cipher.rs:38:30:38:47 | ...::new | provenance | MaD:3 Sink:MaD:3 |
| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:18 |
| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:17 |
| test_cipher.rs:38:74:38:79 | const7 | test_cipher.rs:38:73:38:79 | &const7 [&ref] | provenance | |
| test_cipher.rs:41:9:41:14 | const8 [&ref] | test_cipher.rs:42:73:42:78 | const8 [&ref] | provenance | |
| test_cipher.rs:41:28:41:76 | &... [&ref] | test_cipher.rs:41:9:41:14 | const8 [&ref] | provenance | |
| test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:28:41:76 | &... [&ref] | provenance | |
| test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | test_cipher.rs:42:30:42:47 | ...::new | provenance | MaD:3 Sink:MaD:3 |
| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:18 |
| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:17 |
| test_cipher.rs:50:9:50:15 | const10 [element] | test_cipher.rs:51:75:51:81 | const10 [element] | provenance | |
| test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | provenance | Src:MaD:7 |
| test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | test_cipher.rs:50:9:50:15 | const10 [element] | provenance | |
| test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | test_cipher.rs:51:31:51:48 | ...::new | provenance | MaD:3 Sink:MaD:3 Sink:MaD:3 |
| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:18 |
| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:17 |
| test_cipher.rs:51:75:51:81 | const10 [element] | test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | provenance | |
| test_cipher.rs:73:9:73:14 | const2 [&ref] | test_cipher.rs:74:46:74:51 | const2 [&ref] | provenance | |
| test_cipher.rs:73:18:73:26 | &... [&ref] | test_cipher.rs:73:9:73:14 | const2 [&ref] | provenance | |
@@ -64,15 +64,14 @@ edges
| test_cookie.rs:22:27:22:32 | array2 | test_cookie.rs:22:26:22:32 | &array2 [&ref] | provenance | |
| test_cookie.rs:38:9:38:14 | array2 | test_cookie.rs:42:34:42:39 | array2 | provenance | |
| test_cookie.rs:38:18:38:37 | ...::from(...) | test_cookie.rs:38:9:38:14 | array2 | provenance | |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:8 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:12 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:13 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:14 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:15 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:16 |
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:17 |
| test_cookie.rs:42:34:42:39 | array2 | test_cookie.rs:42:14:42:32 | ...::from | provenance | MaD:2 Sink:MaD:2 |
| test_cookie.rs:49:9:49:14 | array3 [element] | test_cookie.rs:53:34:53:39 | array3 [element] | provenance | |
| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:19 |
| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:18 |
| test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | test_cookie.rs:49:9:49:14 | array3 [element] | provenance | |
| test_cookie.rs:53:34:53:39 | array3 [element] | test_cookie.rs:53:14:53:32 | ...::from | provenance | MaD:2 Sink:MaD:2 |
| test_heuristic.rs:44:9:44:16 | const_iv [&ref] | test_heuristic.rs:45:41:45:48 | const_iv | provenance | |
@@ -80,11 +79,11 @@ edges
| test_heuristic.rs:44:31:44:38 | [0u8; 16] | test_heuristic.rs:44:30:44:38 | &... [&ref] | provenance | |
| test_heuristic.rs:64:20:64:27 | [0u8; 16] | test_heuristic.rs:64:19:64:27 | &... | provenance | |
| test_heuristic.rs:65:31:65:38 | [0u8; 16] | test_heuristic.rs:65:30:65:38 | &... | provenance | |
| test_heuristic.rs:69:32:69:32 | 1 | test_heuristic.rs:69:22:69:32 | ... + ... | provenance | MaD:9 |
| test_heuristic.rs:70:23:70:35 | ... << ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:11 |
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:12 |
| test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:11 |
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:41:70:61 | ... & ... | provenance | MaD:10 |
| test_heuristic.rs:69:32:69:32 | 1 | test_heuristic.rs:69:22:69:32 | ... + ... | provenance | MaD:8 |
| test_heuristic.rs:70:23:70:35 | ... << ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:10 |
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:11 |
| test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:10 |
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:41:70:61 | ... & ... | provenance | MaD:9 |
models
| 1 | Sink: <_ as crypto_common::KeyInit>::new_from_slice; Argument[0]; credentials-key |
| 2 | Sink: <biscotti::crypto::master::Key>::from; Argument[0]; credentials-key |
@@ -93,18 +92,17 @@ models
| 5 | Sink: <cipher::stream_wrapper::StreamCipherCoreWrapper as crypto_common::KeyIvInit>::new; Argument[1]; credentials-iv |
| 6 | Sink: <cookie::secure::key::Key>::from; Argument[0].Reference; credentials-key |
| 7 | Source: core::mem::zeroed; ReturnValue.Element; constant-source |
| 8 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 9 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint |
| 10 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[self,0]; ReturnValue; taint |
| 11 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self,0]; ReturnValue; taint |
| 12 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0]; ReturnValue; taint |
| 13 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 14 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::bstr::ByteString(0)]; ReturnValue; value |
| 15 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::collections::binary_heap::BinaryHeap::data]; ReturnValue; value |
| 16 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::string::String::vec]; ReturnValue; value |
| 17 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 18 | Summary: <generic_array::GenericArray>::from_slice; Argument[0].Reference; ReturnValue.Reference; value |
| 19 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value |
| 8 | Summary: <_ as core::ops::arith::Add>::add; Argument[self,0]; ReturnValue; taint |
| 9 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[self,0]; ReturnValue; taint |
| 10 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self,0]; ReturnValue; taint |
| 11 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[self,0]; ReturnValue; taint |
| 12 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value |
| 13 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::bstr::ByteString(0)]; ReturnValue; value |
| 14 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::collections::binary_heap::BinaryHeap::data]; ReturnValue; value |
| 15 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0].Field[alloc::string::String::vec]; ReturnValue; value |
| 16 | Summary: <alloc::vec::Vec as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 17 | Summary: <generic_array::GenericArray>::from_slice; Argument[0].Reference; ReturnValue.Reference; value |
| 18 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value |
nodes
| test_cipher.rs:18:9:18:14 | const1 [&ref] | semmle.label | const1 [&ref] |
| test_cipher.rs:18:28:18:36 | &... [&ref] | semmle.label | &... [&ref] |