mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge pull request #20953 from hvitved/rust/data-flow-call-models
Rust: Model more data flow constructs as calls using MaD
This commit is contained in:
@@ -90,8 +90,6 @@ final class DataFlowCall extends TDataFlowCall {
|
||||
* Holds if `arg` is an argument of `call` at the position `pos`.
|
||||
*/
|
||||
predicate isArgumentForCall(Expr arg, Call call, RustDataFlow::ArgumentPosition pos) {
|
||||
// TODO: Handle index expressions as calls in data flow.
|
||||
not call instanceof IndexExpr and
|
||||
arg = pos.getArgument(call)
|
||||
}
|
||||
|
||||
@@ -206,8 +204,11 @@ module LocalFlow {
|
||||
)
|
||||
or
|
||||
// An edge from a pattern/expression to its corresponding SSA definition.
|
||||
nodeFrom.(AstNodeNode).getAstNode() =
|
||||
nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess()
|
||||
exists(AstNode n |
|
||||
n = nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess() and
|
||||
n = nodeFrom.(AstNodeNode).getAstNode() and
|
||||
not n = any(CompoundAssignmentExpr cae).getLhs()
|
||||
)
|
||||
or
|
||||
nodeFrom.(SourceParameterNode).getParameter().(Param).getPat() = nodeTo.asPat()
|
||||
or
|
||||
@@ -261,6 +262,30 @@ private module Aliases {
|
||||
class LambdaCallKindAlias = LambdaCallKind;
|
||||
}
|
||||
|
||||
/**
|
||||
* Index assignments like `a[i] = rhs` are treated as `*a.index_mut(i) = rhs`,
|
||||
* so they should in principle be handled by `referenceAssignment`.
|
||||
*
|
||||
* However, this would require support for [generalized reverse flow][1], which
|
||||
* is not yet implemented, so instead we simulate reverse flow where it would
|
||||
* have applied via the model for `<_ as core::ops::index::IndexMut>::index_mut`.
|
||||
*
|
||||
* The same is the case for compound assignments like `a[i] += rhs`, which are
|
||||
* treated as `(*a.index_mut(i)).add_assign(rhs)`.
|
||||
*
|
||||
* [1]: https://github.com/github/codeql/pull/18109
|
||||
*/
|
||||
predicate indexAssignment(
|
||||
AssignmentOperation assignment, IndexExpr index, Node rhs, PostUpdateNode base, Content c
|
||||
) {
|
||||
assignment.getLhs() = index and
|
||||
rhs.asExpr() = assignment.getRhs() and
|
||||
base.getPreUpdateNode().asExpr() = index.getBase() and
|
||||
c instanceof ElementContent and
|
||||
// simulate that the flow summary applies
|
||||
not index.getResolvedTarget().fromSource()
|
||||
}
|
||||
|
||||
module RustDataFlow implements InputSig<Location> {
|
||||
private import Aliases
|
||||
private import codeql.rust.dataflow.DataFlow
|
||||
@@ -360,6 +385,7 @@ module RustDataFlow implements InputSig<Location> {
|
||||
node instanceof ClosureParameterNode or
|
||||
node instanceof DerefBorrowNode or
|
||||
node instanceof DerefOutNode or
|
||||
node instanceof IndexOutNode or
|
||||
node.asExpr() instanceof ParenExpr or
|
||||
nodeIsHidden(node.(PostUpdateNode).getPreUpdateNode())
|
||||
}
|
||||
@@ -399,13 +425,26 @@ module RustDataFlow implements InputSig<Location> {
|
||||
|
||||
final class ReturnKind = ReturnKindAlias;
|
||||
|
||||
private Function getStaticTargetExt(Call c) {
|
||||
result = c.getStaticTarget()
|
||||
or
|
||||
// If the static target of an overloaded operation cannot be resolved, we fall
|
||||
// back to the trait method as the target. This ensures that the flow models
|
||||
// still apply.
|
||||
not exists(c.getStaticTarget()) and
|
||||
exists(TraitItemNode t, string methodName |
|
||||
c.(Operation).isOverloaded(t, methodName, _) and
|
||||
result = t.getAssocItem(methodName)
|
||||
)
|
||||
}
|
||||
|
||||
/** Gets a viable implementation of the target of the given `Call`. */
|
||||
DataFlowCallable viableCallable(DataFlowCall call) {
|
||||
exists(Call c | c = call.asCall() |
|
||||
result.asCfgScope() = c.getARuntimeTarget()
|
||||
or
|
||||
exists(SummarizedCallable sc, Function staticTarget |
|
||||
staticTarget = c.getStaticTarget() and
|
||||
staticTarget = getStaticTargetExt(c) and
|
||||
sc = result.asSummarizedCallable()
|
||||
|
|
||||
sc = staticTarget
|
||||
@@ -552,12 +591,6 @@ module RustDataFlow implements InputSig<Location> {
|
||||
access = c.(FieldContent).getAnAccess()
|
||||
)
|
||||
or
|
||||
exists(IndexExpr arr |
|
||||
c instanceof ElementContent and
|
||||
node1.asExpr() = arr.getBase() and
|
||||
node2.asExpr() = arr
|
||||
)
|
||||
or
|
||||
exists(ForExpr for |
|
||||
c instanceof ElementContent and
|
||||
node1.asExpr() = for.getIterable() and
|
||||
@@ -583,6 +616,12 @@ module RustDataFlow implements InputSig<Location> {
|
||||
node2.asExpr() = deref
|
||||
)
|
||||
or
|
||||
exists(IndexExpr index |
|
||||
c instanceof ReferenceContent and
|
||||
node1.(IndexOutNode).getIndexExpr() = index and
|
||||
node2.asExpr() = index
|
||||
)
|
||||
or
|
||||
// Read from function return
|
||||
exists(DataFlowCall call |
|
||||
lambdaCall(call, _, node1) and
|
||||
@@ -602,8 +641,18 @@ module RustDataFlow implements InputSig<Location> {
|
||||
implicitDeref(node1, node2, c)
|
||||
or
|
||||
// A read step dual to the store step for implicit borrows.
|
||||
implicitBorrow(node2.(PostUpdateNode).getPreUpdateNode(),
|
||||
node1.(PostUpdateNode).getPreUpdateNode(), c)
|
||||
exists(Node n | implicitBorrow(n, node1.(PostUpdateNode).getPreUpdateNode(), c) |
|
||||
node2.(PostUpdateNode).getPreUpdateNode() = n
|
||||
or
|
||||
// For compound assignments into variables like `x += y`, we do not want flow into
|
||||
// `[post] x`, as that would create spurious flow when `x` is a parameter. Instead,
|
||||
// we add the step directly into the SSA definition for `x` after the update.
|
||||
exists(CompoundAssignmentExpr cae, Expr lhs |
|
||||
lhs = cae.getLhs() and
|
||||
lhs = node2.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess() and
|
||||
n = TExprNode(lhs)
|
||||
)
|
||||
)
|
||||
or
|
||||
VariableCapture::readStep(node1, c, node2)
|
||||
}
|
||||
@@ -644,13 +693,27 @@ module RustDataFlow implements InputSig<Location> {
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate referenceAssignment(Node node1, Node node2, ReferenceContent c) {
|
||||
exists(AssignmentExpr assignment, PrefixExpr deref |
|
||||
assignment.getLhs() = deref and
|
||||
deref.getOperatorName() = "*" and
|
||||
private predicate referenceAssignment(
|
||||
Node node1, Node node2, Expr e, boolean clears, ReferenceContent c
|
||||
) {
|
||||
exists(AssignmentExpr assignment, Expr lhs |
|
||||
assignment.getLhs() = lhs and
|
||||
node1.asExpr() = assignment.getRhs() and
|
||||
node2.asExpr() = deref.getExpr() and
|
||||
exists(c)
|
||||
|
|
||||
lhs =
|
||||
any(DerefExpr de |
|
||||
de = node2.(DerefOutNode).getDerefExpr() and
|
||||
e = de.getExpr()
|
||||
) and
|
||||
clears = true
|
||||
or
|
||||
lhs =
|
||||
any(IndexExpr ie |
|
||||
ie = node2.(IndexOutNode).getIndexExpr() and
|
||||
e = ie.getBase() and
|
||||
clears = false
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -694,14 +757,14 @@ module RustDataFlow implements InputSig<Location> {
|
||||
or
|
||||
fieldAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c)
|
||||
or
|
||||
referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c)
|
||||
referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), _, _, c)
|
||||
or
|
||||
exists(AssignmentExpr assignment, IndexExpr index |
|
||||
c instanceof ElementContent and
|
||||
assignment.getLhs() = index and
|
||||
node1.asExpr() = assignment.getRhs() and
|
||||
node2.(PostUpdateNode).getPreUpdateNode().asExpr() = index.getBase()
|
||||
)
|
||||
indexAssignment(any(AssignmentExpr ae), _, node1, node2, c)
|
||||
or
|
||||
// Compund assignment like `a[i] += rhs` are modeled as a store step from `rhs`
|
||||
// to `[post] a[i]`, followed by a taint step into `[post] a`.
|
||||
indexAssignment(any(CompoundAssignmentExpr cae),
|
||||
node2.(PostUpdateNode).getPreUpdateNode().asExpr(), node1, _, c)
|
||||
or
|
||||
referenceExprToExpr(node1, node2, c)
|
||||
or
|
||||
@@ -738,7 +801,7 @@ module RustDataFlow implements InputSig<Location> {
|
||||
predicate clearsContent(Node n, ContentSet cs) {
|
||||
fieldAssignment(_, n, cs.(SingletonContentSet).getContent())
|
||||
or
|
||||
referenceAssignment(_, n, cs.(SingletonContentSet).getContent())
|
||||
referenceAssignment(_, _, n.asExpr(), true, cs.(SingletonContentSet).getContent())
|
||||
or
|
||||
FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), cs)
|
||||
or
|
||||
@@ -982,9 +1045,7 @@ private module Cached {
|
||||
newtype TDataFlowCall =
|
||||
TCall(Call call) {
|
||||
Stages::DataFlowStage::ref() and
|
||||
call.hasEnclosingCfgScope() and
|
||||
// TODO: Handle index expressions as calls in data flow.
|
||||
not call instanceof IndexExpr
|
||||
call.hasEnclosingCfgScope()
|
||||
} or
|
||||
TSummaryCall(
|
||||
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
|
||||
|
||||
@@ -350,7 +350,8 @@ final private class ExprOutNode extends ExprNode, OutNode {
|
||||
ExprOutNode() {
|
||||
exists(Call call |
|
||||
call = this.asExpr() and
|
||||
not call instanceof DerefExpr // Handled by `DerefOutNode`
|
||||
not call instanceof DerefExpr and // Handled by `DerefOutNode`
|
||||
not call instanceof IndexExpr // Handled by `IndexOutNode`
|
||||
)
|
||||
}
|
||||
|
||||
@@ -387,6 +388,32 @@ class DerefOutNode extends OutNode, TDerefOutNode {
|
||||
override string toString() { result = de.toString() + " [pre-dereferenced]" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A node that represents the value of a `x[y]` expression _before_ implicit
|
||||
* dereferencing:
|
||||
*
|
||||
* `x[y]` equivalent to `*x.index(y)`, and this node represents the
|
||||
* `x.index(y)` part.
|
||||
*/
|
||||
class IndexOutNode extends OutNode, TIndexOutNode {
|
||||
IndexExpr ie;
|
||||
|
||||
IndexOutNode() { this = TIndexOutNode(ie, false) }
|
||||
|
||||
IndexExpr getIndexExpr() { result = ie }
|
||||
|
||||
override CfgScope getCfgScope() { result = ie.getEnclosingCfgScope() }
|
||||
|
||||
override DataFlowCall getCall(ReturnKind kind) {
|
||||
result.asCall() = ie and
|
||||
kind = TNormalReturnKind()
|
||||
}
|
||||
|
||||
override Location getLocation() { result = ie.getLocation() }
|
||||
|
||||
override string toString() { result = ie.toString() + " [pre-dereferenced]" }
|
||||
}
|
||||
|
||||
final class SummaryOutNode extends FlowSummaryNode, OutNode {
|
||||
private DataFlowCall call;
|
||||
private ReturnKind kind_;
|
||||
@@ -476,6 +503,18 @@ class DerefOutPostUpdateNode extends PostUpdateNode, TDerefOutNode {
|
||||
override Location getLocation() { result = de.getLocation() }
|
||||
}
|
||||
|
||||
class IndexOutPostUpdateNode extends PostUpdateNode, TIndexOutNode {
|
||||
IndexExpr ie;
|
||||
|
||||
IndexOutPostUpdateNode() { this = TIndexOutNode(ie, true) }
|
||||
|
||||
override IndexOutNode getPreUpdateNode() { result = TIndexOutNode(ie, false) }
|
||||
|
||||
override CfgScope getCfgScope() { result = ie.getEnclosingCfgScope() }
|
||||
|
||||
override Location getLocation() { result = ie.getLocation() }
|
||||
}
|
||||
|
||||
final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode {
|
||||
private FlowSummaryNode pre;
|
||||
|
||||
@@ -514,7 +553,10 @@ newtype TNode =
|
||||
TExprPostUpdateNode(Expr e) {
|
||||
e.hasEnclosingCfgScope() and
|
||||
(
|
||||
isArgumentForCall(e, _, _)
|
||||
isArgumentForCall(e, _, _) and
|
||||
// For compound assignments into variables like `x += y`, we do not want flow into
|
||||
// `[post] x`, as that would create spurious flow when `x` is a parameter.
|
||||
not (e = any(CompoundAssignmentExpr cae).getLhs() and e instanceof VariableAccess)
|
||||
or
|
||||
lambdaCallExpr(_, _, e)
|
||||
or
|
||||
@@ -526,7 +568,6 @@ newtype TNode =
|
||||
or
|
||||
e =
|
||||
[
|
||||
any(IndexExpr i).getBase(), //
|
||||
any(FieldExpr access).getContainer(), //
|
||||
any(TryExpr try).getExpr(), //
|
||||
any(AwaitExpr a).getExpr(), //
|
||||
@@ -542,6 +583,7 @@ newtype TNode =
|
||||
borrow = true
|
||||
} or
|
||||
TDerefOutNode(DerefExpr de, Boolean isPost) or
|
||||
TIndexOutNode(IndexExpr ie, Boolean isPost) or
|
||||
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or
|
||||
TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) {
|
||||
forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() |
|
||||
|
||||
@@ -20,18 +20,6 @@ module RustTaintTracking implements InputSig<Location, RustDataFlow> {
|
||||
Stages::DataFlowStage::ref() and
|
||||
model = "" and
|
||||
(
|
||||
exists(BinaryExpr binary |
|
||||
binary.getOperatorName() = ["+", "-", "*", "/", "%", "&", "|", "^", "<<", ">>"] and
|
||||
pred.asExpr() = [binary.getLhs(), binary.getRhs()] and
|
||||
succ.asExpr() = binary
|
||||
)
|
||||
or
|
||||
exists(PrefixExpr prefix |
|
||||
prefix.getOperatorName() = ["-", "!"] and
|
||||
pred.asExpr() = prefix.getExpr() and
|
||||
succ.asExpr() = prefix
|
||||
)
|
||||
or
|
||||
pred.asExpr() = succ.asExpr().(CastExpr).getExpr()
|
||||
or
|
||||
exists(IndexExpr index |
|
||||
@@ -65,6 +53,9 @@ module RustTaintTracking implements InputSig<Location, RustDataFlow> {
|
||||
or
|
||||
succ.(Node::PostUpdateNode).getPreUpdateNode().asExpr() =
|
||||
getPostUpdateReverseStep(pred.(Node::PostUpdateNode).getPreUpdateNode().asExpr(), false)
|
||||
or
|
||||
indexAssignment(any(CompoundAssignmentExpr cae),
|
||||
pred.(Node::PostUpdateNode).getPreUpdateNode().asExpr(), _, succ, _)
|
||||
)
|
||||
or
|
||||
FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(Node::FlowSummaryNode).getSummaryNode(),
|
||||
|
||||
@@ -131,6 +131,7 @@ module Impl {
|
||||
* Holds if this operation is overloaded to the method `methodName` of the
|
||||
* trait `trait`.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
predicate isOverloaded(Trait trait, string methodName, int borrows) {
|
||||
isOverloaded(this.getOperatorName(), this.getNumberOfOperands(), trait.getCanonicalPath(),
|
||||
methodName, borrows)
|
||||
|
||||
@@ -676,12 +676,12 @@ module Impl {
|
||||
predicate isCapture() { this.getEnclosingCfgScope() != v.getEnclosingCfgScope() }
|
||||
}
|
||||
|
||||
/** Holds if `e` occurs in the LHS of an assignment or compound assignment. */
|
||||
private predicate assignmentExprDescendant(AssignmentExpr ae, Expr e) {
|
||||
e = ae.getLhs()
|
||||
/** Holds if `e` occurs in the LHS of an assignment operation. */
|
||||
predicate assignmentOperationDescendant(AssignmentOperation ao, Expr e) {
|
||||
e = ao.getLhs()
|
||||
or
|
||||
exists(Expr mid |
|
||||
assignmentExprDescendant(ae, mid) and
|
||||
assignmentOperationDescendant(ao, mid) and
|
||||
getImmediateParentAdj(e) = mid and
|
||||
not mid instanceof DerefExpr and
|
||||
not mid instanceof FieldExpr and
|
||||
@@ -696,7 +696,7 @@ module Impl {
|
||||
cached
|
||||
VariableWriteAccess() {
|
||||
Cached::ref() and
|
||||
assignmentExprDescendant(ae, this)
|
||||
assignmentOperationDescendant(ae, this)
|
||||
}
|
||||
|
||||
/** Gets the assignment expression that has this write access in the left-hand side. */
|
||||
|
||||
@@ -6,10 +6,73 @@ extensions:
|
||||
# Builtin deref
|
||||
- ["<& as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"]
|
||||
- ["<&mut as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"]
|
||||
# Arithmetic
|
||||
# Index
|
||||
- ["<_ as core::ops::index::Index>::index", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"]
|
||||
- ["<_ 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::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
# Arithmetic operators
|
||||
- ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Sub>::sub", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Mul>::mul", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Div>::div", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::Rem>::rem", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
# Arithmetic assignment expressions
|
||||
- ["<_ as core::ops::arith::AddAssign>::add_assign", "Argument[self].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::AddAssign>::add_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::AddAssign>::add_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::SubAssign>::sub_assign", "Argument[self].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::SubAssign>::sub_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::SubAssign>::sub_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::MulAssign>::mul_assign", "Argument[self].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::MulAssign>::mul_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::MulAssign>::mul_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::DivAssign>::div_assign", "Argument[self].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::DivAssign>::div_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::DivAssign>::div_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::RemAssign>::rem_assign", "Argument[self].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::RemAssign>::rem_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::arith::RemAssign>::rem_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
# Bitwise operators
|
||||
- ["<_ as core::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitAnd>::bitand", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitOr>::bitor", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitXor>::bitxor", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
# Bitwise assignment operators
|
||||
- ["<_ as core::ops::bit::BitAndAssign>::bitand_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitAndAssign>::bitand_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitOrAssign>::bitor_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitOrAssign>::bitor_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitXorAssign>::bitxor_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::BitXorAssign>::bitxor_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
# Shift operators
|
||||
- ["<_ as core::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::Shl>::shl", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::Shr>::shr", "Argument[0].Reference", "ReturnValue", "taint", "manual"]
|
||||
# Shift assignment operators
|
||||
- ["<_ as core::ops::bit::ShlAssign>::shl_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::ShlAssign>::shl_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::ShrAssign>::shr_assign", "Argument[0]", "Argument[self].Reference", "taint", "manual"]
|
||||
- ["<_ as core::ops::bit::ShrAssign>::shr_assign", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"]
|
||||
# Clone
|
||||
- ["<_ as core::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "manual"]
|
||||
# Conversions
|
||||
|
||||
@@ -9,6 +9,7 @@ private import TypeMention
|
||||
private import typeinference.FunctionType
|
||||
private import typeinference.FunctionOverloading as FunctionOverloading
|
||||
private import typeinference.BlanketImplementation as BlanketImplementation
|
||||
private import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl
|
||||
private import codeql.rust.internal.CachedStages
|
||||
private import codeql.typeinference.internal.TypeInference
|
||||
private import codeql.rust.frameworks.stdlib.Stdlib
|
||||
@@ -672,7 +673,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat
|
||||
|
||||
/**
|
||||
* Holds if `child` is a child of `parent`, and the Rust compiler applies [least
|
||||
* upper bound (LUB) coercion](1) to infer the type of `parent` from the type of
|
||||
* upper bound (LUB) coercion][1] to infer the type of `parent` from the type of
|
||||
* `child`.
|
||||
*
|
||||
* In this case, we want type information to only flow from `child` to `parent`,
|
||||
@@ -1645,9 +1646,14 @@ private module MethodResolution {
|
||||
}
|
||||
|
||||
private class MethodCallIndexExpr extends MethodCall instanceof IndexExpr {
|
||||
private predicate isInMutableContext() {
|
||||
// todo: does not handle all cases yet
|
||||
VariableImpl::assignmentOperationDescendant(_, this)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
override predicate hasNameAndArity(string name, int arity) {
|
||||
name = "index" and
|
||||
(if this.isInMutableContext() then name = "index_mut" else name = "index") and
|
||||
arity = 1
|
||||
}
|
||||
|
||||
@@ -1661,7 +1667,11 @@ private module MethodResolution {
|
||||
|
||||
override predicate supportsAutoDerefAndBorrow() { any() }
|
||||
|
||||
override Trait getTrait() { result.getCanonicalPath() = "core::ops::index::Index" }
|
||||
override Trait getTrait() {
|
||||
if this.isInMutableContext()
|
||||
then result.getCanonicalPath() = "core::ops::index::IndexMut"
|
||||
else result.getCanonicalPath() = "core::ops::index::Index"
|
||||
}
|
||||
}
|
||||
|
||||
private class MethodCallCallExpr extends MethodCall instanceof CallExpr {
|
||||
|
||||
@@ -31,7 +31,12 @@ private module FlowTestImpl implements InputSig<Location, RustDataFlow> {
|
||||
|
||||
private string getSourceArgString(DataFlow::Node src) {
|
||||
defaultSource(src) and
|
||||
result = src.asExpr().(Call).getPositionalArgument(0).toString()
|
||||
exists(Expr arg | arg = src.asExpr().(Call).getPositionalArgument(0) |
|
||||
not arg instanceof ArrayListExpr and
|
||||
result = arg.toString()
|
||||
or
|
||||
result = arg.(ArrayListExpr).getExpr(0).toString()
|
||||
)
|
||||
or
|
||||
sourceNode(src, _) and
|
||||
result =
|
||||
|
||||
7
rust/ql/test/library-tests/dataflow/collections/Cargo.lock
generated
Normal file
7
rust/ql/test/library-tests/dataflow/collections/Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "test"
|
||||
version = "0.0.1"
|
||||
@@ -0,0 +1,254 @@
|
||||
models
|
||||
| 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
|
||||
| 2 | Summary: <_ as core::ops::arith::AddAssign>::add_assign; Argument[0].Reference; Argument[self].Reference; taint |
|
||||
| 3 | Summary: <_ as core::ops::arith::AddAssign>::add_assign; Argument[0]; Argument[self].Reference; taint |
|
||||
| 4 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
edges
|
||||
| main.rs:15:13:15:13 | s | main.rs:16:20:16:20 | s | provenance | |
|
||||
| main.rs:15:17:15:25 | source(...) | main.rs:15:13:15:13 | s | provenance | |
|
||||
| main.rs:16:13:16:15 | arr [element] | main.rs:17:14:17:16 | arr [element] | provenance | |
|
||||
| main.rs:16:13:16:15 | arr [element] | main.rs:18:15:18:17 | arr [element] | provenance | |
|
||||
| main.rs:16:19:16:24 | [s; 5] [element] | main.rs:16:13:16:15 | arr [element] | provenance | |
|
||||
| main.rs:16:20:16:20 | s | main.rs:16:19:16:24 | [s; 5] [element] | provenance | |
|
||||
| main.rs:17:14:17:16 | arr [element] | main.rs:17:14:17:19 | arr[2] | provenance | MaD:4 |
|
||||
| main.rs:18:15:18:17 | arr [element] | main.rs:18:15:18:26 | arr.index(...) [&ref] | provenance | MaD:4 |
|
||||
| main.rs:18:15:18:26 | arr.index(...) [&ref] | main.rs:18:14:18:26 | * ... | provenance | MaD:1 |
|
||||
| main.rs:20:13:20:19 | mut arr | main.rs:21:14:21:16 | arr | provenance | |
|
||||
| main.rs:20:13:20:19 | mut arr | main.rs:22:15:22:17 | arr | provenance | |
|
||||
| main.rs:20:23:20:33 | source(...) | main.rs:20:13:20:19 | mut arr | provenance | |
|
||||
| main.rs:21:14:21:16 | arr | main.rs:21:14:21:19 | arr[0] | provenance | MaD:4 |
|
||||
| main.rs:22:15:22:17 | arr | main.rs:22:15:22:26 | arr.index(...) [&ref] | provenance | MaD:4 |
|
||||
| main.rs:22:15:22:26 | arr.index(...) [&ref] | main.rs:22:14:22:26 | * ... | provenance | MaD:1 |
|
||||
| main.rs:24:13:24:13 | s | main.rs:25:20:25:20 | s | provenance | |
|
||||
| main.rs:24:17:24:25 | source(...) | main.rs:24:13:24:13 | s | provenance | |
|
||||
| main.rs:25:13:25:15 | arr [element] | main.rs:26:18:26:20 | arr [element] | provenance | |
|
||||
| main.rs:25:19:25:21 | [...] [element] | main.rs:25:13:25:15 | arr [element] | provenance | |
|
||||
| main.rs:25:20:25:20 | s | main.rs:25:19:25:21 | [...] [element] | provenance | |
|
||||
| main.rs:26:13:26:13 | x | main.rs:27:18:27:18 | x | provenance | |
|
||||
| main.rs:26:18:26:20 | arr [element] | main.rs:26:13:26:13 | x | provenance | |
|
||||
| main.rs:30:13:30:15 | arr | main.rs:32:18:32:18 | x | provenance | |
|
||||
| main.rs:30:19:30:29 | source(...) | main.rs:30:13:30:15 | arr | provenance | |
|
||||
| main.rs:37:9:37:11 | [post] arr [element] | main.rs:38:14:38:16 | arr [element] | provenance | |
|
||||
| main.rs:37:18:37:26 | source(...) | main.rs:37:9:37:11 | [post] arr [element] | provenance | |
|
||||
| main.rs:38:14:38:16 | arr [element] | main.rs:38:14:38:19 | arr[0] | provenance | MaD:4 |
|
||||
| main.rs:46:9:46:14 | [post] arr[0] | main.rs:47:14:47:16 | arr | provenance | |
|
||||
| main.rs:46:19:46:27 | source(...) | main.rs:46:9:46:14 | [post] arr[0] | provenance | MaD:2 |
|
||||
| main.rs:46:19:46:27 | source(...) | main.rs:46:9:46:14 | [post] arr[0] | provenance | MaD:3 |
|
||||
| main.rs:47:14:47:16 | arr | main.rs:47:14:47:19 | arr[0] | provenance | MaD:4 |
|
||||
| main.rs:63:18:63:22 | SelfParam [&ref, S] | main.rs:63:56:65:9 | { ... } [&ref, S] | provenance | |
|
||||
| main.rs:76:34:76:44 | ...: Self [S] | main.rs:77:23:77:27 | other [S] | provenance | |
|
||||
| main.rs:77:13:77:16 | [post] self [&ref, S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | provenance | |
|
||||
| main.rs:77:13:77:16 | [post] self [&ref, tuple.0] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | provenance | |
|
||||
| main.rs:77:13:77:18 | [post] self.0 | main.rs:77:13:77:16 | [post] self [&ref, S] | provenance | |
|
||||
| main.rs:77:13:77:18 | [post] self.0 | main.rs:77:13:77:16 | [post] self [&ref, tuple.0] | provenance | |
|
||||
| main.rs:77:23:77:27 | other [S] | main.rs:77:23:77:29 | other.0 | provenance | |
|
||||
| main.rs:77:23:77:29 | other.0 | main.rs:77:13:77:18 | [post] self.0 | provenance | MaD:2 |
|
||||
| main.rs:77:23:77:29 | other.0 | main.rs:77:13:77:18 | [post] self.0 | provenance | MaD:3 |
|
||||
| main.rs:82:13:82:13 | s | main.rs:83:19:83:19 | s | provenance | |
|
||||
| main.rs:82:17:82:25 | source(...) | main.rs:82:13:82:13 | s | provenance | |
|
||||
| main.rs:83:13:83:13 | s [S] | main.rs:84:14:84:14 | s [S] | provenance | |
|
||||
| main.rs:83:13:83:13 | s [S] | main.rs:85:16:85:16 | s [S] | provenance | |
|
||||
| main.rs:83:17:83:20 | S(...) [S] | main.rs:83:13:83:13 | s [S] | provenance | |
|
||||
| main.rs:83:19:83:19 | s | main.rs:83:17:83:20 | S(...) [S] | provenance | |
|
||||
| main.rs:84:14:84:14 | s [S] | main.rs:63:18:63:22 | SelfParam [&ref, S] | provenance | |
|
||||
| main.rs:84:14:84:14 | s [S] | main.rs:84:14:84:17 | s[0] [S] | provenance | |
|
||||
| main.rs:84:14:84:17 | s[0] [S] | main.rs:84:14:84:19 | ... .0 | provenance | |
|
||||
| main.rs:85:15:85:25 | * ... [S] | main.rs:85:14:85:28 | ... .0 | provenance | |
|
||||
| main.rs:85:16:85:16 | s [S] | main.rs:63:18:63:22 | SelfParam [&ref, S] | provenance | |
|
||||
| main.rs:85:16:85:16 | s [S] | main.rs:85:16:85:25 | s.index(...) [&ref, S] | provenance | |
|
||||
| main.rs:85:16:85:25 | s.index(...) [&ref, S] | main.rs:85:15:85:25 | * ... [S] | provenance | MaD:1 |
|
||||
| main.rs:89:9:89:9 | [post] s [S] | main.rs:90:14:90:14 | s [S] | provenance | |
|
||||
| main.rs:89:16:89:27 | S(...) [S] | main.rs:89:9:89:9 | [post] s [S] | provenance | |
|
||||
| main.rs:89:18:89:26 | source(...) | main.rs:89:16:89:27 | S(...) [S] | provenance | |
|
||||
| main.rs:90:14:90:14 | s [S] | main.rs:90:14:90:16 | s.0 | provenance | |
|
||||
| main.rs:94:10:94:10 | [post] s [S] | main.rs:95:14:95:14 | s [S] | provenance | |
|
||||
| main.rs:94:10:94:23 | [post] s.index_mut(...) [&ref, S] | main.rs:94:10:94:10 | [post] s [S] | provenance | |
|
||||
| main.rs:94:27:94:38 | S(...) [S] | main.rs:94:10:94:23 | [post] s.index_mut(...) [&ref, S] | provenance | |
|
||||
| main.rs:94:29:94:37 | source(...) | main.rs:94:27:94:38 | S(...) [S] | provenance | |
|
||||
| main.rs:95:14:95:14 | s [S] | main.rs:95:14:95:16 | s.0 | provenance | |
|
||||
| main.rs:99:9:99:9 | [post] s [S] | main.rs:100:14:100:14 | s [S] | provenance | |
|
||||
| main.rs:99:9:99:9 | [post] s [tuple.0] | main.rs:100:14:100:14 | s [tuple.0] | provenance | |
|
||||
| main.rs:99:9:99:12 | [post] s[0] [S] | main.rs:99:9:99:9 | [post] s [S] | provenance | |
|
||||
| main.rs:99:9:99:12 | [post] s[0] [tuple.0] | main.rs:99:9:99:9 | [post] s [tuple.0] | provenance | |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | provenance | |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:99:9:99:12 | [post] s[0] [S] | provenance | MaD:2 |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:99:9:99:12 | [post] s[0] [S] | provenance | MaD:3 |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:99:9:99:12 | [post] s[0] [tuple.0] | provenance | MaD:2 |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:99:9:99:12 | [post] s[0] [tuple.0] | provenance | MaD:3 |
|
||||
| main.rs:99:19:99:27 | source(...) | main.rs:99:17:99:28 | S(...) [S] | provenance | |
|
||||
| main.rs:100:14:100:14 | s [S] | main.rs:100:14:100:16 | s.0 | provenance | |
|
||||
| main.rs:100:14:100:14 | s [tuple.0] | main.rs:100:14:100:16 | s.0 | provenance | |
|
||||
| main.rs:104:9:104:23 | [post] * ... [S] | main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, S] | provenance | |
|
||||
| main.rs:104:9:104:23 | [post] * ... [tuple.0] | main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, tuple.0] | provenance | |
|
||||
| main.rs:104:10:104:10 | [post] s [S] | main.rs:106:14:106:14 | s [S] | provenance | |
|
||||
| main.rs:104:10:104:10 | [post] s [tuple.0] | main.rs:106:14:106:14 | s [tuple.0] | provenance | |
|
||||
| main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, S] | main.rs:104:10:104:10 | [post] s [S] | provenance | |
|
||||
| main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, tuple.0] | main.rs:104:10:104:10 | [post] s [tuple.0] | provenance | |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | provenance | |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:104:9:104:23 | [post] * ... [S] | provenance | MaD:2 |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:104:9:104:23 | [post] * ... [S] | provenance | MaD:3 |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:104:9:104:23 | [post] * ... [tuple.0] | provenance | MaD:2 |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:104:9:104:23 | [post] * ... [tuple.0] | provenance | MaD:3 |
|
||||
| main.rs:104:30:104:38 | source(...) | main.rs:104:28:104:39 | S(...) [S] | provenance | |
|
||||
| main.rs:105:9:105:9 | [post] s [S] | main.rs:106:14:106:14 | s [S] | provenance | |
|
||||
| main.rs:105:9:105:9 | [post] s [tuple.0] | main.rs:106:14:106:14 | s [tuple.0] | provenance | |
|
||||
| main.rs:105:9:105:12 | [post] s[0] [S] | main.rs:105:9:105:9 | [post] s [S] | provenance | |
|
||||
| main.rs:105:9:105:12 | [post] s[0] [tuple.0] | main.rs:105:9:105:9 | [post] s [tuple.0] | provenance | |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | provenance | |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:105:9:105:12 | [post] s[0] [S] | provenance | MaD:2 |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:105:9:105:12 | [post] s[0] [S] | provenance | MaD:3 |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:105:9:105:12 | [post] s[0] [tuple.0] | provenance | MaD:2 |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:105:9:105:12 | [post] s[0] [tuple.0] | provenance | MaD:3 |
|
||||
| main.rs:105:19:105:27 | source(...) | main.rs:105:17:105:28 | S(...) [S] | provenance | |
|
||||
| main.rs:106:14:106:14 | s [S] | main.rs:106:14:106:16 | s.0 | provenance | |
|
||||
| main.rs:106:14:106:14 | s [tuple.0] | main.rs:106:14:106:16 | s.0 | provenance | |
|
||||
| main.rs:110:10:110:24 | [post] * ... [S] | main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, S] | provenance | |
|
||||
| main.rs:110:10:110:24 | [post] * ... [tuple.0] | main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, tuple.0] | provenance | |
|
||||
| main.rs:110:11:110:11 | [post] s [S] | main.rs:111:14:111:14 | s [S] | provenance | |
|
||||
| main.rs:110:11:110:11 | [post] s [tuple.0] | main.rs:111:14:111:14 | s [tuple.0] | provenance | |
|
||||
| main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, S] | main.rs:110:11:110:11 | [post] s [S] | provenance | |
|
||||
| main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, tuple.0] | main.rs:110:11:110:11 | [post] s [tuple.0] | provenance | |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | provenance | |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:110:10:110:24 | [post] * ... [S] | provenance | MaD:2 |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:110:10:110:24 | [post] * ... [S] | provenance | MaD:3 |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:110:10:110:24 | [post] * ... [tuple.0] | provenance | MaD:2 |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:110:10:110:24 | [post] * ... [tuple.0] | provenance | MaD:3 |
|
||||
| main.rs:110:40:110:48 | source(...) | main.rs:110:38:110:49 | S(...) [S] | provenance | |
|
||||
| main.rs:111:14:111:14 | s [S] | main.rs:111:14:111:16 | s.0 | provenance | |
|
||||
| main.rs:111:14:111:14 | s [tuple.0] | main.rs:111:14:111:16 | s.0 | provenance | |
|
||||
nodes
|
||||
| main.rs:15:13:15:13 | s | semmle.label | s |
|
||||
| main.rs:15:17:15:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:16:13:16:15 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:16:19:16:24 | [s; 5] [element] | semmle.label | [s; 5] [element] |
|
||||
| main.rs:16:20:16:20 | s | semmle.label | s |
|
||||
| main.rs:17:14:17:16 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:17:14:17:19 | arr[2] | semmle.label | arr[2] |
|
||||
| main.rs:18:14:18:26 | * ... | semmle.label | * ... |
|
||||
| main.rs:18:15:18:17 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:18:15:18:26 | arr.index(...) [&ref] | semmle.label | arr.index(...) [&ref] |
|
||||
| main.rs:20:13:20:19 | mut arr | semmle.label | mut arr |
|
||||
| main.rs:20:23:20:33 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:21:14:21:16 | arr | semmle.label | arr |
|
||||
| main.rs:21:14:21:19 | arr[0] | semmle.label | arr[0] |
|
||||
| main.rs:22:14:22:26 | * ... | semmle.label | * ... |
|
||||
| main.rs:22:15:22:17 | arr | semmle.label | arr |
|
||||
| main.rs:22:15:22:26 | arr.index(...) [&ref] | semmle.label | arr.index(...) [&ref] |
|
||||
| main.rs:24:13:24:13 | s | semmle.label | s |
|
||||
| main.rs:24:17:24:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:25:13:25:15 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:25:19:25:21 | [...] [element] | semmle.label | [...] [element] |
|
||||
| main.rs:25:20:25:20 | s | semmle.label | s |
|
||||
| main.rs:26:13:26:13 | x | semmle.label | x |
|
||||
| main.rs:26:18:26:20 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:27:18:27:18 | x | semmle.label | x |
|
||||
| main.rs:30:13:30:15 | arr | semmle.label | arr |
|
||||
| main.rs:30:19:30:29 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:32:18:32:18 | x | semmle.label | x |
|
||||
| main.rs:37:9:37:11 | [post] arr [element] | semmle.label | [post] arr [element] |
|
||||
| main.rs:37:18:37:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:38:14:38:16 | arr [element] | semmle.label | arr [element] |
|
||||
| main.rs:38:14:38:19 | arr[0] | semmle.label | arr[0] |
|
||||
| main.rs:46:9:46:14 | [post] arr[0] | semmle.label | [post] arr[0] |
|
||||
| main.rs:46:19:46:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:47:14:47:16 | arr | semmle.label | arr |
|
||||
| main.rs:47:14:47:19 | arr[0] | semmle.label | arr[0] |
|
||||
| main.rs:63:18:63:22 | SelfParam [&ref, S] | semmle.label | SelfParam [&ref, S] |
|
||||
| main.rs:63:56:65:9 | { ... } [&ref, S] | semmle.label | { ... } [&ref, S] |
|
||||
| main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | semmle.label | SelfParam [Return] [&ref, S] |
|
||||
| main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | semmle.label | SelfParam [Return] [&ref, tuple.0] |
|
||||
| main.rs:76:34:76:44 | ...: Self [S] | semmle.label | ...: Self [S] |
|
||||
| main.rs:77:13:77:16 | [post] self [&ref, S] | semmle.label | [post] self [&ref, S] |
|
||||
| main.rs:77:13:77:16 | [post] self [&ref, tuple.0] | semmle.label | [post] self [&ref, tuple.0] |
|
||||
| main.rs:77:13:77:18 | [post] self.0 | semmle.label | [post] self.0 |
|
||||
| main.rs:77:23:77:27 | other [S] | semmle.label | other [S] |
|
||||
| main.rs:77:23:77:29 | other.0 | semmle.label | other.0 |
|
||||
| main.rs:82:13:82:13 | s | semmle.label | s |
|
||||
| main.rs:82:17:82:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:83:13:83:13 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:83:17:83:20 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:83:19:83:19 | s | semmle.label | s |
|
||||
| main.rs:84:14:84:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:84:14:84:17 | s[0] [S] | semmle.label | s[0] [S] |
|
||||
| main.rs:84:14:84:19 | ... .0 | semmle.label | ... .0 |
|
||||
| main.rs:85:14:85:28 | ... .0 | semmle.label | ... .0 |
|
||||
| main.rs:85:15:85:25 | * ... [S] | semmle.label | * ... [S] |
|
||||
| main.rs:85:16:85:16 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:85:16:85:25 | s.index(...) [&ref, S] | semmle.label | s.index(...) [&ref, S] |
|
||||
| main.rs:89:9:89:9 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:89:16:89:27 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:89:18:89:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:90:14:90:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:90:14:90:16 | s.0 | semmle.label | s.0 |
|
||||
| main.rs:94:10:94:10 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:94:10:94:23 | [post] s.index_mut(...) [&ref, S] | semmle.label | [post] s.index_mut(...) [&ref, S] |
|
||||
| main.rs:94:27:94:38 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:94:29:94:37 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:95:14:95:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:95:14:95:16 | s.0 | semmle.label | s.0 |
|
||||
| main.rs:99:9:99:9 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:99:9:99:9 | [post] s [tuple.0] | semmle.label | [post] s [tuple.0] |
|
||||
| main.rs:99:9:99:12 | [post] s[0] [S] | semmle.label | [post] s[0] [S] |
|
||||
| main.rs:99:9:99:12 | [post] s[0] [tuple.0] | semmle.label | [post] s[0] [tuple.0] |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:99:19:99:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:100:14:100:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:100:14:100:14 | s [tuple.0] | semmle.label | s [tuple.0] |
|
||||
| main.rs:100:14:100:16 | s.0 | semmle.label | s.0 |
|
||||
| main.rs:104:9:104:23 | [post] * ... [S] | semmle.label | [post] * ... [S] |
|
||||
| main.rs:104:9:104:23 | [post] * ... [tuple.0] | semmle.label | [post] * ... [tuple.0] |
|
||||
| main.rs:104:10:104:10 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:104:10:104:10 | [post] s [tuple.0] | semmle.label | [post] s [tuple.0] |
|
||||
| main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, S] | semmle.label | [post] s.index_mut(...) [&ref, S] |
|
||||
| main.rs:104:10:104:23 | [post] s.index_mut(...) [&ref, tuple.0] | semmle.label | [post] s.index_mut(...) [&ref, tuple.0] |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:104:30:104:38 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:105:9:105:9 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:105:9:105:9 | [post] s [tuple.0] | semmle.label | [post] s [tuple.0] |
|
||||
| main.rs:105:9:105:12 | [post] s[0] [S] | semmle.label | [post] s[0] [S] |
|
||||
| main.rs:105:9:105:12 | [post] s[0] [tuple.0] | semmle.label | [post] s[0] [tuple.0] |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:105:19:105:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:106:14:106:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:106:14:106:14 | s [tuple.0] | semmle.label | s [tuple.0] |
|
||||
| main.rs:106:14:106:16 | s.0 | semmle.label | s.0 |
|
||||
| main.rs:110:10:110:24 | [post] * ... [S] | semmle.label | [post] * ... [S] |
|
||||
| main.rs:110:10:110:24 | [post] * ... [tuple.0] | semmle.label | [post] * ... [tuple.0] |
|
||||
| main.rs:110:11:110:11 | [post] s [S] | semmle.label | [post] s [S] |
|
||||
| main.rs:110:11:110:11 | [post] s [tuple.0] | semmle.label | [post] s [tuple.0] |
|
||||
| main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, S] | semmle.label | [post] s.index_mut(...) [&ref, S] |
|
||||
| main.rs:110:11:110:24 | [post] s.index_mut(...) [&ref, tuple.0] | semmle.label | [post] s.index_mut(...) [&ref, tuple.0] |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | semmle.label | S(...) [S] |
|
||||
| main.rs:110:40:110:48 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:111:14:111:14 | s [S] | semmle.label | s [S] |
|
||||
| main.rs:111:14:111:14 | s [tuple.0] | semmle.label | s [tuple.0] |
|
||||
| main.rs:111:14:111:16 | s.0 | semmle.label | s.0 |
|
||||
subpaths
|
||||
| main.rs:84:14:84:14 | s [S] | main.rs:63:18:63:22 | SelfParam [&ref, S] | main.rs:63:56:65:9 | { ... } [&ref, S] | main.rs:84:14:84:17 | s[0] [S] |
|
||||
| main.rs:85:16:85:16 | s [S] | main.rs:63:18:63:22 | SelfParam [&ref, S] | main.rs:63:56:65:9 | { ... } [&ref, S] | main.rs:85:16:85:25 | s.index(...) [&ref, S] |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | main.rs:99:9:99:12 | [post] s[0] [S] |
|
||||
| main.rs:99:17:99:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | main.rs:99:9:99:12 | [post] s[0] [tuple.0] |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | main.rs:104:9:104:23 | [post] * ... [S] |
|
||||
| main.rs:104:28:104:39 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | main.rs:104:9:104:23 | [post] * ... [tuple.0] |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | main.rs:105:9:105:12 | [post] s[0] [S] |
|
||||
| main.rs:105:17:105:28 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | main.rs:105:9:105:12 | [post] s[0] [tuple.0] |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | main.rs:110:10:110:24 | [post] * ... [S] |
|
||||
| main.rs:110:38:110:49 | S(...) [S] | main.rs:76:34:76:44 | ...: Self [S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, tuple.0] | main.rs:110:10:110:24 | [post] * ... [tuple.0] |
|
||||
testFailures
|
||||
#select
|
||||
| main.rs:17:14:17:19 | arr[2] | main.rs:15:17:15:25 | source(...) | main.rs:17:14:17:19 | arr[2] | $@ | main.rs:15:17:15:25 | source(...) | source(...) |
|
||||
| main.rs:18:14:18:26 | * ... | main.rs:15:17:15:25 | source(...) | main.rs:18:14:18:26 | * ... | $@ | main.rs:15:17:15:25 | source(...) | source(...) |
|
||||
| main.rs:21:14:21:19 | arr[0] | main.rs:20:23:20:33 | source(...) | main.rs:21:14:21:19 | arr[0] | $@ | main.rs:20:23:20:33 | source(...) | source(...) |
|
||||
| main.rs:22:14:22:26 | * ... | main.rs:20:23:20:33 | source(...) | main.rs:22:14:22:26 | * ... | $@ | main.rs:20:23:20:33 | source(...) | source(...) |
|
||||
| main.rs:27:18:27:18 | x | main.rs:24:17:24:25 | source(...) | main.rs:27:18:27:18 | x | $@ | main.rs:24:17:24:25 | source(...) | source(...) |
|
||||
| main.rs:32:18:32:18 | x | main.rs:30:19:30:29 | source(...) | main.rs:32:18:32:18 | x | $@ | main.rs:30:19:30:29 | source(...) | source(...) |
|
||||
| main.rs:38:14:38:19 | arr[0] | main.rs:37:18:37:26 | source(...) | main.rs:38:14:38:19 | arr[0] | $@ | main.rs:37:18:37:26 | source(...) | source(...) |
|
||||
| main.rs:47:14:47:19 | arr[0] | main.rs:46:19:46:27 | source(...) | main.rs:47:14:47:19 | arr[0] | $@ | main.rs:46:19:46:27 | source(...) | source(...) |
|
||||
| main.rs:84:14:84:19 | ... .0 | main.rs:82:17:82:25 | source(...) | main.rs:84:14:84:19 | ... .0 | $@ | main.rs:82:17:82:25 | source(...) | source(...) |
|
||||
| main.rs:85:14:85:28 | ... .0 | main.rs:82:17:82:25 | source(...) | main.rs:85:14:85:28 | ... .0 | $@ | main.rs:82:17:82:25 | source(...) | source(...) |
|
||||
| main.rs:90:14:90:16 | s.0 | main.rs:89:18:89:26 | source(...) | main.rs:90:14:90:16 | s.0 | $@ | main.rs:89:18:89:26 | source(...) | source(...) |
|
||||
| main.rs:95:14:95:16 | s.0 | main.rs:94:29:94:37 | source(...) | main.rs:95:14:95:16 | s.0 | $@ | main.rs:94:29:94:37 | source(...) | source(...) |
|
||||
| main.rs:100:14:100:16 | s.0 | main.rs:99:19:99:27 | source(...) | main.rs:100:14:100:16 | s.0 | $@ | main.rs:99:19:99:27 | source(...) | source(...) |
|
||||
| main.rs:106:14:106:16 | s.0 | main.rs:104:30:104:38 | source(...) | main.rs:106:14:106:16 | s.0 | $@ | main.rs:104:30:104:38 | source(...) | source(...) |
|
||||
| main.rs:106:14:106:16 | s.0 | main.rs:105:19:105:27 | source(...) | main.rs:106:14:106:16 | s.0 | $@ | main.rs:105:19:105:27 | source(...) | source(...) |
|
||||
| main.rs:111:14:111:16 | s.0 | main.rs:110:40:110:48 | source(...) | main.rs:111:14:111:16 | s.0 | $@ | main.rs:110:40:110:48 | source(...) | source(...) |
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @kind path-problem
|
||||
*/
|
||||
|
||||
import rust
|
||||
import utils.test.InlineFlowTest
|
||||
import DefaultFlowTest
|
||||
import TaintFlow::PathGraph
|
||||
|
||||
from TaintFlow::PathNode source, TaintFlow::PathNode sink
|
||||
where TaintFlow::flowPath(source, sink)
|
||||
select sink, source, sink, "$@", source, source.toString()
|
||||
118
rust/ql/test/library-tests/dataflow/collections/main.rs
Normal file
118
rust/ql/test/library-tests/dataflow/collections/main.rs
Normal file
@@ -0,0 +1,118 @@
|
||||
fn source<T>(s: T) -> T {
|
||||
s
|
||||
}
|
||||
|
||||
fn sink(s: i64) {
|
||||
println!("{}", s);
|
||||
}
|
||||
|
||||
mod arrays {
|
||||
use crate::*;
|
||||
use std::ops::Index;
|
||||
use std::ops::IndexMut;
|
||||
|
||||
pub fn f() {
|
||||
let s = source(0);
|
||||
let arr = [s; 5];
|
||||
sink(arr[2]); // $ hasValueFlow=0
|
||||
sink(*arr.index(2)); // $ hasValueFlow=0
|
||||
|
||||
let mut arr = source([1]);
|
||||
sink(arr[0]); // $ hasTaintFlow=1
|
||||
sink(*arr.index(0)); // $ hasTaintFlow=1
|
||||
|
||||
let s = source(2);
|
||||
let arr = [s];
|
||||
for x in arr {
|
||||
sink(x); // $ hasValueFlow=2
|
||||
}
|
||||
|
||||
let arr = source([3]);
|
||||
for x in arr {
|
||||
sink(x); // $ hasTaintFlow=3
|
||||
}
|
||||
|
||||
let mut arr = [0];
|
||||
sink(arr[0]);
|
||||
arr[0] = source(4);
|
||||
sink(arr[0]); // $ hasValueFlow=4
|
||||
|
||||
let mut arr = [0];
|
||||
sink(arr[0]);
|
||||
*arr.index_mut(0) = source(5);
|
||||
sink(arr[0]); // $ MISSING: hasValueFlow=5 -- needs generalized reverse flow
|
||||
|
||||
let mut arr = [0];
|
||||
arr[0] += source(6);
|
||||
sink(arr[0]); // $ hasTaintFlow=6
|
||||
}
|
||||
}
|
||||
|
||||
mod indexers {
|
||||
use crate::*;
|
||||
use std::ops::AddAssign;
|
||||
use std::ops::Index;
|
||||
use std::ops::IndexMut;
|
||||
|
||||
#[derive(Debug)]
|
||||
struct S<T>(T);
|
||||
|
||||
impl<T> Index<usize> for S<T> {
|
||||
type Output = S<T>; // `T` would be a better choice here, but that requires generalized reverse flow for the test to pass
|
||||
|
||||
fn index(&self, index: usize) -> &Self::Output {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> IndexMut<usize> for S<T> {
|
||||
// `Self::Output` is not yet handled, so use `S<T>` for now
|
||||
fn index_mut(&mut self, index: usize) -> &mut S<T> {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::AddAssign for S<i64> {
|
||||
fn add_assign(&mut self, other: Self) {
|
||||
self.0 += other.0;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn f() {
|
||||
let s = source(0);
|
||||
let s = S(s);
|
||||
sink(s[0].0); // $ hasValueFlow=0
|
||||
sink((*s.index(0)).0); // $ hasValueFlow=0
|
||||
|
||||
let mut s = S(0);
|
||||
sink(s.0);
|
||||
s[0] = S(source(1));
|
||||
sink(s.0); // $ hasValueFlow=1
|
||||
|
||||
let mut s = S(0);
|
||||
sink(s.0);
|
||||
*s.index_mut(0) = S(source(2));
|
||||
sink(s.0); // $ hasValueFlow=2
|
||||
|
||||
let mut s = S(0i64);
|
||||
sink(s.0);
|
||||
s[0] += S(source(3));
|
||||
sink(s.0); // $ hasTaintFlow=3
|
||||
|
||||
let mut s = S(0i64);
|
||||
sink(s.0);
|
||||
*s.index_mut(0) += S(source(5));
|
||||
s[0] += S(source(5));
|
||||
sink(s.0); // $ hasTaintFlow=5
|
||||
|
||||
let mut s = S(0i64);
|
||||
sink(s.0);
|
||||
(*s.index_mut(0)).add_assign(S(source(6)));
|
||||
sink(s.0); // $ hasTaintFlow=6
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
arrays::f();
|
||||
indexers::f();
|
||||
}
|
||||
@@ -144,6 +144,12 @@ edges
|
||||
| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | provenance | |
|
||||
| main.rs:261:35:261:35 | b [MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | provenance | |
|
||||
| main.rs:262:10:262:10 | a [MyInt] | main.rs:262:10:262:16 | a.value | provenance | |
|
||||
| main.rs:265:9:265:9 | b [MyInt] | main.rs:266:10:266:10 | b [MyInt] | provenance | |
|
||||
| main.rs:265:13:265:39 | MyInt {...} [MyInt] | main.rs:265:9:265:9 | b [MyInt] | provenance | |
|
||||
| main.rs:265:28:265:37 | source(...) | main.rs:265:13:265:39 | MyInt {...} [MyInt] | provenance | |
|
||||
| main.rs:266:10:266:10 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | provenance | |
|
||||
| main.rs:266:10:266:10 | b [MyInt] | main.rs:267:10:267:10 | a [MyInt] | provenance | |
|
||||
| main.rs:267:10:267:10 | a [MyInt] | main.rs:267:10:267:16 | a.value | provenance | |
|
||||
| main.rs:270:9:270:9 | a [MyInt] | main.rs:272:28:272:28 | a [MyInt] | provenance | |
|
||||
| main.rs:270:13:270:39 | MyInt {...} [MyInt] | main.rs:270:9:270:9 | a [MyInt] | provenance | |
|
||||
| main.rs:270:28:270:37 | source(...) | main.rs:270:13:270:39 | MyInt {...} [MyInt] | provenance | |
|
||||
@@ -365,6 +371,12 @@ nodes
|
||||
| main.rs:261:35:261:35 | b [MyInt] | semmle.label | b [MyInt] |
|
||||
| main.rs:262:10:262:10 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:262:10:262:16 | a.value | semmle.label | a.value |
|
||||
| main.rs:265:9:265:9 | b [MyInt] | semmle.label | b [MyInt] |
|
||||
| main.rs:265:13:265:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
|
||||
| main.rs:265:28:265:37 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:266:10:266:10 | b [MyInt] | semmle.label | b [MyInt] |
|
||||
| main.rs:267:10:267:10 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:267:10:267:16 | a.value | semmle.label | a.value |
|
||||
| main.rs:270:9:270:9 | a [MyInt] | semmle.label | a [MyInt] |
|
||||
| main.rs:270:13:270:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
|
||||
| main.rs:270:28:270:37 | source(...) | semmle.label | source(...) |
|
||||
@@ -453,6 +465,7 @@ subpaths
|
||||
| main.rs:244:13:244:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:244:13:244:17 | ... + ... [MyInt] |
|
||||
| main.rs:254:13:254:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] |
|
||||
| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] |
|
||||
| main.rs:266:10:266:10 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | main.rs:267:10:267:10 | a [MyInt] |
|
||||
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:235:38:237:5 | { ... } [&ref] | main.rs:272:14:272:29 | ...::deref(...) [&ref] |
|
||||
| main.rs:276:14:276:14 | a [MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:235:38:237:5 | { ... } [&ref] | main.rs:276:13:276:14 | * ... |
|
||||
| main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] |
|
||||
@@ -481,6 +494,7 @@ testFailures
|
||||
| main.rs:245:10:245:16 | c.value | main.rs:242:28:242:36 | source(...) | main.rs:245:10:245:16 | c.value | $@ | main.rs:242:28:242:36 | source(...) | source(...) |
|
||||
| main.rs:255:10:255:16 | d.value | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:16 | d.value | $@ | main.rs:252:28:252:36 | source(...) | source(...) |
|
||||
| main.rs:262:10:262:16 | a.value | main.rs:259:28:259:37 | source(...) | main.rs:262:10:262:16 | a.value | $@ | main.rs:259:28:259:37 | source(...) | source(...) |
|
||||
| main.rs:267:10:267:16 | a.value | main.rs:265:28:265:37 | source(...) | main.rs:267:10:267:16 | a.value | $@ | main.rs:265:28:265:37 | source(...) | source(...) |
|
||||
| main.rs:273:10:273:10 | c | main.rs:270:28:270:37 | source(...) | main.rs:273:10:273:10 | c | $@ | main.rs:270:28:270:37 | source(...) | source(...) |
|
||||
| main.rs:277:10:277:10 | c | main.rs:275:28:275:37 | source(...) | main.rs:277:10:277:10 | c | $@ | main.rs:275:28:275:37 | source(...) | source(...) |
|
||||
| main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) |
|
||||
|
||||
@@ -264,7 +264,7 @@ fn test_operator_overloading() {
|
||||
let mut a = MyInt { value: 0 };
|
||||
let b = MyInt { value: source(35) };
|
||||
a *= b;
|
||||
sink(a.value); // $ MISSING: hasValueFlow=35
|
||||
sink(a.value); // $ hasValueFlow=35
|
||||
|
||||
// Tests for deref operator.
|
||||
let a = MyInt { value: source(27) };
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
| main.rs:2:5:2:12 | ... + ... | {EXTERNAL LOCATION} | fn add |
|
||||
| main.rs:13:5:13:13 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
| main.rs:17:13:17:23 | get_data(...) | main.rs:12:1:14:1 | fn get_data |
|
||||
| main.rs:18:5:18:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
|
||||
@@ -905,24 +905,24 @@ readStep
|
||||
| main.rs:421:9:421:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:421:22:421:22 | n |
|
||||
| main.rs:422:9:422:24 | D {...} | main.rs:385:9:385:20 | D | main.rs:422:22:422:22 | n |
|
||||
| main.rs:431:14:431:17 | [post] arr1 [borrowed] | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | [post] arr1 |
|
||||
| main.rs:431:14:431:17 | arr1 | file://:0:0:0:0 | element | main.rs:431:14:431:20 | arr1[2] |
|
||||
| main.rs:431:14:431:20 | arr1[2] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:431:14:431:20 | arr1[2] |
|
||||
| main.rs:435:14:435:17 | [post] arr2 [borrowed] | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | [post] arr2 |
|
||||
| main.rs:435:14:435:17 | arr2 | file://:0:0:0:0 | element | main.rs:435:14:435:20 | arr2[4] |
|
||||
| main.rs:435:14:435:20 | arr2[4] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:435:14:435:20 | arr2[4] |
|
||||
| main.rs:439:14:439:17 | [post] arr3 [borrowed] | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | [post] arr3 |
|
||||
| main.rs:439:14:439:17 | arr3 | file://:0:0:0:0 | element | main.rs:439:14:439:20 | arr3[2] |
|
||||
| main.rs:439:14:439:20 | arr3[2] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:439:14:439:20 | arr3[2] |
|
||||
| main.rs:445:15:445:18 | arr1 | file://:0:0:0:0 | element | main.rs:445:9:445:10 | n1 |
|
||||
| main.rs:450:15:450:18 | arr2 | file://:0:0:0:0 | element | main.rs:450:9:450:10 | n2 |
|
||||
| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:10:458:10 | a |
|
||||
| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:13:458:13 | b |
|
||||
| main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:16:458:16 | c |
|
||||
| main.rs:468:10:468:16 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | [post] mut_arr |
|
||||
| main.rs:468:10:468:16 | mut_arr | file://:0:0:0:0 | element | main.rs:468:10:468:19 | mut_arr[1] |
|
||||
| main.rs:468:10:468:19 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:468:10:468:19 | mut_arr[1] |
|
||||
| main.rs:470:5:470:11 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | [post] mut_arr |
|
||||
| main.rs:470:5:470:11 | mut_arr | file://:0:0:0:0 | element | main.rs:470:5:470:14 | mut_arr[1] |
|
||||
| main.rs:470:5:470:14 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:470:5:470:14 | mut_arr[1] |
|
||||
| main.rs:471:13:471:19 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | [post] mut_arr |
|
||||
| main.rs:471:13:471:19 | mut_arr | file://:0:0:0:0 | element | main.rs:471:13:471:22 | mut_arr[1] |
|
||||
| main.rs:471:13:471:22 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:471:13:471:22 | mut_arr[1] |
|
||||
| main.rs:473:10:473:16 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | [post] mut_arr |
|
||||
| main.rs:473:10:473:16 | mut_arr | file://:0:0:0:0 | element | main.rs:473:10:473:19 | mut_arr[0] |
|
||||
| main.rs:473:10:473:19 | mut_arr[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:473:10:473:19 | mut_arr[0] |
|
||||
| main.rs:479:24:479:33 | [post] source(...) [borrowed] | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | [post] source(...) |
|
||||
| main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:480:10:480:13 | cond |
|
||||
| main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:480:16:480:19 | name |
|
||||
@@ -933,7 +933,7 @@ readStep
|
||||
| main.rs:483:18:483:18 | [post] n [borrowed] | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n |
|
||||
| main.rs:506:13:506:13 | [post] a [borrowed] | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a |
|
||||
| main.rs:519:10:519:11 | [post] vs [borrowed] | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | [post] vs |
|
||||
| main.rs:519:10:519:11 | vs | file://:0:0:0:0 | element | main.rs:519:10:519:14 | vs[0] |
|
||||
| main.rs:519:10:519:14 | vs[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:519:10:519:14 | vs[0] |
|
||||
| main.rs:520:10:520:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... |
|
||||
| main.rs:520:11:520:35 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() |
|
||||
| main.rs:521:10:521:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... |
|
||||
@@ -949,7 +949,7 @@ readStep
|
||||
| main.rs:536:34:536:34 | [post] x [borrowed] | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x |
|
||||
| main.rs:538:14:538:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:538:9:538:9 | v |
|
||||
| main.rs:544:10:544:15 | [post] vs_mut [borrowed] | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | [post] vs_mut |
|
||||
| main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | element | main.rs:544:10:544:18 | vs_mut[0] |
|
||||
| main.rs:544:10:544:18 | vs_mut[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:544:10:544:18 | vs_mut[0] |
|
||||
| main.rs:545:10:545:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... |
|
||||
| main.rs:545:11:545:39 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() |
|
||||
| main.rs:546:10:546:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... |
|
||||
@@ -1042,6 +1042,7 @@ storeStep
|
||||
| main.rs:467:30:467:30 | 3 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
|
||||
| main.rs:468:10:468:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | mut_arr [borrowed] |
|
||||
| main.rs:470:5:470:11 | mut_arr | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | mut_arr [borrowed] |
|
||||
| main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | &ref | main.rs:470:5:470:14 | [post] mut_arr[1] [pre-dereferenced] |
|
||||
| main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | element | main.rs:470:5:470:11 | [post] mut_arr |
|
||||
| main.rs:471:13:471:19 | mut_arr | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | mut_arr [borrowed] |
|
||||
| main.rs:473:10:473:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | mut_arr [borrowed] |
|
||||
|
||||
@@ -2,20 +2,21 @@ 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: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
|
||||
| 5 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
|
||||
| 6 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
|
||||
| 7 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 8 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 10 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
|
||||
| 11 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 12 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 13 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 14 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
|
||||
| 15 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 16 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 17 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 4 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 5 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
|
||||
| 6 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
|
||||
| 7 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
|
||||
| 8 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
|
||||
| 10 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 11 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value |
|
||||
| 12 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 13 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 14 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 15 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value |
|
||||
| 16 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 17 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 18 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
edges
|
||||
| main.rs:23:9:23:9 | s | main.rs:24:10:24:10 | s | provenance | |
|
||||
| main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | |
|
||||
@@ -43,8 +44,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:5 |
|
||||
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:4 |
|
||||
| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:6 |
|
||||
| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:5 |
|
||||
| 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 | |
|
||||
@@ -127,17 +128,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:7 |
|
||||
| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:8 |
|
||||
| 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:9 |
|
||||
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:8 |
|
||||
| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:10 |
|
||||
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:9 |
|
||||
| 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:11 |
|
||||
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:10 |
|
||||
| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:12 |
|
||||
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:11 |
|
||||
| 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 | |
|
||||
@@ -148,16 +149,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:15 |
|
||||
| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:16 |
|
||||
| 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:7 |
|
||||
| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:8 |
|
||||
| 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:12 |
|
||||
| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:13 |
|
||||
| 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:7 |
|
||||
| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:8 |
|
||||
| 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 | |
|
||||
@@ -167,11 +168,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:13 |
|
||||
| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:14 |
|
||||
| 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:14 |
|
||||
| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:15 |
|
||||
| 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 | |
|
||||
@@ -220,13 +221,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 | |
|
||||
| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
@@ -247,9 +248,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 | |
|
||||
| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
@@ -261,24 +262,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:17 |
|
||||
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:16 |
|
||||
| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:18 |
|
||||
| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:17 |
|
||||
| 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:17 |
|
||||
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:16 |
|
||||
| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:18 |
|
||||
| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:17 |
|
||||
| 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 | |
|
||||
| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:4 |
|
||||
| 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 | |
|
||||
@@ -297,7 +298,7 @@ edges
|
||||
| main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | |
|
||||
| main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | |
|
||||
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:3 |
|
||||
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:6 |
|
||||
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:7 |
|
||||
nodes
|
||||
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:23:9:23:9 | s | semmle.label | s |
|
||||
|
||||
@@ -1,47 +1,49 @@
|
||||
models
|
||||
| 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
|
||||
| 2 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 3 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 4 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
|
||||
| 5 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]; value |
|
||||
| 6 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 7 | Summary: <core::option::Option>::map_or; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 8 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value |
|
||||
| 10 | Summary: <core::pin::Pin as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
|
||||
| 11 | Summary: <core::pin::Pin as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[core::pin::Pin::pointer].Reference; ReturnValue.Reference; value |
|
||||
| 12 | Summary: <core::pin::Pin>::into_inner; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
|
||||
| 13 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
|
||||
| 14 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 15 | Summary: <core::pin::Pin>::new_unchecked; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 16 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 17 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value |
|
||||
| 18 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value |
|
||||
| 3 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
|
||||
| 4 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint |
|
||||
| 5 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 6 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
|
||||
| 7 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]; value |
|
||||
| 8 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
|
||||
| 9 | Summary: <core::option::Option>::map_or; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 10 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 11 | Summary: <core::option::Option>::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value |
|
||||
| 12 | Summary: <core::pin::Pin as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
|
||||
| 13 | Summary: <core::pin::Pin as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[core::pin::Pin::pointer].Reference; ReturnValue.Reference; value |
|
||||
| 14 | Summary: <core::pin::Pin>::into_inner; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
|
||||
| 15 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
|
||||
| 16 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 17 | Summary: <core::pin::Pin>::new_unchecked; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 18 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 19 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value |
|
||||
| 20 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value |
|
||||
edges
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:10 | a [Some] | provenance | |
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | main.rs:12:9:12:9 | a [Some] | provenance | |
|
||||
| main.rs:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | |
|
||||
| main.rs:13:10:13:10 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:8 |
|
||||
| main.rs:13:10:13:10 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:10 |
|
||||
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:10 | b [Some] | provenance | |
|
||||
| main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | MaD:2 |
|
||||
| main.rs:14:13:14:21 | a.clone() [Some] | main.rs:14:9:14:9 | b [Some] | provenance | |
|
||||
| main.rs:15:10:15:10 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:8 |
|
||||
| main.rs:15:10:15:10 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:10 |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:10 | a [Ok] | provenance | |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | |
|
||||
| main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | |
|
||||
| main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:16 |
|
||||
| main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:18 |
|
||||
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:10 | b [Ok] | provenance | |
|
||||
| main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | MaD:2 |
|
||||
| main.rs:21:13:21:21 | a.clone() [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | |
|
||||
| main.rs:22:10:22:10 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:16 |
|
||||
| main.rs:22:10:22:10 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:18 |
|
||||
| main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | |
|
||||
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | |
|
||||
| main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:2 |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:6 |
|
||||
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:8 |
|
||||
| main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | |
|
||||
| main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | main.rs:44:26:44:29 | self [&ref, Wrapper] | provenance | |
|
||||
| main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | provenance | |
|
||||
@@ -66,18 +68,19 @@ edges
|
||||
| main.rs:66:22:66:31 | source(...) | main.rs:66:17:66:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:67:13:67:13 | z [Some, tuple.1] | main.rs:68:15:68:15 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | main.rs:67:13:67:13 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:9 |
|
||||
| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:11 |
|
||||
| main.rs:68:15:68:15 | z [Some, tuple.1] | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | provenance | |
|
||||
| main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | main.rs:69:18:69:23 | TuplePat [tuple.1] | provenance | |
|
||||
| main.rs:69:18:69:23 | TuplePat [tuple.1] | main.rs:69:22:69:22 | m | provenance | |
|
||||
| main.rs:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | |
|
||||
| main.rs:79:13:79:13 | b | main.rs:80:14:80:14 | b | provenance | |
|
||||
| main.rs:79:17:79:47 | a.map_or(...) | main.rs:79:13:79:13 | b | provenance | |
|
||||
| main.rs:79:33:79:46 | ... + ... | main.rs:79:17:79:47 | a.map_or(...) | provenance | MaD:7 |
|
||||
| main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | |
|
||||
| main.rs:79:33:79:46 | ... + ... | main.rs:79:17:79:47 | a.map_or(...) | provenance | MaD:9 |
|
||||
| main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | MaD:3 |
|
||||
| main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | MaD:4 |
|
||||
| main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | |
|
||||
| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:18 |
|
||||
| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:17 |
|
||||
| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:20 |
|
||||
| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:19 |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:109:34:109:34 | i | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:110:33:110:33 | i | provenance | |
|
||||
| main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | |
|
||||
@@ -87,46 +90,46 @@ edges
|
||||
| main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:114:15:114:18 | pin1 [Pin, &ref] | provenance | |
|
||||
| main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:115:31:115:34 | pin1 [Pin, &ref] | provenance | |
|
||||
| main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | provenance | |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:14 |
|
||||
| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:16 |
|
||||
| main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | |
|
||||
| main.rs:110:13:110:20 | mut pin2 [Pin, Box(0)] | main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | provenance | |
|
||||
| main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | main.rs:110:13:110:20 | mut pin2 [Pin, Box(0)] | provenance | |
|
||||
| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | provenance | MaD:5 |
|
||||
| main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | provenance | MaD:7 |
|
||||
| main.rs:111:13:111:20 | mut pin3 [Pin, Box(0)] | main.rs:117:15:117:18 | pin3 [Pin, Box(0)] | provenance | |
|
||||
| main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | main.rs:111:13:111:20 | mut pin3 [Pin, Box(0)] | provenance | |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [Box(0)] | main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | provenance | MaD:3 |
|
||||
| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | provenance | MaD:4 |
|
||||
| main.rs:111:38:111:48 | ...::new(...) [Box(0)] | main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | provenance | MaD:5 |
|
||||
| main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | provenance | MaD:6 |
|
||||
| main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | main.rs:118:15:118:18 | pin4 [Pin, &ref] | provenance | |
|
||||
| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | provenance | MaD:15 |
|
||||
| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | provenance | MaD:17 |
|
||||
| main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | provenance | |
|
||||
| main.rs:112:24:112:27 | mut pinned | main.rs:112:24:112:27 | pinned | provenance | |
|
||||
| main.rs:112:24:112:27 | pinned | main.rs:112:24:112:27 | &mut pinned [&ref] | provenance | |
|
||||
| main.rs:114:15:114:18 | pin1 [Pin, &ref] | main.rs:114:14:114:18 | * ... | provenance | MaD:11 |
|
||||
| main.rs:114:15:114:18 | pin1 [Pin, &ref] | main.rs:114:14:114:18 | * ... | provenance | MaD:13 |
|
||||
| main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | main.rs:115:14:115:35 | * ... | provenance | MaD:1 |
|
||||
| main.rs:115:31:115:34 | pin1 [Pin, &ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:12 |
|
||||
| main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | main.rs:116:14:116:18 | * ... | provenance | MaD:10 |
|
||||
| main.rs:117:15:117:18 | pin3 [Pin, Box(0)] | main.rs:117:14:117:18 | * ... | provenance | MaD:10 |
|
||||
| main.rs:118:15:118:18 | pin4 [Pin, &ref] | main.rs:118:14:118:18 | * ... | provenance | MaD:11 |
|
||||
| main.rs:115:31:115:34 | pin1 [Pin, &ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:14 |
|
||||
| main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | main.rs:116:14:116:18 | * ... | provenance | MaD:12 |
|
||||
| main.rs:117:15:117:18 | pin3 [Pin, Box(0)] | main.rs:117:14:117:18 | * ... | provenance | MaD:12 |
|
||||
| main.rs:118:15:118:18 | pin4 [Pin, &ref] | main.rs:118:14:118:18 | * ... | provenance | MaD:13 |
|
||||
| main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:123:34:123:35 | ms [MyStruct] | provenance | |
|
||||
| main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:127:14:127:15 | ms [MyStruct] | provenance | |
|
||||
| main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | main.rs:122:13:122:18 | mut ms [MyStruct] | provenance | |
|
||||
| main.rs:122:38:122:47 | source(...) | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | provenance | |
|
||||
| main.rs:123:13:123:20 | mut pin1 [Pin, &ref, MyStruct] | main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | provenance | |
|
||||
| main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | main.rs:123:13:123:20 | mut pin1 [Pin, &ref, MyStruct] | provenance | |
|
||||
| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | provenance | MaD:14 |
|
||||
| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | provenance | MaD:16 |
|
||||
| main.rs:123:34:123:35 | ms [MyStruct] | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | provenance | |
|
||||
| main.rs:127:14:127:15 | ms [MyStruct] | main.rs:127:14:127:19 | ms.val | provenance | |
|
||||
| main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | |
|
||||
| main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | provenance | MaD:12 |
|
||||
| main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | provenance | MaD:14 |
|
||||
| main.rs:136:13:136:18 | mut ms [MyStruct] | main.rs:137:44:137:45 | ms [MyStruct] | provenance | |
|
||||
| main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | main.rs:136:13:136:18 | mut ms [MyStruct] | provenance | |
|
||||
| main.rs:136:38:136:47 | source(...) | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | provenance | |
|
||||
| main.rs:137:13:137:20 | mut pin5 [Pin, &ref, MyStruct] | main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | provenance | |
|
||||
| main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | main.rs:137:13:137:20 | mut pin5 [Pin, &ref, MyStruct] | provenance | |
|
||||
| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | provenance | MaD:15 |
|
||||
| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | provenance | MaD:17 |
|
||||
| main.rs:137:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | |
|
||||
| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | |
|
||||
| main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | provenance | MaD:13 |
|
||||
| main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | provenance | MaD:15 |
|
||||
nodes
|
||||
| main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
|
||||
@@ -9,20 +9,21 @@ models
|
||||
| 8 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source |
|
||||
| 9 | Summary: <_ as core::cmp::Ord>::max; Argument[self]; ReturnValue; value |
|
||||
| 10 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint |
|
||||
| 11 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value |
|
||||
| 12 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 13 | Summary: main::coerce; Argument[0]; ReturnValue; taint |
|
||||
| 14 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
|
||||
| 15 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
|
||||
| 16 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
|
||||
| 17 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
|
||||
| 18 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
|
||||
| 19 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
|
||||
| 20 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
|
||||
| 21 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
|
||||
| 22 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
|
||||
| 23 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
|
||||
| 24 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
|
||||
| 11 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 12 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value |
|
||||
| 13 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 14 | Summary: main::coerce; Argument[0]; ReturnValue; taint |
|
||||
| 15 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
|
||||
| 16 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
|
||||
| 17 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
|
||||
| 18 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
|
||||
| 19 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
|
||||
| 20 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
|
||||
| 21 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
|
||||
| 22 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
|
||||
| 23 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
|
||||
| 24 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
|
||||
| 25 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
|
||||
edges
|
||||
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
|
||||
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
|
||||
@@ -32,7 +33,7 @@ edges
|
||||
| main.rs:16:19:16:19 | s | main.rs:16:10:16:20 | identity(...) | provenance | QL |
|
||||
| main.rs:25:9:25:9 | s | main.rs:26:17:26:17 | s | provenance | |
|
||||
| main.rs:25:13:25:22 | source(...) | main.rs:25:9:25:9 | s | provenance | |
|
||||
| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:13 |
|
||||
| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:14 |
|
||||
| main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | |
|
||||
| main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | |
|
||||
| main.rs:40:13:40:21 | source(...) | main.rs:40:9:40:9 | s | provenance | |
|
||||
@@ -43,8 +44,8 @@ edges
|
||||
| main.rs:41:14:41:28 | ...::A(...) [A] | main.rs:41:9:41:10 | e1 [A] | provenance | |
|
||||
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
|
||||
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
|
||||
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:19 |
|
||||
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:19 |
|
||||
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:20 |
|
||||
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:20 |
|
||||
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
|
||||
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
|
||||
| main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | s | provenance | |
|
||||
@@ -53,8 +54,8 @@ edges
|
||||
| main.rs:54:9:54:10 | e1 [B] | main.rs:55:11:55:12 | e1 [B] | provenance | |
|
||||
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
|
||||
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
|
||||
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:24 |
|
||||
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:24 |
|
||||
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:25 |
|
||||
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:25 |
|
||||
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
|
||||
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
|
||||
| main.rs:57:9:57:23 | ...::B(...) [B] | main.rs:57:22:57:22 | i | provenance | |
|
||||
@@ -71,8 +72,8 @@ edges
|
||||
| main.rs:73:14:73:42 | ...::C {...} [C] | main.rs:73:9:73:10 | e1 [C] | provenance | |
|
||||
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
|
||||
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
|
||||
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:18 |
|
||||
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:18 |
|
||||
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:19 |
|
||||
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:19 |
|
||||
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
|
||||
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
|
||||
| main.rs:85:13:85:21 | source(...) | main.rs:85:9:85:9 | s | provenance | |
|
||||
@@ -81,8 +82,8 @@ edges
|
||||
| main.rs:86:9:86:10 | e1 [D] | main.rs:87:11:87:12 | e1 [D] | provenance | |
|
||||
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
|
||||
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
|
||||
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:23 |
|
||||
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:23 |
|
||||
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:24 |
|
||||
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:24 |
|
||||
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
|
||||
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
|
||||
| main.rs:89:9:89:37 | ...::D {...} [D] | main.rs:89:35:89:35 | i | provenance | |
|
||||
@@ -99,8 +100,8 @@ edges
|
||||
| main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | main.rs:105:9:105:17 | my_struct [MyStruct.field1] | provenance | |
|
||||
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
|
||||
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
|
||||
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:16 |
|
||||
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:16 |
|
||||
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:17 |
|
||||
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:17 |
|
||||
| main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | |
|
||||
| main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | |
|
||||
| main.rs:126:13:126:21 | source(...) | main.rs:126:9:126:9 | s | provenance | |
|
||||
@@ -109,16 +110,16 @@ edges
|
||||
| main.rs:127:9:127:17 | my_struct [MyStruct.field2] | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:21 |
|
||||
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:21 |
|
||||
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:22 |
|
||||
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:22 |
|
||||
| main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | |
|
||||
| main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | |
|
||||
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
|
||||
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
|
||||
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | |
|
||||
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | |
|
||||
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:14 |
|
||||
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:14 |
|
||||
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:15 |
|
||||
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:15 |
|
||||
| main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | |
|
||||
| main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | |
|
||||
| main.rs:148:9:148:9 | s | main.rs:149:33:149:33 | s | provenance | |
|
||||
@@ -129,10 +130,10 @@ edges
|
||||
| main.rs:149:9:149:11 | arr [element] | main.rs:150:10:150:12 | arr [element] | provenance | |
|
||||
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
|
||||
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
|
||||
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:20 |
|
||||
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:20 |
|
||||
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
|
||||
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
|
||||
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:21 |
|
||||
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:21 |
|
||||
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | MaD:11 |
|
||||
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | MaD:11 |
|
||||
| main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | |
|
||||
| main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | |
|
||||
| main.rs:159:13:159:22 | source(...) | main.rs:159:9:159:9 | s | provenance | |
|
||||
@@ -143,8 +144,8 @@ edges
|
||||
| main.rs:160:13:160:18 | TupleExpr [tuple.0] | main.rs:160:9:160:9 | t [tuple.0] | provenance | |
|
||||
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:17 |
|
||||
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:17 |
|
||||
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:18 |
|
||||
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:18 |
|
||||
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
|
||||
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
|
||||
| main.rs:172:13:172:22 | source(...) | main.rs:172:9:172:9 | s | provenance | |
|
||||
@@ -153,8 +154,8 @@ edges
|
||||
| main.rs:173:9:173:9 | t [tuple.1] | main.rs:175:10:175:10 | t [tuple.1] | provenance | |
|
||||
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
|
||||
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
|
||||
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:22 |
|
||||
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:22 |
|
||||
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:23 |
|
||||
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:23 |
|
||||
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
|
||||
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
|
||||
| main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | |
|
||||
@@ -163,8 +164,8 @@ edges
|
||||
| main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | |
|
||||
| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | |
|
||||
| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | |
|
||||
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:11 |
|
||||
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:11 |
|
||||
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:12 |
|
||||
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:12 |
|
||||
| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | |
|
||||
| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | |
|
||||
| main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | |
|
||||
@@ -173,14 +174,14 @@ edges
|
||||
| main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | |
|
||||
| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | |
|
||||
| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:12 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:12 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:13 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:13 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:12 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:12 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:13 |
|
||||
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:13 |
|
||||
| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | |
|
||||
| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | |
|
||||
| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | |
|
||||
@@ -191,10 +192,10 @@ edges
|
||||
| main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | |
|
||||
| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | |
|
||||
| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | |
|
||||
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:11 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:11 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:11 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:11 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:12 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:12 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:12 |
|
||||
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:12 |
|
||||
| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | |
|
||||
| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | |
|
||||
| main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | |
|
||||
@@ -205,8 +206,8 @@ edges
|
||||
| main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | |
|
||||
| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | |
|
||||
| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | |
|
||||
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:15 |
|
||||
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:15 |
|
||||
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:16 |
|
||||
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:16 |
|
||||
| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | |
|
||||
| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | |
|
||||
| main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 |
|
||||
|
||||
@@ -54,7 +54,6 @@ edges
|
||||
| test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | test.rs:64:21:67:11 | TryExpr | provenance | |
|
||||
| test.rs:64:21:67:11 | TryExpr | test.rs:64:13:64:17 | total | provenance | |
|
||||
| test.rs:64:26:64:35 | query_fold | test.rs:64:76:64:83 | ...: i64 | provenance | Src:MaD:2 |
|
||||
| test.rs:64:76:64:83 | ...: i64 | test.rs:64:86:67:9 | { ... } | provenance | |
|
||||
| test.rs:64:76:64:83 | ...: i64 | test.rs:65:18:65:20 | row | provenance | |
|
||||
| test.rs:64:76:64:83 | ...: i64 | test.rs:66:19:66:21 | row | provenance | |
|
||||
| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:13 |
|
||||
@@ -87,7 +86,6 @@ edges
|
||||
| test.rs:151:21:154:16 | await ... [Ok] | test.rs:151:21:154:17 | TryExpr | provenance | |
|
||||
| test.rs:151:21:154:17 | TryExpr | test.rs:151:13:151:17 | total | provenance | |
|
||||
| test.rs:151:26:151:35 | query_fold | test.rs:151:76:151:83 | ...: i64 | provenance | Src:MaD:4 |
|
||||
| test.rs:151:76:151:83 | ...: i64 | test.rs:151:86:154:9 | { ... } | provenance | |
|
||||
| test.rs:151:76:151:83 | ...: i64 | test.rs:152:18:152:20 | row | provenance | |
|
||||
| test.rs:151:76:151:83 | ...: i64 | test.rs:153:19:153:21 | row | provenance | |
|
||||
| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:14 |
|
||||
|
||||
@@ -8,21 +8,22 @@ models
|
||||
| 7 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment |
|
||||
| 8 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; 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>::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 11 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 12 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 13 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 14 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 10 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 11 | Summary: <core::option::Option>::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 12 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 13 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 14 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 15 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
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:12 |
|
||||
| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:13 |
|
||||
| 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:11 |
|
||||
| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:12 |
|
||||
| test.rs:10:16:10:48 | ... .unwrap() | test.rs:10:9:10:12 | var2 | provenance | |
|
||||
| test.rs:27:9:27:12 | args [element] | test.rs:28:20:28:23 | args [element] | provenance | |
|
||||
| test.rs:27:9:27:12 | args [element] | test.rs:29:17:29:20 | args [element] | provenance | |
|
||||
@@ -31,28 +32,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 | |
|
||||
| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | MaD:10 |
|
||||
| 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 | |
|
||||
| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:10 |
|
||||
| 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:9 |
|
||||
| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:11 |
|
||||
| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:12 |
|
||||
| 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:9 |
|
||||
| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:11 |
|
||||
| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:12 |
|
||||
| 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:9 |
|
||||
| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:11 |
|
||||
| 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:13 |
|
||||
| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:12 |
|
||||
| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:15 |
|
||||
| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:14 |
|
||||
| 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 |
|
||||
@@ -62,15 +63,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:12 |
|
||||
| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:13 |
|
||||
| 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:12 |
|
||||
| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:13 |
|
||||
| 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:10 |
|
||||
| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:11 |
|
||||
| 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 |
|
||||
|
||||
@@ -6,63 +6,64 @@ models
|
||||
| 5 | Source: <tokio::net::tcp::stream::TcpStream>::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote |
|
||||
| 6 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote |
|
||||
| 7 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote |
|
||||
| 8 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint |
|
||||
| 9 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 10 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 13 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 15 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 16 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 17 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
|
||||
| 18 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 19 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 20 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value |
|
||||
| 21 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 22 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 23 | Summary: <futures_rustls::TlsConnector>::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 24 | Summary: <futures_util::io::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 25 | Summary: <reqwest::async_impl::response::Response>::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 26 | Summary: <reqwest::async_impl::response::Response>::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
|
||||
| 27 | Summary: <reqwest::async_impl::response::Response>::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 28 | Summary: <reqwest::blocking::response::Response>::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 29 | Summary: <reqwest::blocking::response::Response>::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 30 | Summary: <reqwest::blocking::response::Response>::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 31 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 32 | Summary: <tokio::net::tcp::stream::TcpStream>::peek; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 33 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 34 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 8 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 9 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint |
|
||||
| 10 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 16 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 17 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 18 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
|
||||
| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 20 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 21 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value |
|
||||
| 22 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
|
||||
| 23 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 24 | Summary: <futures_rustls::TlsConnector>::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 25 | Summary: <futures_util::io::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 26 | Summary: <reqwest::async_impl::response::Response>::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 27 | Summary: <reqwest::async_impl::response::Response>::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
|
||||
| 28 | Summary: <reqwest::async_impl::response::Response>::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 29 | Summary: <reqwest::blocking::response::Response>::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 30 | Summary: <reqwest::blocking::response::Response>::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 31 | Summary: <reqwest::blocking::response::Response>::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 32 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 33 | Summary: <tokio::net::tcp::stream::TcpStream>::peek; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 34 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 35 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
edges
|
||||
| test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | |
|
||||
| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 |
|
||||
| test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | |
|
||||
| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:29 |
|
||||
| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:30 |
|
||||
| test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | |
|
||||
| test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | |
|
||||
| test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | |
|
||||
| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 |
|
||||
| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:29 |
|
||||
| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:30 |
|
||||
| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | |
|
||||
| test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | |
|
||||
| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 |
|
||||
| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:30 |
|
||||
| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:31 |
|
||||
| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | |
|
||||
| test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | |
|
||||
| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 |
|
||||
| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:28 |
|
||||
| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:22 |
|
||||
| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:29 |
|
||||
| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:23 |
|
||||
| test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | |
|
||||
| test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | |
|
||||
| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 |
|
||||
| test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | |
|
||||
| test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | |
|
||||
| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:27 |
|
||||
| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:28 |
|
||||
| test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | |
|
||||
| test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | |
|
||||
| test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | |
|
||||
@@ -70,7 +71,7 @@ edges
|
||||
| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 |
|
||||
| test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | |
|
||||
| test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | |
|
||||
| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:25 |
|
||||
| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:26 |
|
||||
| test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | |
|
||||
| test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | |
|
||||
| test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | |
|
||||
@@ -80,13 +81,13 @@ edges
|
||||
| test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | |
|
||||
| test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | |
|
||||
| test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | |
|
||||
| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:26 |
|
||||
| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:27 |
|
||||
| test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | |
|
||||
| test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | |
|
||||
| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:19 |
|
||||
| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:20 |
|
||||
| test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | |
|
||||
| test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | |
|
||||
| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:26 |
|
||||
| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:27 |
|
||||
| test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | |
|
||||
| test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | |
|
||||
| test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | |
|
||||
@@ -107,20 +108,21 @@ edges
|
||||
| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 |
|
||||
| test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | |
|
||||
| test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | |
|
||||
| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:16 |
|
||||
| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:17 |
|
||||
| test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | |
|
||||
| test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | |
|
||||
| test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:22 | buffer[0] | provenance | |
|
||||
| test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:19 | buffer | provenance | |
|
||||
| test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | |
|
||||
| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:8 |
|
||||
| test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | |
|
||||
| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:4 |
|
||||
| test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | |
|
||||
| test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | |
|
||||
| test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | |
|
||||
| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:17 |
|
||||
| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:18 |
|
||||
| test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | |
|
||||
| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:31 |
|
||||
| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:15 |
|
||||
| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:32 |
|
||||
| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:16 |
|
||||
| test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | |
|
||||
| test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | |
|
||||
| test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | |
|
||||
@@ -132,21 +134,23 @@ edges
|
||||
| test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | |
|
||||
| test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | |
|
||||
| test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | |
|
||||
| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:32 |
|
||||
| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:33 |
|
||||
| test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | |
|
||||
| test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | |
|
||||
| test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | |
|
||||
| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:18 |
|
||||
| test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | |
|
||||
| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:19 |
|
||||
| test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | |
|
||||
| test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | |
|
||||
| test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | |
|
||||
| test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:20 | buffer2 | provenance | |
|
||||
| test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | |
|
||||
| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:8 |
|
||||
| test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | |
|
||||
| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:33 |
|
||||
| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:8 |
|
||||
| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:34 |
|
||||
| test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | |
|
||||
| test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | |
|
||||
| test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | |
|
||||
| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:34 |
|
||||
| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:35 |
|
||||
| test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | |
|
||||
| test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | |
|
||||
| test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | |
|
||||
@@ -165,32 +169,38 @@ edges
|
||||
| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | |
|
||||
| test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | |
|
||||
| test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | |
|
||||
| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:23 |
|
||||
| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:24 |
|
||||
| test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | |
|
||||
| test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | |
|
||||
| test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | |
|
||||
| test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | |
|
||||
| test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:20 |
|
||||
| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
|
||||
| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:21 |
|
||||
| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:22 |
|
||||
| test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | |
|
||||
| test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | |
|
||||
| test.rs:387:19:387:24 | pinned [Pin, &ref] | test.rs:387:18:387:24 | &pinned | provenance | |
|
||||
| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:9 |
|
||||
| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:10 |
|
||||
| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | |
|
||||
| test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | |
|
||||
| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:28 | buffer | provenance | |
|
||||
| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | |
|
||||
| test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | |
|
||||
| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:8 |
|
||||
| test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | |
|
||||
| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:13 |
|
||||
| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:14 |
|
||||
| test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | |
|
||||
| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | |
|
||||
| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:25 | buffer1 | provenance | |
|
||||
| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | |
|
||||
| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:8 |
|
||||
| test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | |
|
||||
| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:13 |
|
||||
| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 |
|
||||
| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | |
|
||||
| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:25 | buffer2 | provenance | |
|
||||
| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | |
|
||||
| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:8 |
|
||||
| test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | |
|
||||
| test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | |
|
||||
| test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | |
|
||||
@@ -205,30 +215,30 @@ edges
|
||||
| test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | |
|
||||
| test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | |
|
||||
| test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | |
|
||||
| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:24 |
|
||||
| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:25 |
|
||||
| test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | |
|
||||
| test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | |
|
||||
| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | |
|
||||
| test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | |
|
||||
| test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:20 |
|
||||
| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
|
||||
| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:21 |
|
||||
| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 |
|
||||
| test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | |
|
||||
| test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | |
|
||||
| test.rs:414:19:414:24 | pinned [Pin, &ref] | test.rs:414:18:414:24 | &pinned | provenance | |
|
||||
| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | |
|
||||
| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | |
|
||||
| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
|
||||
| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 |
|
||||
| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | |
|
||||
| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | |
|
||||
| test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | |
|
||||
| test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | |
|
||||
| test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | |
|
||||
| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | |
|
||||
| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
|
||||
| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 |
|
||||
| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | |
|
||||
| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:20 |
|
||||
| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:21 |
|
||||
| test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | |
|
||||
| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | |
|
||||
| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | |
|
||||
@@ -237,7 +247,7 @@ edges
|
||||
| test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | |
|
||||
| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | |
|
||||
| test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | |
|
||||
| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 |
|
||||
| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 |
|
||||
| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | |
|
||||
| test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | |
|
||||
| test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | |
|
||||
@@ -246,58 +256,64 @@ edges
|
||||
| test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | |
|
||||
| test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:20 |
|
||||
| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
|
||||
| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:21 |
|
||||
| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 |
|
||||
| test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | |
|
||||
| test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | |
|
||||
| test.rs:445:19:445:24 | pinned [Pin, &ref] | test.rs:445:18:445:24 | &pinned | provenance | |
|
||||
| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:9 |
|
||||
| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:10 |
|
||||
| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | |
|
||||
| test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | |
|
||||
| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:28 | buffer | provenance | |
|
||||
| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | |
|
||||
| test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | |
|
||||
| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:8 |
|
||||
| test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | |
|
||||
| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:13 |
|
||||
| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:14 |
|
||||
| test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | |
|
||||
| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | |
|
||||
| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:25 | buffer1 | provenance | |
|
||||
| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | |
|
||||
| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:8 |
|
||||
| test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | |
|
||||
| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:13 |
|
||||
| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 |
|
||||
| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | |
|
||||
| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:25 | buffer2 | provenance | |
|
||||
| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | |
|
||||
| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:8 |
|
||||
| test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | |
|
||||
| test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | |
|
||||
| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | |
|
||||
| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | |
|
||||
| test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | |
|
||||
| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:20 |
|
||||
| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
|
||||
| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:21 |
|
||||
| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 |
|
||||
| test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | |
|
||||
| test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | |
|
||||
| test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | |
|
||||
| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | |
|
||||
| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | |
|
||||
| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
|
||||
| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 |
|
||||
| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | |
|
||||
| test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | |
|
||||
| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | |
|
||||
| test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | |
|
||||
| test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | |
|
||||
| test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | |
|
||||
| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 |
|
||||
| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 |
|
||||
| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | |
|
||||
| test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | |
|
||||
| test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | |
|
||||
| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 |
|
||||
| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 |
|
||||
| test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | |
|
||||
| test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | |
|
||||
| test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | |
|
||||
| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:11 |
|
||||
| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 |
|
||||
| test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | |
|
||||
| test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | |
|
||||
| test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | |
|
||||
| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:14 |
|
||||
| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:15 |
|
||||
| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | |
|
||||
| test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | |
|
||||
| test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | |
|
||||
@@ -389,6 +405,7 @@ nodes
|
||||
| test.rs:162:34:162:39 | [post] buffer | semmle.label | [post] buffer |
|
||||
| test.rs:165:14:165:20 | &buffer | semmle.label | &buffer |
|
||||
| test.rs:165:15:165:20 | buffer | semmle.label | buffer |
|
||||
| test.rs:166:14:166:19 | buffer | semmle.label | buffer |
|
||||
| test.rs:166:14:166:22 | buffer[0] | semmle.label | buffer[0] |
|
||||
| test.rs:174:13:174:22 | mut stream | semmle.label | mut stream |
|
||||
| test.rs:174:26:174:61 | ...::connect_timeout | semmle.label | ...::connect_timeout |
|
||||
@@ -416,9 +433,11 @@ nodes
|
||||
| test.rs:236:41:236:47 | [post] buffer2 | semmle.label | [post] buffer2 |
|
||||
| test.rs:239:14:239:21 | &buffer1 | semmle.label | &buffer1 |
|
||||
| test.rs:239:15:239:21 | buffer1 | semmle.label | buffer1 |
|
||||
| test.rs:240:14:240:20 | buffer1 | semmle.label | buffer1 |
|
||||
| test.rs:240:14:240:23 | buffer1[0] | semmle.label | buffer1[0] |
|
||||
| test.rs:243:14:243:21 | &buffer2 | semmle.label | &buffer2 |
|
||||
| test.rs:243:15:243:21 | buffer2 | semmle.label | buffer2 |
|
||||
| test.rs:244:14:244:20 | buffer2 | semmle.label | buffer2 |
|
||||
| test.rs:244:14:244:23 | buffer2[0] | semmle.label | buffer2[0] |
|
||||
| test.rs:252:19:252:30 | tokio_stream | semmle.label | tokio_stream |
|
||||
| test.rs:252:41:252:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
|
||||
@@ -459,17 +478,20 @@ nodes
|
||||
| test.rs:391:22:391:28 | &buffer | semmle.label | &buffer |
|
||||
| test.rs:391:23:391:28 | buffer | semmle.label | buffer |
|
||||
| test.rs:392:22:392:33 | &... | semmle.label | &... |
|
||||
| test.rs:392:23:392:28 | buffer | semmle.label | buffer |
|
||||
| test.rs:392:23:392:33 | buffer[...] | semmle.label | buffer[...] |
|
||||
| test.rs:399:63:399:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] |
|
||||
| test.rs:399:68:399:73 | reader | semmle.label | reader |
|
||||
| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
|
||||
| test.rs:399:81:399:87 | [post] buffer1 | semmle.label | [post] buffer1 |
|
||||
| test.rs:400:18:400:40 | &... | semmle.label | &... |
|
||||
| test.rs:400:19:400:25 | buffer1 | semmle.label | buffer1 |
|
||||
| test.rs:400:19:400:40 | buffer1[...] | semmle.label | buffer1[...] |
|
||||
| test.rs:403:31:403:36 | reader | semmle.label | reader |
|
||||
| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
|
||||
| test.rs:403:48:403:54 | [post] buffer2 | semmle.label | [post] buffer2 |
|
||||
| test.rs:405:18:405:40 | &... | semmle.label | &... |
|
||||
| test.rs:405:19:405:25 | buffer2 | semmle.label | buffer2 |
|
||||
| test.rs:405:19:405:40 | buffer2[...] | semmle.label | buffer2[...] |
|
||||
| test.rs:408:13:408:23 | mut reader2 | semmle.label | mut reader2 |
|
||||
| test.rs:408:27:408:61 | ...::new(...) | semmle.label | ...::new(...) |
|
||||
@@ -527,17 +549,20 @@ nodes
|
||||
| test.rs:448:18:448:24 | &buffer | semmle.label | &buffer |
|
||||
| test.rs:448:19:448:24 | buffer | semmle.label | buffer |
|
||||
| test.rs:450:22:450:33 | &... | semmle.label | &... |
|
||||
| test.rs:450:23:450:28 | buffer | semmle.label | buffer |
|
||||
| test.rs:450:23:450:33 | buffer[...] | semmle.label | buffer[...] |
|
||||
| test.rs:457:63:457:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
|
||||
| test.rs:457:68:457:74 | reader2 | semmle.label | reader2 |
|
||||
| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
|
||||
| test.rs:457:82:457:88 | [post] buffer1 | semmle.label | [post] buffer1 |
|
||||
| test.rs:458:18:458:40 | &... | semmle.label | &... |
|
||||
| test.rs:458:19:458:25 | buffer1 | semmle.label | buffer1 |
|
||||
| test.rs:458:19:458:40 | buffer1[...] | semmle.label | buffer1[...] |
|
||||
| test.rs:461:31:461:37 | reader2 | semmle.label | reader2 |
|
||||
| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
|
||||
| test.rs:461:49:461:55 | [post] buffer2 | semmle.label | [post] buffer2 |
|
||||
| test.rs:462:18:462:40 | &... | semmle.label | &... |
|
||||
| test.rs:462:19:462:25 | buffer2 | semmle.label | buffer2 |
|
||||
| test.rs:462:19:462:40 | buffer2[...] | semmle.label | buffer2[...] |
|
||||
| test.rs:467:17:467:26 | mut pinned | semmle.label | mut pinned |
|
||||
| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
|
||||
|
||||
@@ -1,149 +1,151 @@
|
||||
models
|
||||
| 1 | Source: std::io::stdio::stdin; ReturnValue; stdin |
|
||||
| 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin |
|
||||
| 3 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 4 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint |
|
||||
| 5 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 6 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 7 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint |
|
||||
| 8 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
|
||||
| 9 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 10 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 11 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 12 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 13 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 14 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint |
|
||||
| 15 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint |
|
||||
| 18 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 20 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 27 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 28 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 29 | 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 |
|
||||
| 30 | Summary: <std::io::buffered::bufreader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
|
||||
| 31 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 32 | Summary: <std::io::stdio::Stdin>::lock; Argument[self].Reference; ReturnValue; taint |
|
||||
| 33 | Summary: <tokio::io::util::buf_reader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
|
||||
| 34 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 35 | 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 |
|
||||
| 36 | 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 |
|
||||
| 3 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 4 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 5 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint |
|
||||
| 6 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 7 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 8 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint |
|
||||
| 9 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
|
||||
| 10 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 11 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 12 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 13 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 14 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 15 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint |
|
||||
| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint |
|
||||
| 18 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint |
|
||||
| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 20 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
|
||||
| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 28 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 29 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 30 | 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 |
|
||||
| 31 | Summary: <std::io::buffered::bufreader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
|
||||
| 32 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 33 | Summary: <std::io::stdio::Stdin>::lock; Argument[self].Reference; ReturnValue; taint |
|
||||
| 34 | Summary: <tokio::io::util::buf_reader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
|
||||
| 35 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
|
||||
| 36 | 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 |
|
||||
| 37 | 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:9 |
|
||||
| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:10 |
|
||||
| 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:11 |
|
||||
| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:12 |
|
||||
| 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:12 |
|
||||
| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:13 |
|
||||
| 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:32 |
|
||||
| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:12 |
|
||||
| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:33 |
|
||||
| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:13 |
|
||||
| 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:10 |
|
||||
| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:11 |
|
||||
| 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:8 |
|
||||
| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:9 |
|
||||
| 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:31 |
|
||||
| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:32 |
|
||||
| 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:3 |
|
||||
| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:4 |
|
||||
| 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:31 |
|
||||
| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:32 |
|
||||
| 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:30 |
|
||||
| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:31 |
|
||||
| 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:31 |
|
||||
| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:5 |
|
||||
| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:32 |
|
||||
| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:6 |
|
||||
| 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:31 |
|
||||
| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:6 |
|
||||
| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:32 |
|
||||
| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:7 |
|
||||
| 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:22 | buffer[0] | provenance | |
|
||||
| test.rs:69:38:69:43 | [post] buffer | test.rs:71:14:71:19 | buffer | provenance | |
|
||||
| test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | |
|
||||
| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:3 |
|
||||
| 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:7 |
|
||||
| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:8 |
|
||||
| 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:31 |
|
||||
| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:29 |
|
||||
| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:27 |
|
||||
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:28 |
|
||||
| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:32 |
|
||||
| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:30 |
|
||||
| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:28 |
|
||||
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:29 |
|
||||
| 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:29 |
|
||||
| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:30 |
|
||||
| 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:28 |
|
||||
| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:29 |
|
||||
| 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:31 |
|
||||
| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:4 |
|
||||
| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:32 |
|
||||
| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:5 |
|
||||
| test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | |
|
||||
| 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:18 |
|
||||
| test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:19 |
|
||||
| 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:24 |
|
||||
| test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:25 |
|
||||
| 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:25 |
|
||||
| test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:26 |
|
||||
| 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:20 |
|
||||
| test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:21 |
|
||||
| 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 | |
|
||||
@@ -154,38 +156,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:26 |
|
||||
| test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:27 |
|
||||
| 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:22 |
|
||||
| test.rs:139:18:139:22 | stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:23 |
|
||||
| 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:21 |
|
||||
| test.rs:140:18:140:22 | stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:22 |
|
||||
| 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:23 |
|
||||
| test.rs:141:18:141:22 | stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:24 |
|
||||
| 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:19 |
|
||||
| test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:20 |
|
||||
| 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:34 |
|
||||
| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:35 |
|
||||
| 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:13 |
|
||||
| test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:14 |
|
||||
| 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 | |
|
||||
@@ -193,59 +195,60 @@ 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:34 |
|
||||
| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:35 |
|
||||
| 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:33 |
|
||||
| test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:34 |
|
||||
| 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:34 |
|
||||
| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:15 |
|
||||
| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:35 |
|
||||
| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:16 |
|
||||
| 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:34 |
|
||||
| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:16 |
|
||||
| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:35 |
|
||||
| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:17 |
|
||||
| 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:22 | buffer[0] | provenance | |
|
||||
| test.rs:179:38:179:43 | [post] buffer | test.rs:181:14:181:19 | buffer | provenance | |
|
||||
| test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | |
|
||||
| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:3 |
|
||||
| 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:17 |
|
||||
| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:18 |
|
||||
| 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:34 |
|
||||
| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:36 |
|
||||
| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:35 |
|
||||
| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:37 |
|
||||
| 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:27 |
|
||||
| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:28 |
|
||||
| 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:36 |
|
||||
| test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:37 |
|
||||
| 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:34 |
|
||||
| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:35 |
|
||||
| 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:14 |
|
||||
| test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:15 |
|
||||
| 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:35 |
|
||||
| test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:36 |
|
||||
| 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:27 |
|
||||
| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:28 |
|
||||
| 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:35 |
|
||||
| test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:36 |
|
||||
| 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 | |
|
||||
@@ -322,6 +325,7 @@ nodes
|
||||
| test.rs:69:38:69:43 | [post] buffer | semmle.label | [post] buffer |
|
||||
| test.rs:70:14:70:20 | &buffer | semmle.label | &buffer |
|
||||
| test.rs:70:15:70:20 | buffer | semmle.label | buffer |
|
||||
| test.rs:71:14:71:19 | buffer | semmle.label | buffer |
|
||||
| test.rs:71:14:71:22 | buffer[0] | semmle.label | buffer[0] |
|
||||
| test.rs:75:13:75:28 | mut reader_split | semmle.label | mut reader_split |
|
||||
| test.rs:75:32:75:72 | ...::new(...) | semmle.label | ...::new(...) |
|
||||
@@ -450,6 +454,7 @@ nodes
|
||||
| test.rs:179:38:179:43 | [post] buffer | semmle.label | [post] buffer |
|
||||
| test.rs:180:14:180:20 | &buffer | semmle.label | &buffer |
|
||||
| test.rs:180:15:180:20 | buffer | semmle.label | buffer |
|
||||
| test.rs:181:14:181:19 | buffer | semmle.label | buffer |
|
||||
| test.rs:181:14:181:22 | buffer[0] | semmle.label | buffer[0] |
|
||||
| test.rs:185:13:185:28 | mut reader_split | semmle.label | mut reader_split |
|
||||
| test.rs:185:32:185:76 | ...::new(...) | semmle.label | ...::new(...) |
|
||||
|
||||
@@ -3,23 +3,25 @@ models
|
||||
| 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
|
||||
| 3 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
|
||||
| 4 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
|
||||
| 5 | Summary: <alloc::string::String as core::convert::From>::from; Argument[0].Reference; ReturnValue; value |
|
||||
| 6 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; value |
|
||||
| 7 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value |
|
||||
| 8 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
|
||||
| 9 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value |
|
||||
| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 6 | Summary: <alloc::string::String as core::convert::From>::from; Argument[0].Reference; ReturnValue; value |
|
||||
| 7 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; value |
|
||||
| 8 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value |
|
||||
| 9 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint |
|
||||
| 10 | 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:5 |
|
||||
| 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:9:35:10 | s4 | 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:4 |
|
||||
| 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:7 |
|
||||
| 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 | |
|
||||
@@ -30,7 +32,7 @@ edges
|
||||
| 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:5 |
|
||||
| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:6 |
|
||||
| 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,37 +40,38 @@ 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:8 |
|
||||
| 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:9 |
|
||||
| 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:9 |
|
||||
| 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:9 |
|
||||
| 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:9 |
|
||||
| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:10 |
|
||||
| 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:9 |
|
||||
| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:10 |
|
||||
nodes
|
||||
| main.rs:26:9:26:9 | s | semmle.label | s |
|
||||
| main.rs:26:13:26:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:27:9:27:14 | sliced [&ref] | semmle.label | sliced [&ref] |
|
||||
| main.rs:27:18:27:25 | &... [&ref] | semmle.label | &... [&ref] |
|
||||
| main.rs:27:19:27:19 | s | semmle.label | s |
|
||||
| main.rs:27:19:27:25 | s[...] | semmle.label | s[...] |
|
||||
| main.rs:28:16:28:21 | sliced | semmle.label | sliced |
|
||||
| main.rs:32:9:32:10 | s1 | semmle.label | s1 |
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
| main.rs:4:5:4:8 | 1000 | main.rs:4:5:4:12 | ... + ... |
|
||||
| main.rs:4:12:4:12 | i | main.rs:4:5:4:12 | ... + ... |
|
||||
| main.rs:8:20:8:20 | s | main.rs:8:14:8:20 | FormatArgsExpr |
|
||||
| main.rs:13:10:13:10 | a | main.rs:13:10:13:14 | ... + ... |
|
||||
| main.rs:13:14:13:14 | 1 | main.rs:13:10:13:14 | ... + ... |
|
||||
| main.rs:18:11:18:11 | a | main.rs:18:10:18:11 | - ... |
|
||||
| main.rs:23:13:23:13 | a | main.rs:23:13:23:19 | a as u8 |
|
||||
| main.rs:24:10:24:10 | b | main.rs:24:10:24:17 | b as i64 |
|
||||
| main.rs:24:10:24:17 | [post] b as i64 | main.rs:24:10:24:10 | [post] b |
|
||||
| main.rs:29:23:29:23 | i | main.rs:29:17:29:23 | FormatArgsExpr |
|
||||
| main.rs:33:24:33:24 | s | main.rs:33:18:33:24 | FormatArgsExpr |
|
||||
| main.rs:38:23:38:23 | [post] s [borrowed] | main.rs:38:23:38:23 | [post] s |
|
||||
| main.rs:38:23:38:23 | s | main.rs:38:23:38:29 | s[...] |
|
||||
| main.rs:49:24:49:24 | i | main.rs:49:18:49:24 | FormatArgsExpr |
|
||||
| main.rs:54:14:54:16 | [post] arr [borrowed] | main.rs:54:14:54:16 | [post] arr |
|
||||
| main.rs:54:14:54:16 | arr | main.rs:54:14:54:19 | arr[1] |
|
||||
| main.rs:64:24:64:24 | [post] s [borrowed] | main.rs:64:24:64:24 | [post] s |
|
||||
| main.rs:64:24:64:24 | s | main.rs:64:24:64:27 | s[1] |
|
||||
| main.rs:64:24:64:27 | s[1] | main.rs:64:18:64:27 | FormatArgsExpr |
|
||||
| main.rs:69:9:69:12 | [post] arr2 [borrowed] | main.rs:69:9:69:12 | [post] arr2 |
|
||||
| main.rs:69:9:69:12 | arr2 | main.rs:69:9:69:15 | arr2[1] |
|
||||
| main.rs:16:5:16:5 | [post] b [borrowed] | main.rs:16:5:16:5 | [SSA] b |
|
||||
| main.rs:20:5:20:5 | [post] c [borrowed] | main.rs:20:5:20:5 | [SSA] c |
|
||||
| main.rs:31:13:31:13 | a | main.rs:31:13:31:19 | a as u8 |
|
||||
| main.rs:32:10:32:10 | b | main.rs:32:10:32:17 | b as i64 |
|
||||
| main.rs:32:10:32:17 | [post] b as i64 | main.rs:32:10:32:10 | [post] b |
|
||||
| main.rs:37:23:37:23 | i | main.rs:37:17:37:23 | FormatArgsExpr |
|
||||
| main.rs:41:24:41:24 | s | main.rs:41:18:41:24 | FormatArgsExpr |
|
||||
| main.rs:46:23:46:23 | [post] s [borrowed] | main.rs:46:23:46:23 | [post] s |
|
||||
| main.rs:46:23:46:23 | s | main.rs:46:23:46:29 | s[...] |
|
||||
| main.rs:46:23:46:29 | s[...] [pre-dereferenced] | main.rs:46:23:46:29 | s[...] |
|
||||
| main.rs:57:24:57:24 | i | main.rs:57:18:57:24 | FormatArgsExpr |
|
||||
| main.rs:62:14:62:16 | [post] arr [borrowed] | main.rs:62:14:62:16 | [post] arr |
|
||||
| main.rs:62:14:62:19 | arr[1] [pre-dereferenced] | main.rs:62:14:62:19 | arr[1] |
|
||||
| main.rs:72:24:72:24 | [post] s [borrowed] | main.rs:72:24:72:24 | [post] s |
|
||||
| main.rs:72:24:72:27 | s[1] | main.rs:72:18:72:27 | FormatArgsExpr |
|
||||
| main.rs:72:24:72:27 | s[1] [pre-dereferenced] | main.rs:72:24:72:27 | s[1] |
|
||||
| main.rs:77:9:77:12 | [post] arr2 [borrowed] | main.rs:77:9:77:12 | [post] arr2 |
|
||||
| main.rs:77:9:77:15 | arr2[1] [pre-dereferenced] | main.rs:77:9:77:15 | arr2[1] |
|
||||
|
||||
@@ -1,54 +1,80 @@
|
||||
models
|
||||
| 1 | Summary: <core::i64 as core::ops::arith::Neg>::neg; Argument[self]; ReturnValue; taint |
|
||||
| 1 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
|
||||
| 2 | Summary: <_ as core::ops::arith::AddAssign>::add_assign; Argument[0].Reference; Argument[self].Reference; taint |
|
||||
| 3 | Summary: <_ as core::ops::arith::AddAssign>::add_assign; Argument[0]; Argument[self].Reference; taint |
|
||||
| 4 | Summary: <_ as core::ops::arith::AddAssign>::add_assign; Argument[self].Reference; Argument[self].Reference; taint |
|
||||
| 5 | Summary: <_ as core::ops::arith::Neg>::neg; Argument[self]; ReturnValue; taint |
|
||||
| 6 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value |
|
||||
| 7 | Summary: <core::i64 as core::ops::arith::Neg>::neg; Argument[self]; ReturnValue; taint |
|
||||
edges
|
||||
| main.rs:12:9:12:9 | a | main.rs:13:10:13:14 | ... + ... | provenance | |
|
||||
| main.rs:12:9:12:9 | a | main.rs:13:10:13:10 | a | provenance | |
|
||||
| main.rs:12:13:12:22 | source(...) | main.rs:12:9:12:9 | a | provenance | |
|
||||
| main.rs:17:9:17:9 | a | main.rs:18:10:18:11 | - ... | provenance | |
|
||||
| main.rs:17:9:17:9 | a | main.rs:18:11:18:11 | a | provenance | |
|
||||
| main.rs:17:13:17:22 | source(...) | main.rs:17:9:17:9 | a | provenance | |
|
||||
| main.rs:18:11:18:11 | a | main.rs:18:10:18:11 | - ... | provenance | MaD:1 |
|
||||
| main.rs:22:9:22:9 | a | main.rs:23:9:23:9 | b | provenance | |
|
||||
| main.rs:22:13:22:22 | source(...) | main.rs:22:9:22:9 | a | provenance | |
|
||||
| main.rs:23:9:23:9 | b | main.rs:24:10:24:17 | b as i64 | provenance | |
|
||||
| main.rs:37:13:37:13 | s | main.rs:38:23:38:29 | s[...] | provenance | |
|
||||
| main.rs:37:17:37:26 | source(...) | main.rs:37:13:37:13 | s | provenance | |
|
||||
| main.rs:38:13:38:18 | sliced [&ref] | main.rs:39:14:39:19 | sliced | provenance | |
|
||||
| main.rs:38:22:38:29 | &... [&ref] | main.rs:38:13:38:18 | sliced [&ref] | provenance | |
|
||||
| main.rs:38:23:38:29 | s[...] | main.rs:38:22:38:29 | &... [&ref] | provenance | |
|
||||
| main.rs:53:13:53:15 | arr | main.rs:54:14:54:19 | arr[1] | provenance | |
|
||||
| main.rs:53:19:53:28 | source(...) | main.rs:53:13:53:15 | arr | provenance | |
|
||||
| main.rs:69:9:69:12 | [post] arr2 [element] | main.rs:70:14:70:17 | arr2 | provenance | |
|
||||
| main.rs:69:19:69:28 | source(...) | main.rs:69:9:69:12 | [post] arr2 [element] | provenance | |
|
||||
| main.rs:13:10:13:10 | a | main.rs:13:10:13:14 | ... + ... | provenance | MaD:1 |
|
||||
| main.rs:15:9:15:13 | mut b | main.rs:16:5:16:5 | b | provenance | |
|
||||
| main.rs:15:17:15:26 | source(...) | main.rs:15:9:15:13 | mut b | provenance | |
|
||||
| main.rs:16:5:16:5 | b | main.rs:17:10:17:10 | b | provenance | MaD:4 |
|
||||
| main.rs:20:10:20:19 | source(...) | main.rs:21:10:21:10 | c | provenance | MaD:2 |
|
||||
| main.rs:20:10:20:19 | source(...) | main.rs:21:10:21:10 | c | provenance | MaD:3 |
|
||||
| main.rs:25:9:25:9 | a | main.rs:26:11:26:11 | a | provenance | |
|
||||
| main.rs:25:13:25:22 | source(...) | main.rs:25:9:25:9 | a | provenance | |
|
||||
| main.rs:26:11:26:11 | a | main.rs:26:10:26:11 | - ... | provenance | MaD:5 |
|
||||
| main.rs:26:11:26:11 | a | main.rs:26:10:26:11 | - ... | provenance | MaD:7 |
|
||||
| main.rs:30:9:30:9 | a | main.rs:31:9:31:9 | b | provenance | |
|
||||
| main.rs:30:13:30:22 | source(...) | main.rs:30:9:30:9 | a | provenance | |
|
||||
| main.rs:31:9:31:9 | b | main.rs:32:10:32:17 | b as i64 | provenance | |
|
||||
| main.rs:45:13:45:13 | s | main.rs:46:23:46:23 | s | provenance | |
|
||||
| main.rs:45:13:45:13 | s | main.rs:46:23:46:29 | s[...] | provenance | |
|
||||
| main.rs:45:17:45:26 | source(...) | main.rs:45:13:45:13 | s | provenance | |
|
||||
| main.rs:46:13:46:18 | sliced [&ref] | main.rs:47:14:47:19 | sliced | provenance | |
|
||||
| main.rs:46:22:46:29 | &... [&ref] | main.rs:46:13:46:18 | sliced [&ref] | provenance | |
|
||||
| main.rs:46:23:46:23 | s | main.rs:46:23:46:29 | s[...] | provenance | MaD:6 |
|
||||
| main.rs:46:23:46:29 | s[...] | main.rs:46:22:46:29 | &... [&ref] | provenance | |
|
||||
| main.rs:61:13:61:15 | arr | main.rs:62:14:62:16 | arr | provenance | |
|
||||
| main.rs:61:19:61:28 | source(...) | main.rs:61:13:61:15 | arr | provenance | |
|
||||
| main.rs:62:14:62:16 | arr | main.rs:62:14:62:19 | arr[1] | provenance | MaD:6 |
|
||||
| main.rs:77:9:77:12 | [post] arr2 [element] | main.rs:78:14:78:17 | arr2 | provenance | |
|
||||
| main.rs:77:19:77:28 | source(...) | main.rs:77:9:77:12 | [post] arr2 [element] | provenance | |
|
||||
nodes
|
||||
| main.rs:12:9:12:9 | a | semmle.label | a |
|
||||
| main.rs:12:13:12:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:13:10:13:10 | a | semmle.label | a |
|
||||
| main.rs:13:10:13:14 | ... + ... | semmle.label | ... + ... |
|
||||
| main.rs:17:9:17:9 | a | semmle.label | a |
|
||||
| main.rs:17:13:17:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:18:10:18:11 | - ... | semmle.label | - ... |
|
||||
| main.rs:18:11:18:11 | a | semmle.label | a |
|
||||
| main.rs:22:9:22:9 | a | semmle.label | a |
|
||||
| main.rs:22:13:22:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:23:9:23:9 | b | semmle.label | b |
|
||||
| main.rs:24:10:24:17 | b as i64 | semmle.label | b as i64 |
|
||||
| main.rs:37:13:37:13 | s | semmle.label | s |
|
||||
| main.rs:37:17:37:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:38:13:38:18 | sliced [&ref] | semmle.label | sliced [&ref] |
|
||||
| main.rs:38:22:38:29 | &... [&ref] | semmle.label | &... [&ref] |
|
||||
| main.rs:38:23:38:29 | s[...] | semmle.label | s[...] |
|
||||
| main.rs:39:14:39:19 | sliced | semmle.label | sliced |
|
||||
| main.rs:53:13:53:15 | arr | semmle.label | arr |
|
||||
| main.rs:53:19:53:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:54:14:54:19 | arr[1] | semmle.label | arr[1] |
|
||||
| main.rs:69:9:69:12 | [post] arr2 [element] | semmle.label | [post] arr2 [element] |
|
||||
| main.rs:69:19:69:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:70:14:70:17 | arr2 | semmle.label | arr2 |
|
||||
| main.rs:15:9:15:13 | mut b | semmle.label | mut b |
|
||||
| main.rs:15:17:15:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:16:5:16:5 | b | semmle.label | b |
|
||||
| main.rs:17:10:17:10 | b | semmle.label | b |
|
||||
| main.rs:20:10:20:19 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:21:10:21:10 | c | semmle.label | c |
|
||||
| main.rs:25:9:25:9 | a | semmle.label | a |
|
||||
| main.rs:25:13:25:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:26:10:26:11 | - ... | semmle.label | - ... |
|
||||
| main.rs:26:11:26:11 | a | semmle.label | a |
|
||||
| main.rs:30:9:30:9 | a | semmle.label | a |
|
||||
| main.rs:30:13:30:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:31:9:31:9 | b | semmle.label | b |
|
||||
| main.rs:32:10:32:17 | b as i64 | semmle.label | b as i64 |
|
||||
| main.rs:45:13:45:13 | s | semmle.label | s |
|
||||
| main.rs:45:17:45:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:46:13:46:18 | sliced [&ref] | semmle.label | sliced [&ref] |
|
||||
| main.rs:46:22:46:29 | &... [&ref] | semmle.label | &... [&ref] |
|
||||
| main.rs:46:23:46:23 | s | semmle.label | s |
|
||||
| main.rs:46:23:46:29 | s[...] | semmle.label | s[...] |
|
||||
| main.rs:47:14:47:19 | sliced | semmle.label | sliced |
|
||||
| main.rs:61:13:61:15 | arr | semmle.label | arr |
|
||||
| main.rs:61:19:61:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:62:14:62:16 | arr | semmle.label | arr |
|
||||
| main.rs:62:14:62:19 | arr[1] | semmle.label | arr[1] |
|
||||
| main.rs:77:9:77:12 | [post] arr2 [element] | semmle.label | [post] arr2 [element] |
|
||||
| main.rs:77:19:77:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:78:14:78:17 | arr2 | semmle.label | arr2 |
|
||||
subpaths
|
||||
testFailures
|
||||
#select
|
||||
| main.rs:13:10:13:14 | ... + ... | main.rs:12:13:12:22 | source(...) | main.rs:13:10:13:14 | ... + ... | $@ | main.rs:12:13:12:22 | source(...) | source(...) |
|
||||
| main.rs:18:10:18:11 | - ... | main.rs:17:13:17:22 | source(...) | main.rs:18:10:18:11 | - ... | $@ | main.rs:17:13:17:22 | source(...) | source(...) |
|
||||
| main.rs:24:10:24:17 | b as i64 | main.rs:22:13:22:22 | source(...) | main.rs:24:10:24:17 | b as i64 | $@ | main.rs:22:13:22:22 | source(...) | source(...) |
|
||||
| main.rs:39:14:39:19 | sliced | main.rs:37:17:37:26 | source(...) | main.rs:39:14:39:19 | sliced | $@ | main.rs:37:17:37:26 | source(...) | source(...) |
|
||||
| main.rs:54:14:54:19 | arr[1] | main.rs:53:19:53:28 | source(...) | main.rs:54:14:54:19 | arr[1] | $@ | main.rs:53:19:53:28 | source(...) | source(...) |
|
||||
| main.rs:70:14:70:17 | arr2 | main.rs:69:19:69:28 | source(...) | main.rs:70:14:70:17 | arr2 | $@ | main.rs:69:19:69:28 | source(...) | source(...) |
|
||||
| main.rs:17:10:17:10 | b | main.rs:15:17:15:26 | source(...) | main.rs:17:10:17:10 | b | $@ | main.rs:15:17:15:26 | source(...) | source(...) |
|
||||
| main.rs:21:10:21:10 | c | main.rs:20:10:20:19 | source(...) | main.rs:21:10:21:10 | c | $@ | main.rs:20:10:20:19 | source(...) | source(...) |
|
||||
| main.rs:26:10:26:11 | - ... | main.rs:25:13:25:22 | source(...) | main.rs:26:10:26:11 | - ... | $@ | main.rs:25:13:25:22 | source(...) | source(...) |
|
||||
| main.rs:32:10:32:17 | b as i64 | main.rs:30:13:30:22 | source(...) | main.rs:32:10:32:17 | b as i64 | $@ | main.rs:30:13:30:22 | source(...) | source(...) |
|
||||
| main.rs:47:14:47:19 | sliced | main.rs:45:17:45:26 | source(...) | main.rs:47:14:47:19 | sliced | $@ | main.rs:45:17:45:26 | source(...) | source(...) |
|
||||
| main.rs:62:14:62:19 | arr[1] | main.rs:61:19:61:28 | source(...) | main.rs:62:14:62:19 | arr[1] | $@ | main.rs:61:19:61:28 | source(...) | source(...) |
|
||||
| main.rs:78:14:78:17 | arr2 | main.rs:77:19:77:28 | source(...) | main.rs:78:14:78:17 | arr2 | $@ | main.rs:77:19:77:28 | source(...) | source(...) |
|
||||
|
||||
@@ -11,6 +11,14 @@ fn sink(s: i64) {
|
||||
fn addition() {
|
||||
let a = source(42);
|
||||
sink(a + 1); // $ hasTaintFlow=42
|
||||
|
||||
let mut b = source(58);
|
||||
b += 2;
|
||||
sink(b); // $ hasTaintFlow=58
|
||||
|
||||
let mut c = 0;
|
||||
c += source(99);
|
||||
sink(c); // $ hasTaintFlow=99
|
||||
}
|
||||
|
||||
fn negation() {
|
||||
|
||||
@@ -52,7 +52,6 @@ edges
|
||||
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:50 | unsafe_query | provenance | |
|
||||
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:42 | unsafe_query | provenance | |
|
||||
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | |
|
||||
| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | |
|
||||
| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:27 |
|
||||
| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 |
|
||||
| mysql.rs:18:13:18:89 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | |
|
||||
@@ -99,7 +98,6 @@ edges
|
||||
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:35 | unsafe_query | provenance | |
|
||||
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:42 | unsafe_query | provenance | |
|
||||
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | |
|
||||
| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | |
|
||||
| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:27 |
|
||||
| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 |
|
||||
| mysql.rs:103:13:103:89 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | |
|
||||
@@ -143,7 +141,6 @@ edges
|
||||
| sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | |
|
||||
| sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | |
|
||||
| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | |
|
||||
| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | |
|
||||
| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:27 |
|
||||
| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 |
|
||||
| sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | |
|
||||
@@ -174,7 +171,6 @@ edges
|
||||
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:27 |
|
||||
| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 |
|
||||
| sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | |
|
||||
@@ -199,7 +195,6 @@ edges
|
||||
| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 |
|
||||
| sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | |
|
||||
| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | |
|
||||
| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:27 |
|
||||
| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 |
|
||||
| sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | |
|
||||
|
||||
@@ -137,7 +137,6 @@ edges
|
||||
| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:9 | ...::log | provenance | MaD:12 Sink:MaD:12 |
|
||||
| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | |
|
||||
| test_logging.rs:96:14:96:49 | ... + ... | test_logging.rs:96:9:96:10 | m2 | provenance | |
|
||||
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | |
|
||||
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:18 |
|
||||
| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 |
|
||||
| test_logging.rs:96:41:96:49 | &password [&ref] | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 |
|
||||
|
||||
@@ -13,12 +13,9 @@ edges
|
||||
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:37 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:37 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:37 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:8 |
|
||||
| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:9 |
|
||||
| test_storage.rs:71:25:71:121 | ... + ... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | |
|
||||
| test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | |
|
||||
| test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:7 |
|
||||
| test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:6 |
|
||||
| test_storage.rs:71:96:71:114 | &... [&ref] | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:6 |
|
||||
@@ -35,24 +32,18 @@ edges
|
||||
| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 |
|
||||
| test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
|
||||
| test_storage.rs:189:9:189:24 | insert_query_bad | test_storage.rs:194:25:194:40 | insert_query_bad | provenance | |
|
||||
| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | |
|
||||
| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:8 |
|
||||
| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:9 |
|
||||
| test_storage.rs:189:28:189:124 | ... + ... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | |
|
||||
| test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | |
|
||||
| test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | |
|
||||
| test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:7 |
|
||||
| test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:6 |
|
||||
| test_storage.rs:189:99:189:117 | &... [&ref] | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:6 |
|
||||
| test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:189:99:189:117 | &... | provenance | Config |
|
||||
| test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:189:99:189:117 | &... [&ref] | provenance | |
|
||||
| test_storage.rs:190:9:190:24 | select_query_bad | test_storage.rs:196:35:196:50 | select_query_bad | provenance | |
|
||||
| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | |
|
||||
| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:28:190:109 | ... + ... | provenance | MaD:8 |
|
||||
| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:28:190:109 | ... + ... | provenance | MaD:9 |
|
||||
| test_storage.rs:190:28:190:109 | ... + ... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | |
|
||||
| test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | |
|
||||
| test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | |
|
||||
| test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:7 |
|
||||
| test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:6 |
|
||||
| test_storage.rs:190:85:190:103 | &... [&ref] | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:6 |
|
||||
|
||||
@@ -57,72 +57,76 @@ edges
|
||||
| main.rs:18:41:18:41 | v | main.rs:20:50:20:50 | v | provenance | |
|
||||
| main.rs:18:41:18:41 | v | main.rs:29:60:29:60 | v | provenance | |
|
||||
| main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | |
|
||||
| main.rs:18:41:18:41 | v | main.rs:32:60:32:89 | ... * ... | provenance | |
|
||||
| main.rs:18:41:18:41 | v | main.rs:35:9:35:10 | s6 | 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:38 |
|
||||
| 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: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:30 |
|
||||
| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
|
||||
| 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:24 |
|
||||
| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:38 |
|
||||
| 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: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:24 |
|
||||
| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:38 |
|
||||
| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:32 |
|
||||
| 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: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:31 |
|
||||
| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
|
||||
| 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:41 |
|
||||
| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:31 |
|
||||
| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:27 |
|
||||
| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:45 |
|
||||
| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
|
||||
| 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:15:35:49 | ... * ... | main.rs:35:9:35:10 | s6 | provenance | |
|
||||
| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:40 |
|
||||
| main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | |
|
||||
| main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:24 |
|
||||
| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:26 |
|
||||
| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 |
|
||||
| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:44 |
|
||||
| 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:31 |
|
||||
| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:35 |
|
||||
| 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:35 |
|
||||
| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:31 |
|
||||
| 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: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:45 | ... + ... | provenance | |
|
||||
| main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | |
|
||||
| main.rs:43:44:43:51 | ...: usize | main.rs:53:48:53:48 | v | provenance | |
|
||||
| main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:53 | ... * ... | provenance | |
|
||||
| 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:38 |
|
||||
| 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: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:33 |
|
||||
| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:38 |
|
||||
| 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: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:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:33 |
|
||||
| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:38 |
|
||||
| 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: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:34 |
|
||||
| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:38 |
|
||||
| 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:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
|
||||
| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:34 |
|
||||
| main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:27 |
|
||||
| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:38 |
|
||||
| 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:37 |
|
||||
| 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: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:33 |
|
||||
| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:37 |
|
||||
| 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 | |
|
||||
@@ -130,32 +134,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:38 |
|
||||
| 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: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:26 |
|
||||
| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:30 |
|
||||
| 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:27 |
|
||||
| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:38 |
|
||||
| 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: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:38 |
|
||||
| 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: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:28 |
|
||||
| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:29 |
|
||||
| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:38 |
|
||||
| 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: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:38 |
|
||||
| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
|
||||
| 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:38 |
|
||||
| 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: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:30 |
|
||||
| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
|
||||
| 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 | |
|
||||
@@ -166,16 +170,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:38 |
|
||||
| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
|
||||
| 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:38 |
|
||||
| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
|
||||
| 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 | |
|
||||
@@ -186,28 +190,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:38 |
|
||||
| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
|
||||
| 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:38 |
|
||||
| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 |
|
||||
| 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:47 |
|
||||
| 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:38 |
|
||||
| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 |
|
||||
| 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:46 |
|
||||
| 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:38 |
|
||||
| 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: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:30 |
|
||||
| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
|
||||
| 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 |
|
||||
@@ -215,9 +219,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:38 |
|
||||
| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:42 |
|
||||
| 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:25 |
|
||||
| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 |
|
||||
| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 |
|
||||
| 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:11 Sink:MaD:11 |
|
||||
@@ -254,19 +258,19 @@ edges
|
||||
| main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 |
|
||||
| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:30 | user_input | provenance | |
|
||||
| main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | |
|
||||
| main.rs:280:21:280:30 | user_input | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:39 |
|
||||
| main.rs:280:21:280:30 | user_input | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:43 |
|
||||
| main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | |
|
||||
| main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | |
|
||||
| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:41 |
|
||||
| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:27 |
|
||||
| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:45 |
|
||||
| main.rs:280:21:280:77 | ... * ... | main.rs:280:9:280:17 | num_bytes | provenance | |
|
||||
| main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | |
|
||||
| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:38 |
|
||||
| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:42 |
|
||||
| main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | |
|
||||
| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:30 |
|
||||
| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:34 |
|
||||
| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
|
||||
| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:22 |
|
||||
| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:23 |
|
||||
| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:36 |
|
||||
| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:40 |
|
||||
| main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | |
|
||||
| main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | |
|
||||
| main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | |
|
||||
@@ -276,9 +280,9 @@ edges
|
||||
| main.rs:317:9:317:9 | v | main.rs:325:22:325:22 | v | provenance | |
|
||||
| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:22 |
|
||||
| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 |
|
||||
| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:36 |
|
||||
| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:39 |
|
||||
| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:38 |
|
||||
| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:40 |
|
||||
| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:43 |
|
||||
| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:42 |
|
||||
| main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | |
|
||||
| main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | |
|
||||
| main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | |
|
||||
@@ -310,26 +314,30 @@ models
|
||||
| 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size |
|
||||
| 22 | Source: std::env::args; ReturnValue.Element; commandargs |
|
||||
| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
|
||||
| 24 | Summary: <core::alloc::layout::Layout>::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 25 | Summary: <core::alloc::layout::Layout>::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 26 | Summary: <core::alloc::layout::Layout>::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
|
||||
| 27 | Summary: <core::alloc::layout::Layout>::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
|
||||
| 28 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 29 | Summary: <core::alloc::layout::Layout>::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 30 | Summary: <core::alloc::layout::Layout>::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 31 | Summary: <core::alloc::layout::Layout>::from_size_align_unchecked; Argument[0]; ReturnValue; taint |
|
||||
| 32 | Summary: <core::alloc::layout::Layout>::pad_to_align; Argument[self].Reference; ReturnValue; taint |
|
||||
| 33 | Summary: <core::alloc::layout::Layout>::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint |
|
||||
| 34 | Summary: <core::alloc::layout::Layout>::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 35 | Summary: <core::alloc::layout::Layout>::size; Argument[self].Reference; ReturnValue; taint |
|
||||
| 36 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
|
||||
| 37 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 38 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 39 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 40 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint |
|
||||
| 41 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint |
|
||||
| 42 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
|
||||
| 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value |
|
||||
| 24 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
|
||||
| 25 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[0].Reference; ReturnValue; taint |
|
||||
| 26 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint |
|
||||
| 27 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint |
|
||||
| 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::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
|
||||
| 44 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint |
|
||||
| 45 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint |
|
||||
| 46 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
|
||||
| 47 | 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 |
|
||||
@@ -363,6 +371,7 @@ nodes
|
||||
| main.rs:33:13:33:29 | ...::alloc | semmle.label | ...::alloc |
|
||||
| main.rs:33:31:33:32 | l5 | semmle.label | l5 |
|
||||
| main.rs:35:9:35:10 | s6 | semmle.label | s6 |
|
||||
| main.rs:35:14:35:54 | ... + ... | semmle.label | ... + ... |
|
||||
| main.rs:35:15:35:49 | ... * ... | semmle.label | ... * ... |
|
||||
| main.rs:35:49:35:49 | v | semmle.label | v |
|
||||
| main.rs:36:9:36:10 | l6 | semmle.label | l6 |
|
||||
@@ -386,6 +395,7 @@ nodes
|
||||
| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | semmle.label | l2.repeat(...) [Ok, tuple.0] |
|
||||
| main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] |
|
||||
| main.rs:51:31:51:57 | ... .0 | semmle.label | ... .0 |
|
||||
| main.rs:51:41:51:41 | v | semmle.label | v |
|
||||
| main.rs:51:41:51:45 | ... + ... | semmle.label | ... + ... |
|
||||
| main.rs:53:13:53:29 | ...::alloc | semmle.label | ...::alloc |
|
||||
| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | semmle.label | l2.repeat_packed(...) [Ok] |
|
||||
@@ -394,6 +404,7 @@ nodes
|
||||
| main.rs:54:13:54:29 | ...::alloc | semmle.label | ...::alloc |
|
||||
| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | semmle.label | l2.repeat_packed(...) [Ok] |
|
||||
| main.rs:54:31:54:63 | ... .unwrap() | semmle.label | ... .unwrap() |
|
||||
| main.rs:54:48:54:48 | v | semmle.label | v |
|
||||
| main.rs:54:48:54:53 | ... * ... | semmle.label | ... * ... |
|
||||
| main.rs:58:9:58:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
|
||||
| main.rs:58:10:58:11 | k1 | semmle.label | k1 |
|
||||
|
||||
@@ -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:10 |
|
||||
| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:19 |
|
||||
| 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:10 |
|
||||
| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:19 |
|
||||
| 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:10 |
|
||||
| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:19 |
|
||||
| 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:10 |
|
||||
| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:19 |
|
||||
| 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:10 |
|
||||
| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:19 |
|
||||
| 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:10 |
|
||||
| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:19 |
|
||||
| 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 | |
|
||||
@@ -67,7 +67,7 @@ edges
|
||||
| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:8 |
|
||||
| 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:11 |
|
||||
| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:20 |
|
||||
| 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 | |
|
||||
@@ -75,11 +75,16 @@ 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 | |
|
||||
| test_heuristic.rs:70:23:70:35 | ... << ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:9 |
|
||||
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | |
|
||||
| test_heuristic.rs:69:32:69:32 | 1 | test_heuristic.rs:69:22:69:32 | ... + ... | provenance | MaD:10 |
|
||||
| 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:15 |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:17 |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:16 |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:18 |
|
||||
| test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:14 |
|
||||
| test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:13 |
|
||||
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:41:70:61 | ... & ... | provenance | MaD:12 |
|
||||
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:41:70:61 | ... & ... | provenance | MaD:11 |
|
||||
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 |
|
||||
@@ -89,9 +94,18 @@ models
|
||||
| 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: <core::u64 as core::ops::bit::Shl>::shl; Argument[0]; ReturnValue; taint |
|
||||
| 10 | Summary: <generic_array::GenericArray>::from_slice; Argument[0].Reference; ReturnValue.Reference; value |
|
||||
| 11 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value |
|
||||
| 9 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
|
||||
| 10 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint |
|
||||
| 11 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[0].Reference; ReturnValue; taint |
|
||||
| 12 | Summary: <_ as core::ops::bit::BitAnd>::bitand; Argument[0]; ReturnValue; taint |
|
||||
| 13 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[0].Reference; ReturnValue; taint |
|
||||
| 14 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[0]; ReturnValue; taint |
|
||||
| 15 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self]; ReturnValue; taint |
|
||||
| 16 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[0].Reference; ReturnValue; taint |
|
||||
| 17 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[0]; ReturnValue; taint |
|
||||
| 18 | Summary: <core::u64 as core::ops::bit::Shl>::shl; Argument[0]; ReturnValue; taint |
|
||||
| 19 | Summary: <generic_array::GenericArray>::from_slice; Argument[0].Reference; ReturnValue.Reference; value |
|
||||
| 20 | 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] |
|
||||
@@ -170,5 +184,6 @@ nodes
|
||||
| test_heuristic.rs:70:22:70:62 | ... ^ ... | semmle.label | ... ^ ... |
|
||||
| test_heuristic.rs:70:23:70:35 | ... << ... | semmle.label | ... << ... |
|
||||
| test_heuristic.rs:70:34:70:35 | 32 | semmle.label | 32 |
|
||||
| test_heuristic.rs:70:41:70:61 | ... & ... | semmle.label | ... & ... |
|
||||
| test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | semmle.label | 0xFFFFFFFF |
|
||||
subpaths
|
||||
|
||||
@@ -176,7 +176,6 @@ edges
|
||||
| lifetime.rs:630:10:630:25 | &... | lifetime.rs:630:3:630:6 | str2 | provenance | |
|
||||
| lifetime.rs:654:4:654:7 | str2 | lifetime.rs:655:22:655:25 | str2 | provenance | |
|
||||
| lifetime.rs:654:11:654:35 | ... + ... | lifetime.rs:654:4:654:7 | str2 | provenance | |
|
||||
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:4:654:7 | str2 | provenance | |
|
||||
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:2 |
|
||||
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:1 |
|
||||
| lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:659:15:659:18 | ref1 | provenance | |
|
||||
|
||||
Reference in New Issue
Block a user