Merge pull request #20891 from hvitved/rust/data-flow-implicit-deref-borrow

Rust: Improve handling of implicit derefs/borrows in data flow
This commit is contained in:
Tom Hvitved
2025-12-01 19:03:55 +01:00
committed by GitHub
46 changed files with 1134 additions and 1069 deletions

View File

@@ -19,10 +19,6 @@ private module Input implements InputSig<Location, RustDataFlow> {
predicate postWithInFlowExclude(RustDataFlow::Node n) { predicate postWithInFlowExclude(RustDataFlow::Node n) {
n instanceof Node::FlowSummaryNode n instanceof Node::FlowSummaryNode
or or
// We allow flow into post-update node for receiver expressions (from the
// synthetic post receiever node).
n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = any(Node::ReceiverNode r).getReceiver()
or
n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = getPostUpdateReverseStep(_, _) n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = getPostUpdateReverseStep(_, _)
or or
FlowSummaryImpl::Private::Steps::sourceLocalStep(_, n, _) FlowSummaryImpl::Private::Steps::sourceLocalStep(_, n, _)

View File

@@ -12,7 +12,6 @@ private import codeql.rust.elements.Call
private import SsaImpl as SsaImpl private import SsaImpl as SsaImpl
private import codeql.rust.controlflow.internal.Scope as Scope private import codeql.rust.controlflow.internal.Scope as Scope
private import codeql.rust.internal.PathResolution private import codeql.rust.internal.PathResolution
private import codeql.rust.internal.TypeInference as TypeInference
private import codeql.rust.controlflow.ControlFlowGraph private import codeql.rust.controlflow.ControlFlowGraph
private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.Ssa
private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.FlowSummary
@@ -141,18 +140,11 @@ final class ArgumentPosition extends ParameterPosition {
/** /**
* Holds if `arg` is an argument of `call` at the position `pos`. * Holds if `arg` is an argument of `call` at the position `pos`.
*
* Note that this does not hold for the receiever expression of a method call
* as the synthetic `ReceiverNode` is the argument for the `self` parameter.
*/ */
predicate isArgumentForCall(Expr arg, Call call, ParameterPosition pos) { predicate isArgumentForCall(Expr arg, Call call, ArgumentPosition pos) {
// TODO: Handle index expressions as calls in data flow. // TODO: Handle index expressions as calls in data flow.
not call instanceof IndexExpr and not call instanceof IndexExpr and
( arg = pos.getArgument(call)
call.getPositionalArgument(pos.getPosition()) = arg
or
call.getReceiver() = arg and pos.isSelf() and not call.receiverImplicitlyBorrowed()
)
} }
/** Provides logic related to SSA. */ /** Provides logic related to SSA. */
@@ -283,14 +275,6 @@ module LocalFlow {
or or
nodeFrom.asPat().(OrPat).getAPat() = nodeTo.asPat() nodeFrom.asPat().(OrPat).getAPat() = nodeTo.asPat()
or or
// Simple value step from receiver expression to receiver node, in case
// there is no implicit deref or borrow operation.
nodeFrom.asExpr() = nodeTo.(ReceiverNode).getReceiver()
or
// The dual step of the above, for the post-update nodes.
nodeFrom.(PostUpdateNode).getPreUpdateNode().(ReceiverNode).getReceiver() =
nodeTo.(PostUpdateNode).getPreUpdateNode().asExpr()
or
nodeTo.(PostUpdateNode).getPreUpdateNode().asExpr() = nodeTo.(PostUpdateNode).getPreUpdateNode().asExpr() =
getPostUpdateReverseStep(nodeFrom.(PostUpdateNode).getPreUpdateNode().asExpr(), true) getPostUpdateReverseStep(nodeFrom.(PostUpdateNode).getPreUpdateNode().asExpr(), true)
} }
@@ -380,7 +364,8 @@ module RustDataFlow implements InputSig<Location> {
node.(FlowSummaryNode).getSummaryNode().isHidden() or node.(FlowSummaryNode).getSummaryNode().isHidden() or
node instanceof CaptureNode or node instanceof CaptureNode or
node instanceof ClosureParameterNode or node instanceof ClosureParameterNode or
node instanceof ReceiverNode or node instanceof DerefBorrowNode or
node instanceof DerefOutNode or
node.asExpr() instanceof ParenExpr or node.asExpr() instanceof ParenExpr or
nodeIsHidden(node.(PostUpdateNode).getPreUpdateNode()) nodeIsHidden(node.(PostUpdateNode).getPreUpdateNode())
} }
@@ -520,16 +505,16 @@ module RustDataFlow implements InputSig<Location> {
} }
pragma[nomagic] pragma[nomagic]
private predicate implicitDerefToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { private predicate implicitDeref(Node node1, DerefBorrowNode node2, ReferenceContent c) {
TypeInference::receiverHasImplicitDeref(node1.asExpr()) and not node2.isBorrow() and
node1.asExpr() = node2.getReceiver() and node1.asExpr() = node2.getNode() and
exists(c) exists(c)
} }
pragma[nomagic] pragma[nomagic]
private predicate implicitBorrowToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { private predicate implicitBorrow(Node node1, DerefBorrowNode node2, ReferenceContent c) {
TypeInference::receiverHasImplicitBorrow(node1.asExpr()) and node2.isBorrow() and
node1.asExpr() = node2.getReceiver() and node1.asExpr() = node2.getNode() and
exists(c) exists(c)
} }
@@ -539,6 +524,15 @@ module RustDataFlow implements InputSig<Location> {
exists(c) exists(c)
} }
private Node getFieldExprContainerNode(FieldExpr fe) {
exists(Expr container | container = fe.getContainer() |
not any(DerefBorrowNode n).getNode() = container and
result.asExpr() = container
or
result.(DerefBorrowNode).getNode() = container
)
}
pragma[nomagic] pragma[nomagic]
additional predicate readContentStep(Node node1, Content c, Node node2) { additional predicate readContentStep(Node node1, Content c, Node node2) {
exists(TupleStructPat pat, int pos | exists(TupleStructPat pat, int pos |
@@ -563,7 +557,7 @@ module RustDataFlow implements InputSig<Location> {
node1.asPat().(RefPat).getPat() = node2.asPat() node1.asPat().(RefPat).getPat() = node2.asPat()
or or
exists(FieldExpr access | exists(FieldExpr access |
node1.asExpr() = access.getContainer() and node1 = getFieldExprContainerNode(access) and
node2.asExpr() = access and node2.asExpr() = access and
access = c.(FieldContent).getAnAccess() access = c.(FieldContent).getAnAccess()
) )
@@ -593,10 +587,9 @@ module RustDataFlow implements InputSig<Location> {
.isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0) .isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0)
) )
or or
exists(PrefixExpr deref | exists(DerefExpr deref |
c instanceof ReferenceContent and c instanceof ReferenceContent and
deref.getOperatorName() = "*" and node1.(DerefOutNode).getDerefExpr() = deref and
node1.asExpr() = deref.getExpr() and
node2.asExpr() = deref node2.asExpr() = deref
) )
or or
@@ -616,12 +609,10 @@ module RustDataFlow implements InputSig<Location> {
referenceExprToExpr(node2.(PostUpdateNode).getPreUpdateNode(), referenceExprToExpr(node2.(PostUpdateNode).getPreUpdateNode(),
node1.(PostUpdateNode).getPreUpdateNode(), c) node1.(PostUpdateNode).getPreUpdateNode(), c)
or or
// Step from receiver expression to receiver node, in case of an implicit implicitDeref(node1, node2, c)
// dereference.
implicitDerefToReceiver(node1, node2, c)
or or
// A read step dual to the store step for implicit borrows. // A read step dual to the store step for implicit borrows.
implicitBorrowToReceiver(node2.(PostUpdateNode).getPreUpdateNode(), implicitBorrow(node2.(PostUpdateNode).getPreUpdateNode(),
node1.(PostUpdateNode).getPreUpdateNode(), c) node1.(PostUpdateNode).getPreUpdateNode(), c)
or or
VariableCapture::readStep(node1, c, node2) VariableCapture::readStep(node1, c, node2)
@@ -657,7 +648,7 @@ module RustDataFlow implements InputSig<Location> {
exists(AssignmentExpr assignment, FieldExpr access | exists(AssignmentExpr assignment, FieldExpr access |
assignment.getLhs() = access and assignment.getLhs() = access and
node1.asExpr() = assignment.getRhs() and node1.asExpr() = assignment.getRhs() and
node2.asExpr() = access.getContainer() and node2 = getFieldExprContainerNode(access) and
access = c.getAnAccess() access = c.getAnAccess()
) )
} }
@@ -729,9 +720,7 @@ module RustDataFlow implements InputSig<Location> {
or or
VariableCapture::storeStep(node1, c, node2) VariableCapture::storeStep(node1, c, node2)
or or
// Step from receiver expression to receiver node, in case of an implicit implicitBorrow(node1, node2, c)
// borrow.
implicitBorrowToReceiver(node1, node2, c)
} }
/** /**

View File

@@ -14,6 +14,7 @@ private import codeql.rust.controlflow.ControlFlowGraph
private import codeql.rust.controlflow.CfgNodes private import codeql.rust.controlflow.CfgNodes
private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.Ssa
private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.FlowSummary
private import codeql.rust.internal.TypeInference as TypeInference
private import Node as Node private import Node as Node
private import DataFlowImpl private import DataFlowImpl
private import FlowSummaryImpl as FlowSummaryImpl private import FlowSummaryImpl as FlowSummaryImpl
@@ -226,7 +227,11 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode {
private Call call_; private Call call_;
private RustDataFlow::ArgumentPosition pos_; private RustDataFlow::ArgumentPosition pos_;
ExprArgumentNode() { isArgumentForCall(n, call_, pos_) } ExprArgumentNode() {
isArgumentForCall(n, call_, pos_) and
not TypeInference::implicitDeref(n) and
not TypeInference::implicitBorrow(n)
}
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
call.asCall() = call_ and pos = pos_ call.asCall() = call_ and pos = pos_
@@ -234,27 +239,41 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode {
} }
/** /**
* The receiver of a method call _after_ any implicit borrow or dereferencing * A node that represents the value of an expression _after_ implicit dereferencing
* has taken place. * or borrowing.
*/ */
final class ReceiverNode extends ArgumentNode, TReceiverNode { class DerefBorrowNode extends Node, TDerefBorrowNode {
private Call n; AstNode n;
boolean isBorrow;
ReceiverNode() { this = TReceiverNode(n, false) } DerefBorrowNode() { this = TDerefBorrowNode(n, isBorrow, false) }
Expr getReceiver() { result = n.getReceiver() } AstNode getNode() { result = n }
MethodCallExpr getMethodCall() { result = n } predicate isBorrow() { isBorrow = true }
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
call.asCall() = n and pos = TSelfParameterPosition()
}
override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() }
override Location getLocation() { result = this.getReceiver().getLocation() } override Location getLocation() { result = n.getLocation() }
override string toString() { result = "receiver for " + this.getReceiver() } override string toString() {
if isBorrow = true then result = n + " [borrowed]" else result = n + " [dereferenced]"
}
}
/**
* A node that represents the value of an argument of a call _after_ implicit
* dereferencing or borrowing.
*/
final class DerefBorrowArgNode extends DerefBorrowNode, ArgumentNode {
private DataFlowCall call_;
private RustDataFlow::ArgumentPosition pos_;
DerefBorrowArgNode() { isArgumentForCall(n, call_.asCall(), pos_) }
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
call = call_ and pos = pos_
}
} }
final class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode { final class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode {
@@ -329,15 +348,46 @@ abstract class OutNode extends Node {
} }
final private class ExprOutNode extends ExprNode, OutNode { final private class ExprOutNode extends ExprNode, OutNode {
ExprOutNode() { this.asExpr() instanceof Call } ExprOutNode() {
exists(Call call |
call = this.asExpr() and
not call instanceof DerefExpr // Handled by `DerefOutNode`
)
}
/** Gets the underlying call CFG node that includes this out node. */ /** Gets the underlying call node that includes this out node. */
override DataFlowCall getCall(ReturnKind kind) { override DataFlowCall getCall(ReturnKind kind) {
result.asCall() = n and result.asCall() = n and
kind = TNormalReturnKind() kind = TNormalReturnKind()
} }
} }
/**
* A node that represents the value of a `*` expression _before_ implicit
* dereferencing:
*
* `*v` equivalent to `*Deref::deref(&v)`, and this node represents the
* `Deref::deref(&v)` part.
*/
class DerefOutNode extends OutNode, TDerefOutNode {
DerefExpr de;
DerefOutNode() { this = TDerefOutNode(de, false) }
DerefExpr getDerefExpr() { result = de }
override CfgScope getCfgScope() { result = de.getEnclosingCfgScope() }
override DataFlowCall getCall(ReturnKind kind) {
result.asCall() = de and
kind = TNormalReturnKind()
}
override Location getLocation() { result = de.getLocation() }
override string toString() { result = de.toString() + " [pre-dereferenced]" }
}
final class SummaryOutNode extends FlowSummaryNode, OutNode { final class SummaryOutNode extends FlowSummaryNode, OutNode {
private DataFlowCall call; private DataFlowCall call;
private ReturnKind kind_; private ReturnKind kind_;
@@ -402,16 +452,29 @@ final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode {
override Location getLocation() { result = e.getLocation() } override Location getLocation() { result = e.getLocation() }
} }
final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode { final class DerefBorrowPostUpdateNode extends PostUpdateNode, TDerefBorrowNode {
private Call call; private Expr arg;
private boolean isBorrow;
ReceiverPostUpdateNode() { this = TReceiverNode(call, true) } DerefBorrowPostUpdateNode() { this = TDerefBorrowNode(arg, isBorrow, true) }
override Node getPreUpdateNode() { result = TReceiverNode(call, false) } override DerefBorrowNode getPreUpdateNode() { result = TDerefBorrowNode(arg, isBorrow, false) }
override CfgScope getCfgScope() { result = call.getEnclosingCfgScope() } override CfgScope getCfgScope() { result = arg.getEnclosingCfgScope() }
override Location getLocation() { result = call.getReceiver().getLocation() } override Location getLocation() { result = arg.getLocation() }
}
class DerefOutPostUpdateNode extends PostUpdateNode, TDerefOutNode {
DerefExpr de;
DerefOutPostUpdateNode() { this = TDerefOutNode(de, true) }
override DerefOutNode getPreUpdateNode() { result = TDerefOutNode(de, false) }
override CfgScope getCfgScope() { result = de.getEnclosingCfgScope() }
override Location getLocation() { result = de.getLocation() }
} }
final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode {
@@ -467,19 +530,19 @@ newtype TNode =
any(IndexExpr i).getBase(), // any(IndexExpr i).getBase(), //
any(FieldExpr access).getContainer(), // any(FieldExpr access).getContainer(), //
any(TryExpr try).getExpr(), // any(TryExpr try).getExpr(), //
any(PrefixExpr pe | pe.getOperatorName() = "*").getExpr(), //
any(AwaitExpr a).getExpr(), // any(AwaitExpr a).getExpr(), //
any(MethodCallExpr mc).getReceiver(), //
getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _)
] ]
) )
} or } or
TReceiverNode(Call call, Boolean isPost) { TDerefBorrowNode(AstNode n, boolean borrow, Boolean isPost) {
call.hasEnclosingCfgScope() and TypeInference::implicitDeref(n) and
call.receiverImplicitlyBorrowed() and borrow = false
// TODO: Handle index expressions as calls in data flow. or
not call instanceof IndexExpr TypeInference::implicitBorrow(n) and
borrow = true
} or } or
TDerefOutNode(DerefExpr de, Boolean isPost) or
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or
TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) { TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) {
forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() | forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() |

View File

@@ -23,10 +23,10 @@ module Impl {
*/ */
class FieldExpr extends Generated::FieldExpr { class FieldExpr extends Generated::FieldExpr {
/** Gets the record field that this access references, if any. */ /** Gets the record field that this access references, if any. */
StructField getStructField() { result = TypeInference::resolveStructFieldExpr(this) } StructField getStructField() { result = TypeInference::resolveStructFieldExpr(this, _) }
/** Gets the tuple field that this access references, if any. */ /** Gets the tuple field that this access references, if any. */
TupleField getTupleField() { result = TypeInference::resolveTupleFieldExpr(this) } TupleField getTupleField() { result = TypeInference::resolveTupleFieldExpr(this, _) }
override string toStringImpl() { override string toStringImpl() {
exists(string abbr, string name | exists(string abbr, string name |

View File

@@ -7,13 +7,10 @@ extensions:
- ["<futures_util::io::buf_reader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<futures_util::io::buf_reader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<_ as futures_util::io::AsyncReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncReadExt>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncReadExt>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncReadExt>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::fill_buf", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as futures_util::io::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ 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", "manual"] - ["<_ 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", "manual"]
- ["<_ as futures_io::if_std::AsyncRead>::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] - ["<_ as futures_io::if_std::AsyncRead>::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]

View File

@@ -22,10 +22,10 @@ extensions:
- ["<reqwest::response::Response>::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::response::Response>::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::response::Response>::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::response::Response>::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::response::Response>::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::response::Response>::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::response::Response>::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<reqwest::response::Response>::chunk", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"]
- ["<reqwest::blocking::response::Response>::text", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::blocking::response::Response>::text", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::blocking::response::Response>::text_with_charset", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::blocking::response::Response>::text_with_charset", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::blocking::response::Response>::bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::blocking::response::Response>::bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::async_impl::response::Response>::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::async_impl::response::Response>::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::async_impl::response::Response>::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<reqwest::async_impl::response::Response>::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<reqwest::async_impl::response::Response>::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<reqwest::async_impl::response::Response>::chunk", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"]

View File

@@ -27,8 +27,19 @@ private class BuiltinsTypesFile extends File {
class BuiltinType extends Struct { class BuiltinType extends Struct {
BuiltinType() { this.getFile() instanceof BuiltinsTypesFile } BuiltinType() { this.getFile() instanceof BuiltinsTypesFile }
/** Gets the name of this type. */ /**
* Gets the name of this type.
*
* This is the name used internally to represent the type, for example `Ref`.
*/
string getName() { result = super.getName().getText() } string getName() { result = super.getName().getText() }
/**
* Gets a display name for this type.
*
* This is the name used in code, for example `&`.
*/
string getDisplayName() { result = this.getName() }
} }
/** /**
@@ -140,21 +151,43 @@ class F64 extends FloatingPointTypeImpl {
/** The builtin slice type `[T]`. */ /** The builtin slice type `[T]`. */
class SliceType extends BuiltinType { class SliceType extends BuiltinType {
SliceType() { this.getName() = "Slice" } SliceType() { this.getName() = "Slice" }
override string getDisplayName() { result = "[]" }
} }
/** The builtin array type `[T; N]`. */ /** The builtin array type `[T; N]`. */
class ArrayType extends BuiltinType { class ArrayType extends BuiltinType {
ArrayType() { this.getName() = "Array" } ArrayType() { this.getName() = "Array" }
override string getDisplayName() { result = "[;]" }
} }
/** The builtin reference type `&T` or `&mut T`. */ /** The builtin reference type `&T`. */
class RefType extends BuiltinType { class RefType extends BuiltinType {
RefType() { this.getName() = "Ref" } RefType() { this.getName() = "Ref" }
override string getDisplayName() { result = "&" }
} }
/** The builtin pointer type `*const T` or `*mut T`. */ /** The builtin reference type `&mut T`. */
class RefMutType extends BuiltinType {
RefMutType() { this.getName() = "RefMut" }
override string getDisplayName() { result = "&mut" }
}
/** The builtin pointer type `*const T`. */
class PtrType extends BuiltinType { class PtrType extends BuiltinType {
PtrType() { this.getName() = "Ptr" } PtrType() { this.getName() = "Ptr" }
override string getDisplayName() { result = "*const" }
}
/** The builtin pointer type `*mut T`. */
class PtrMutType extends BuiltinType {
PtrMutType() { this.getName() = "PtrMut" }
override string getDisplayName() { result = "*mut" }
} }
/** A builtin tuple type `(T1, T2, ...)`. */ /** A builtin tuple type `(T1, T2, ...)`. */
@@ -168,4 +201,13 @@ class TupleType extends BuiltinType {
or or
result = this.getGenericParamList().getNumberOfGenericParams() result = this.getGenericParamList().getNumberOfGenericParams()
} }
override string getDisplayName() {
// Note: This produces "(,,)" for a 2-tuple, "(,,,)" for a 3-tuple, etc.
// This is in order to distinguish the unit type `()` from the 1-tuple `(,)`.
exists(string commas |
commas = concat(int i | i = [0 .. this.getArity() - 1] | ",") and
result = "(" + commas + ")"
)
}
} }

View File

@@ -24,30 +24,31 @@ extensions:
extensible: summaryModel extensible: summaryModel
data: data:
# Box # Box
- ["<alloc::boxed::Box>::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["<alloc::boxed::Box as core::ops::deref::Deref>::deref", "Argument[self].Reference.Field[alloc::boxed::Box(0)]", "ReturnValue.Reference", "value", "manual"]
- ["<alloc::boxed::Box>::new", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["<alloc::boxed::Box>::pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]", "value", "manual"]
- ["<alloc::boxed::Box>::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["<alloc::boxed::Box>::new", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(0)]", "value", "manual"]
- ["<alloc::boxed::Box>::into_pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"]
# Fmt # Fmt
- ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"]
# Layout # Layout
- ["<core::alloc::layout::Layout>::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<core::alloc::layout::Layout>::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<core::alloc::layout::Layout>::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - ["<core::alloc::layout::Layout>::repeat", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - ["<core::alloc::layout::Layout>::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::repeat_packed", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - ["<core::alloc::layout::Layout>::extend", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - ["<core::alloc::layout::Layout>::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::extend_packed", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<core::alloc::layout::Layout>::align_to", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<core::alloc::layout::Layout>::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["<core::alloc::layout::Layout>::align_to", "Argument[self].Reference.Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"]
- ["<core::alloc::layout::Layout>::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<core::alloc::layout::Layout>::pad_to_align", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
- ["<core::alloc::layout::Layout>::size", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<core::alloc::layout::Layout>::size", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
# String # String
- ["<alloc::string::String>::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["<alloc::string::String>::as_str", "Argument[self]", "ReturnValue", "value", "manual"]
- ["<alloc::string::String>::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<alloc::string::String>::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"]
- ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
# Vec # Vec
- ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"]

View File

@@ -3,6 +3,9 @@ extensions:
pack: codeql/rust-all pack: codeql/rust-all
extensible: summaryModel extensible: summaryModel
data: data:
# 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 # Arithmetic
- ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ 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]", "ReturnValue", "taint", "manual"]
@@ -20,9 +23,8 @@ extensions:
- ["<core::result::Result>::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<core::result::Result>::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
- ["<core::result::Result>::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<core::result::Result>::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
@@ -30,12 +32,11 @@ extensions:
- ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"]
# Pin # Pin
- ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["<core::pin::Pin>::new", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"]
- ["<core::pin::Pin>::new", "Argument[0]", "ReturnValue", "value", "manual"] - ["<core::pin::Pin>::new_unchecked", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"]
- ["<core::pin::Pin>::new_unchecked", "Argument[0].Reference", "ReturnValue", "value", "manual"] - ["<core::pin::Pin>::into_inner", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"]
- ["<core::pin::Pin>::into_inner", "Argument[0]", "ReturnValue", "value", "manual"] - ["<core::pin::Pin>::into_inner_unchecked", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"]
- ["<core::pin::Pin>::into_inner_unchecked", "Argument[0]", "ReturnValue", "value", "manual"] - ["<core::pin::Pin>::set", "Argument[0]", "Argument[self].Reference.Field[core::pin::Pin::pointer]", "value", "manual"]
- ["<core::pin::Pin>::set", "Argument[0]", "Argument[self]", "value", "manual"]
# Ptr # Ptr
- ["core::ptr::read", "Argument[0].Reference", "ReturnValue", "value", "manual"] - ["core::ptr::read", "Argument[0].Reference", "ReturnValue", "value", "manual"]
- ["core::ptr::read_unaligned", "Argument[0].Reference", "ReturnValue", "value", "manual"] - ["core::ptr::read_unaligned", "Argument[0].Reference", "ReturnValue", "value", "manual"]
@@ -43,6 +44,9 @@ extensions:
- ["core::ptr::write", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write", "Argument[1]", "Argument[0].Reference", "value", "manual"]
- ["core::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"]
- ["core::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"]
# https://doc.rust-lang.org/std/pin/struct.Pin.html#impl-Deref-for-Pin%3CPtr%3E, but limited to `Ptr = &` and `Ptr = Box`
- ["<core::pin::Pin as core::ops::deref::Deref>::deref", "Argument[self].Reference.Field[core::pin::Pin::pointer].Reference", "ReturnValue.Reference", "value", "manual"]
- ["<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", "manual"]
# Str # Str
- ["<core::str>::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["<core::str>::as_str", "Argument[self]", "ReturnValue", "value", "manual"]
- ["<core::str>::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<core::str>::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"]

View File

@@ -9,18 +9,19 @@ extensions:
extensible: summaryModel extensible: summaryModel
data: data:
- ["<std::io::buffered::bufreader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<std::io::buffered::bufreader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::BufRead>::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as std::io::BufRead>::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<std::io::buffered::bufreader::BufReader>::buffer", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<std::io::buffered::bufreader::BufReader>::buffer", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"]
- ["<_ as std::io::Read>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as std::io::Read>::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as std::io::Read>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as std::io::Read>::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as std::io::BufRead>::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::BufRead>::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as std::io::BufRead>::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"] - ["<_ as std::io::BufRead>::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]
- ["<_ as std::io::BufRead>::split", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::BufRead>::split", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::BufRead>::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::BufRead>::lines", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::Read>::bytes", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::bytes", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::Read>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::chain", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::Read>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::chain", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<_ as std::io::Read>::take", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::take", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<std::io::stdio::Stdin>::lock", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<std::io::stdio::Stdin>::lock", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
- ["<std::io::Split as core::iter::traits::iterator::Iterator>::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"]

View File

@@ -9,40 +9,40 @@ extensions:
extensible: summaryModel extensible: summaryModel
data: data:
- ["<tokio::io::util::buf_reader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<tokio::io::util::buf_reader::BufReader>::new", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<tokio::io::util::buf_reader::BufReader>::buffer", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<tokio::io::util::buf_reader::BufReader>::buffer", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<tokio::io::util::split::Split>::next_segment", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<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", "manual"]
- ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<tokio::io::util::lines::Lines>::next_line", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<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", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u16", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u16", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u16_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u16_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u32", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u32_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u64", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u64_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u128", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u128", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u128_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u128_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i8", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i8", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i8_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i8_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i32", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i32_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i128", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i128", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i128_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i128_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>:::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>:::read_f32_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64_le", "Argument[self].Reference", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]

View File

@@ -8,7 +8,6 @@ extensions:
pack: codeql/rust-all pack: codeql/rust-all
extensible: summaryModel extensible: summaryModel
data: data:
- ["<tokio::net::tcp::stream::TcpStream>::peek", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<tokio::net::tcp::stream::TcpStream>::peek", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<tokio::net::tcp::stream::TcpStream>::try_read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<tokio::net::tcp::stream::TcpStream>::try_read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<tokio::net::tcp::stream::TcpStream>::try_read_buf", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
- ["<tokio::net::tcp::stream::TcpStream>::try_read_buf", "Argument[self]", "Argument[0].Reference", "taint", "manual"]

View File

@@ -1010,7 +1010,16 @@ private class StructItemNode extends TypeItemNode, ParameterizableItemNode insta
language[monotonicAggregates] language[monotonicAggregates]
override string getCanonicalPath(Crate c) { override string getCanonicalPath(Crate c) {
this.hasCanonicalPath(c) and this.hasCanonicalPath(c) and
result = strictconcat(int i | i in [0 .. 2] | this.getCanonicalPathPart(c, i) order by i) (
this =
any(Builtins::BuiltinType t |
not t.hasVisibility() and
result = t.getDisplayName()
)
or
not this = any(Builtins::BuiltinType t | not t.hasVisibility()) and
result = strictconcat(int i | i in [0 .. 2] | this.getCanonicalPathPart(c, i) order by i)
)
} }
} }

View File

@@ -2783,18 +2783,19 @@ private predicate inferOperationType =
ContextTyping::CheckContextTyping<inferOperationType0/3>::check/2; ContextTyping::CheckContextTyping<inferOperationType0/3>::check/2;
pragma[nomagic] pragma[nomagic]
private Type getFieldExprLookupType(FieldExpr fe, string name) { private Type getFieldExprLookupType(FieldExpr fe, string name, boolean isDereferenced) {
exists(TypePath path | exists(TypePath path |
result = inferType(fe.getContainer(), path) and result = inferType(fe.getContainer(), path) and
name = fe.getIdentifier().getText() and name = fe.getIdentifier().getText() and
isComplexRootStripped(path, result) isComplexRootStripped(path, result) and
if path.isEmpty() then isDereferenced = false else isDereferenced = true
) )
} }
pragma[nomagic] pragma[nomagic]
private Type getTupleFieldExprLookupType(FieldExpr fe, int pos) { private Type getTupleFieldExprLookupType(FieldExpr fe, int pos, boolean isDereferenced) {
exists(string name | exists(string name |
result = getFieldExprLookupType(fe, name) and result = getFieldExprLookupType(fe, name, isDereferenced) and
pos = name.toInt() pos = name.toInt()
) )
} }
@@ -2911,8 +2912,8 @@ private module FieldExprMatchingInput implements MatchingInputSig {
// mutual recursion; resolving fields requires resolving types and vice versa // mutual recursion; resolving fields requires resolving types and vice versa
result = result =
[ [
TStructFieldDecl(resolveStructFieldExpr(this)).(TDeclaration), TStructFieldDecl(resolveStructFieldExpr(this, _)).(TDeclaration),
TTupleFieldDecl(resolveTupleFieldExpr(this)) TTupleFieldDecl(resolveTupleFieldExpr(this, _))
] ]
} }
} }
@@ -3415,16 +3416,23 @@ private Type inferCastExprType(CastExpr ce, TypePath path) {
cached cached
private module Cached { private module Cached {
/** Holds if `receiver` is the receiver of a method call with an implicit dereference. */ /** Holds if `n` is implicitly dereferenced. */
cached cached
predicate receiverHasImplicitDeref(AstNode receiver) { predicate implicitDeref(AstNode n) {
any(MethodResolution::MethodCall mc).receiverHasImplicitDeref(receiver) any(MethodResolution::MethodCall mc).receiverHasImplicitDeref(n)
or
n =
any(FieldExpr fe |
exists(resolveStructFieldExpr(fe, true))
or
exists(resolveTupleFieldExpr(fe, true))
).getContainer()
} }
/** Holds if `receiver` is the receiver of a method call with an implicit borrow. */ /** Holds if `n` is implicitly borrowed. */
cached cached
predicate receiverHasImplicitBorrow(AstNode receiver) { predicate implicitBorrow(AstNode n) {
any(MethodResolution::MethodCall mc).receiverHasImplicitBorrow(receiver) any(MethodResolution::MethodCall mc).receiverHasImplicitBorrow(n)
} }
/** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */ /** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */
@@ -3439,8 +3447,10 @@ private module Cached {
* Gets the struct field that the field expression `fe` resolves to, if any. * Gets the struct field that the field expression `fe` resolves to, if any.
*/ */
cached cached
StructField resolveStructFieldExpr(FieldExpr fe) { StructField resolveStructFieldExpr(FieldExpr fe, boolean isDereferenced) {
exists(string name, Type ty | ty = getFieldExprLookupType(fe, pragma[only_bind_into](name)) | exists(string name, Type ty |
ty = getFieldExprLookupType(fe, pragma[only_bind_into](name), isDereferenced)
|
result = ty.(StructType).getStruct().getStructField(pragma[only_bind_into](name)) or result = ty.(StructType).getStruct().getStructField(pragma[only_bind_into](name)) or
result = ty.(UnionType).getUnion().getStructField(pragma[only_bind_into](name)) result = ty.(UnionType).getUnion().getStructField(pragma[only_bind_into](name))
) )
@@ -3450,10 +3460,10 @@ private module Cached {
* Gets the tuple field that the field expression `fe` resolves to, if any. * Gets the tuple field that the field expression `fe` resolves to, if any.
*/ */
cached cached
TupleField resolveTupleFieldExpr(FieldExpr fe) { TupleField resolveTupleFieldExpr(FieldExpr fe, boolean isDereferenced) {
exists(int i | exists(int i |
result = result =
getTupleFieldExprLookupType(fe, pragma[only_bind_into](i)) getTupleFieldExprLookupType(fe, pragma[only_bind_into](i), isDereferenced)
.(StructType) .(StructType)
.getStruct() .getStruct()
.getTupleField(pragma[only_bind_into](i)) .getTupleField(pragma[only_bind_into](i))

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -1,18 +1,17 @@
models models
| 1 | Summary: futures_executor::local_pool::block_on; Argument[0]; ReturnValue; value | | 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
| 2 | Summary: futures_executor::local_pool::block_on; Argument[0]; ReturnValue; value |
edges edges
| main.rs:12:28:14:1 | { ... } | main.rs:17:13:17:23 | get_data(...) | provenance | | | main.rs:12:28:14:1 | { ... } | main.rs:17:13:17:23 | get_data(...) | provenance | |
| main.rs:13:5:13:13 | source(...) | main.rs:12:28:14:1 | { ... } | provenance | | | main.rs:13:5:13:13 | source(...) | main.rs:12:28:14:1 | { ... } | provenance | |
| main.rs:17:9:17:9 | a | main.rs:18:10:18:10 | a | provenance | | | main.rs:17:9:17:9 | a | main.rs:18:10:18:10 | a | provenance | |
| main.rs:17:13:17:23 | get_data(...) | main.rs:17:9:17:9 | a | provenance | | | main.rs:17:13:17:23 | get_data(...) | main.rs:17:9:17:9 | a | provenance | |
| main.rs:26:28:26:33 | ...: i64 | main.rs:27:24:27:24 | n | provenance | | | main.rs:26:28:26:33 | ...: i64 | main.rs:27:21:27:21 | n | provenance | |
| main.rs:27:10:27:14 | [post] * ... [MyStruct] | main.rs:27:11:27:14 | [post] self [&ref, MyStruct] | provenance | | | main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | provenance | |
| main.rs:27:11:27:14 | [post] self [&ref, MyStruct] | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | provenance | | | main.rs:27:21:27:21 | n | main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | provenance | |
| main.rs:27:24:27:24 | n | main.rs:27:10:27:14 | [post] * ... [MyStruct] | provenance | | | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:31:9:31:12 | self [&ref, MyStruct] | provenance | |
| main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:31:11:31:14 | self [&ref, MyStruct] | provenance | | | main.rs:31:9:31:12 | self [&ref, MyStruct] | main.rs:31:9:31:17 | self.data | provenance | |
| main.rs:31:9:31:20 | ... .data | main.rs:30:31:32:5 | { ... } | provenance | | | main.rs:31:9:31:17 | self.data | main.rs:30:31:32:5 | { ... } | provenance | |
| main.rs:31:10:31:14 | * ... [MyStruct] | main.rs:31:9:31:20 | ... .data | provenance | |
| main.rs:31:11:31:14 | self [&ref, MyStruct] | main.rs:31:10:31:14 | * ... [MyStruct] | provenance | |
| main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | main.rs:38:11:38:11 | [post] a [MyStruct] | provenance | | | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | main.rs:38:11:38:11 | [post] a [MyStruct] | provenance | |
| main.rs:38:11:38:11 | [post] a [MyStruct] | main.rs:39:10:39:10 | a [MyStruct] | provenance | | | main.rs:38:11:38:11 | [post] a [MyStruct] | main.rs:39:10:39:10 | a [MyStruct] | provenance | |
| main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | | main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | |
@@ -112,16 +111,15 @@ edges
| main.rs:222:9:222:35 | MyInt {...} [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | provenance | | | main.rs:222:9:222:35 | MyInt {...} [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | provenance | |
| main.rs:222:24:222:27 | self [MyInt] | main.rs:222:24:222:33 | self.value | provenance | | | main.rs:222:24:222:27 | self [MyInt] | main.rs:222:24:222:33 | self.value | provenance | |
| main.rs:222:24:222:33 | self.value | main.rs:222:9:222:35 | MyInt {...} [MyInt] | provenance | | | main.rs:222:24:222:33 | self.value | main.rs:222:9:222:35 | MyInt {...} [MyInt] | provenance | |
| main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:228:25:228:27 | rhs [MyInt] | provenance | | | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:228:22:228:24 | rhs [MyInt] | provenance | |
| main.rs:228:10:228:14 | [post] * ... [MyInt] | main.rs:228:11:228:14 | [post] self [&ref, MyInt] | provenance | | | main.rs:228:9:228:12 | [post] self [&ref, MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | provenance | |
| main.rs:228:11:228:14 | [post] self [&ref, MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | provenance | | | main.rs:228:22:228:24 | rhs [MyInt] | main.rs:228:22:228:30 | rhs.value | provenance | |
| main.rs:228:25:228:27 | rhs [MyInt] | main.rs:228:25:228:33 | rhs.value | provenance | | | main.rs:228:22:228:30 | rhs.value | main.rs:228:9:228:12 | [post] self [&ref, MyInt] | provenance | |
| main.rs:228:25:228:33 | rhs.value | main.rs:228:10:228:14 | [post] * ... [MyInt] | provenance | |
| main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:236:12:236:15 | self [&ref, MyInt] | provenance | | | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:236:12:236:15 | self [&ref, MyInt] | provenance | |
| main.rs:236:9:236:22 | &... [&ref] | main.rs:235:38:237:5 | { ... } [&ref] | provenance | | | main.rs:236:9:236:22 | &... [&ref] | main.rs:235:38:237:5 | { ... } [&ref] | provenance | |
| main.rs:236:10:236:22 | ... .value | main.rs:236:9:236:22 | &... [&ref] | provenance | | | main.rs:236:10:236:22 | ... .value | main.rs:236:9:236:22 | &... [&ref] | provenance | |
| main.rs:236:11:236:15 | * ... [MyInt] | main.rs:236:10:236:22 | ... .value | provenance | | | main.rs:236:11:236:15 | * ... [MyInt] | main.rs:236:10:236:22 | ... .value | provenance | |
| main.rs:236:12:236:15 | self [&ref, MyInt] | main.rs:236:11:236:15 | * ... [MyInt] | provenance | | | main.rs:236:12:236:15 | self [&ref, MyInt] | main.rs:236:11:236:15 | * ... [MyInt] | provenance | MaD:1 |
| main.rs:242:9:242:9 | a [MyInt] | main.rs:244:13:244:13 | a [MyInt] | provenance | | | main.rs:242:9:242:9 | a [MyInt] | main.rs:244:13:244:13 | a [MyInt] | provenance | |
| main.rs:242:13:242:38 | MyInt {...} [MyInt] | main.rs:242:9:242:9 | a [MyInt] | provenance | | | main.rs:242:13:242:38 | MyInt {...} [MyInt] | main.rs:242:9:242:9 | a [MyInt] | provenance | |
| main.rs:242:28:242:36 | source(...) | main.rs:242:13:242:38 | MyInt {...} [MyInt] | provenance | | | main.rs:242:28:242:36 | source(...) | main.rs:242:13:242:38 | MyInt {...} [MyInt] | provenance | |
@@ -130,11 +128,12 @@ edges
| main.rs:244:13:244:13 | a [MyInt] | main.rs:244:13:244:17 | ... + ... [MyInt] | provenance | | | main.rs:244:13:244:13 | a [MyInt] | main.rs:244:13:244:17 | ... + ... [MyInt] | provenance | |
| main.rs:244:13:244:17 | ... + ... [MyInt] | main.rs:244:9:244:9 | c [MyInt] | provenance | | | main.rs:244:13:244:17 | ... + ... [MyInt] | main.rs:244:9:244:9 | c [MyInt] | provenance | |
| main.rs:245:10:245:10 | c [MyInt] | main.rs:245:10:245:16 | c.value | provenance | | | main.rs:245:10:245:10 | c [MyInt] | main.rs:245:10:245:16 | c.value | provenance | |
| main.rs:252:9:252:9 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | provenance | | | main.rs:252:9:252:9 | a [MyInt] | main.rs:254:13:254:13 | a [MyInt] | provenance | |
| main.rs:252:9:252:9 | a [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] | provenance | |
| main.rs:252:13:252:38 | MyInt {...} [MyInt] | main.rs:252:9:252:9 | a [MyInt] | provenance | | | main.rs:252:13:252:38 | MyInt {...} [MyInt] | main.rs:252:9:252:9 | a [MyInt] | provenance | |
| main.rs:252:28:252:36 | source(...) | main.rs:252:13:252:38 | MyInt {...} [MyInt] | provenance | | | main.rs:252:28:252:36 | source(...) | main.rs:252:13:252:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:254:9:254:9 | d [MyInt] | main.rs:255:10:255:10 | d [MyInt] | provenance | | | main.rs:254:9:254:9 | d [MyInt] | main.rs:255:10:255:10 | d [MyInt] | provenance | |
| main.rs:254:13:254:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | provenance | |
| main.rs:254:13:254:13 | a [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] | provenance | |
| main.rs:254:13:254:20 | a.add(...) [MyInt] | main.rs:254:9:254:9 | d [MyInt] | provenance | | | main.rs:254:13:254:20 | a.add(...) [MyInt] | main.rs:254:9:254:9 | d [MyInt] | provenance | |
| main.rs:255:10:255:10 | d [MyInt] | main.rs:255:10:255:16 | d.value | provenance | | | main.rs:255:10:255:10 | d [MyInt] | main.rs:255:10:255:16 | d.value | provenance | |
| main.rs:259:9:259:9 | b [MyInt] | main.rs:261:35:261:35 | b [MyInt] | provenance | | | main.rs:259:9:259:9 | b [MyInt] | main.rs:261:35:261:35 | b [MyInt] | provenance | |
@@ -150,10 +149,17 @@ edges
| main.rs:270:28:270:37 | source(...) | main.rs:270:13:270:39 | MyInt {...} [MyInt] | provenance | | | main.rs:270:28:270:37 | source(...) | main.rs:270:13:270:39 | MyInt {...} [MyInt] | provenance | |
| main.rs:272:9:272:9 | c | main.rs:273:10:273:10 | c | provenance | | | main.rs:272:9:272:9 | c | main.rs:273:10:273:10 | c | provenance | |
| main.rs:272:13:272:29 | * ... | main.rs:272:9:272:9 | c | provenance | | | main.rs:272:13:272:29 | * ... | main.rs:272:9:272:9 | c | provenance | |
| main.rs:272:14:272:29 | ...::deref(...) [&ref] | main.rs:272:13:272:29 | * ... | provenance | | | main.rs:272:14:272:29 | ...::deref(...) [&ref] | main.rs:272:13:272:29 | * ... | provenance | MaD:1 |
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | provenance | | | main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | provenance | |
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:272:14:272:29 | ...::deref(...) [&ref] | provenance | | | main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:272:14:272:29 | ...::deref(...) [&ref] | provenance | MaD:1 |
| main.rs:272:28:272:28 | a [MyInt] | main.rs:272:27:272:28 | &a [&ref, MyInt] | provenance | | | main.rs:272:28:272:28 | a [MyInt] | main.rs:272:27:272:28 | &a [&ref, MyInt] | provenance | |
| main.rs:275:9:275:9 | a [MyInt] | main.rs:276:14:276:14 | a [MyInt] | provenance | |
| main.rs:275:13:275:39 | MyInt {...} [MyInt] | main.rs:275:9:275:9 | a [MyInt] | provenance | |
| main.rs:275:28:275:37 | source(...) | main.rs:275:13:275:39 | MyInt {...} [MyInt] | provenance | |
| main.rs:276:9:276:9 | c | main.rs:277:10:277:10 | c | provenance | |
| main.rs:276:13:276:14 | * ... | main.rs:276:9:276:9 | c | provenance | |
| main.rs:276:14:276:14 | a [MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | provenance | |
| main.rs:276:14:276:14 | a [MyInt] | main.rs:276:13:276:14 | * ... | provenance | MaD:1 |
| main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | provenance | | | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | provenance | |
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | provenance | | | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | provenance | |
| main.rs:299:9:299:9 | a [MyInt] | main.rs:301:50:301:50 | a [MyInt] | provenance | | | main.rs:299:9:299:9 | a [MyInt] | main.rs:301:50:301:50 | a [MyInt] | provenance | |
@@ -180,7 +186,7 @@ edges
| main.rs:326:17:326:25 | source(...) | main.rs:326:13:326:13 | c | provenance | | | main.rs:326:17:326:25 | source(...) | main.rs:326:13:326:13 | c | provenance | |
| main.rs:334:9:334:9 | a | main.rs:335:10:335:10 | a | provenance | | | main.rs:334:9:334:9 | a | main.rs:335:10:335:10 | a | provenance | |
| main.rs:334:13:334:55 | ...::block_on(...) | main.rs:334:9:334:9 | a | provenance | | | main.rs:334:13:334:55 | ...::block_on(...) | main.rs:334:9:334:9 | a | provenance | |
| main.rs:334:41:334:54 | async_source(...) | main.rs:334:13:334:55 | ...::block_on(...) | provenance | MaD:1 | | main.rs:334:41:334:54 | async_source(...) | main.rs:334:13:334:55 | ...::block_on(...) | provenance | MaD:2 |
nodes nodes
| main.rs:12:28:14:1 | { ... } | semmle.label | { ... } | | main.rs:12:28:14:1 | { ... } | semmle.label | { ... } |
| main.rs:13:5:13:13 | source(...) | semmle.label | source(...) | | main.rs:13:5:13:13 | source(...) | semmle.label | source(...) |
@@ -189,14 +195,12 @@ nodes
| main.rs:18:10:18:10 | a | semmle.label | a | | main.rs:18:10:18:10 | a | semmle.label | a |
| main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | semmle.label | SelfParam [Return] [&ref, MyStruct] | | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | semmle.label | SelfParam [Return] [&ref, MyStruct] |
| main.rs:26:28:26:33 | ...: i64 | semmle.label | ...: i64 | | main.rs:26:28:26:33 | ...: i64 | semmle.label | ...: i64 |
| main.rs:27:10:27:14 | [post] * ... [MyStruct] | semmle.label | [post] * ... [MyStruct] | | main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | semmle.label | [post] self [&ref, MyStruct] |
| main.rs:27:11:27:14 | [post] self [&ref, MyStruct] | semmle.label | [post] self [&ref, MyStruct] | | main.rs:27:21:27:21 | n | semmle.label | n |
| main.rs:27:24:27:24 | n | semmle.label | n |
| main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | semmle.label | SelfParam [&ref, MyStruct] | | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | semmle.label | SelfParam [&ref, MyStruct] |
| main.rs:30:31:32:5 | { ... } | semmle.label | { ... } | | main.rs:30:31:32:5 | { ... } | semmle.label | { ... } |
| main.rs:31:9:31:20 | ... .data | semmle.label | ... .data | | main.rs:31:9:31:12 | self [&ref, MyStruct] | semmle.label | self [&ref, MyStruct] |
| main.rs:31:10:31:14 | * ... [MyStruct] | semmle.label | * ... [MyStruct] | | main.rs:31:9:31:17 | self.data | semmle.label | self.data |
| main.rs:31:11:31:14 | self [&ref, MyStruct] | semmle.label | self [&ref, MyStruct] |
| main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] | | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] |
| main.rs:38:11:38:11 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | | main.rs:38:11:38:11 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] |
| main.rs:38:23:38:31 | source(...) | semmle.label | source(...) | | main.rs:38:23:38:31 | source(...) | semmle.label | source(...) |
@@ -307,10 +311,9 @@ nodes
| main.rs:222:24:222:33 | self.value | semmle.label | self.value | | main.rs:222:24:222:33 | self.value | semmle.label | self.value |
| main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | semmle.label | SelfParam [Return] [&ref, MyInt] | | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | semmle.label | SelfParam [Return] [&ref, MyInt] |
| main.rs:227:30:227:39 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | | main.rs:227:30:227:39 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
| main.rs:228:10:228:14 | [post] * ... [MyInt] | semmle.label | [post] * ... [MyInt] | | main.rs:228:9:228:12 | [post] self [&ref, MyInt] | semmle.label | [post] self [&ref, MyInt] |
| main.rs:228:11:228:14 | [post] self [&ref, MyInt] | semmle.label | [post] self [&ref, MyInt] | | main.rs:228:22:228:24 | rhs [MyInt] | semmle.label | rhs [MyInt] |
| main.rs:228:25:228:27 | rhs [MyInt] | semmle.label | rhs [MyInt] | | main.rs:228:22:228:30 | rhs.value | semmle.label | rhs.value |
| main.rs:228:25:228:33 | rhs.value | semmle.label | rhs.value |
| main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | semmle.label | SelfParam [&ref, MyInt] | | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | semmle.label | SelfParam [&ref, MyInt] |
| main.rs:235:38:237:5 | { ... } [&ref] | semmle.label | { ... } [&ref] | | main.rs:235:38:237:5 | { ... } [&ref] | semmle.label | { ... } [&ref] |
| main.rs:236:9:236:22 | &... [&ref] | semmle.label | &... [&ref] | | main.rs:236:9:236:22 | &... [&ref] | semmle.label | &... [&ref] |
@@ -329,6 +332,7 @@ nodes
| main.rs:252:13:252:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | | main.rs:252:13:252:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:252:28:252:36 | source(...) | semmle.label | source(...) | | main.rs:252:28:252:36 | source(...) | semmle.label | source(...) |
| main.rs:254:9:254:9 | d [MyInt] | semmle.label | d [MyInt] | | main.rs:254:9:254:9 | d [MyInt] | semmle.label | d [MyInt] |
| main.rs:254:13:254:13 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:254:13:254:20 | a.add(...) [MyInt] | semmle.label | a.add(...) [MyInt] | | main.rs:254:13:254:20 | a.add(...) [MyInt] | semmle.label | a.add(...) [MyInt] |
| main.rs:255:10:255:10 | d [MyInt] | semmle.label | d [MyInt] | | main.rs:255:10:255:10 | d [MyInt] | semmle.label | d [MyInt] |
| main.rs:255:10:255:16 | d.value | semmle.label | d.value | | main.rs:255:10:255:16 | d.value | semmle.label | d.value |
@@ -349,6 +353,13 @@ nodes
| main.rs:272:27:272:28 | &a [&ref, MyInt] | semmle.label | &a [&ref, MyInt] | | main.rs:272:27:272:28 | &a [&ref, MyInt] | semmle.label | &a [&ref, MyInt] |
| main.rs:272:28:272:28 | a [MyInt] | semmle.label | a [MyInt] | | main.rs:272:28:272:28 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:273:10:273:10 | c | semmle.label | c | | main.rs:273:10:273:10 | c | semmle.label | c |
| main.rs:275:9:275:9 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:275:13:275:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:275:28:275:37 | source(...) | semmle.label | source(...) |
| main.rs:276:9:276:9 | c | semmle.label | c |
| main.rs:276:13:276:14 | * ... | semmle.label | * ... |
| main.rs:276:14:276:14 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:277:10:277:10 | c | semmle.label | c |
| main.rs:289:18:289:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | | main.rs:289:18:289:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
| main.rs:289:48:291:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | | main.rs:289:48:291:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | | main.rs:293:26:293:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
@@ -394,9 +405,10 @@ subpaths
| main.rs:194:38:194:38 | a | main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | main.rs:194:13:194:39 | ...::data_through(...) | | main.rs:194:38:194:38 | a | main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | main.rs:194:13:194:39 | ...::data_through(...) |
| main.rs:212:24:212:33 | source(...) | main.rs:206:12:206:17 | ...: i64 | main.rs:206:28:208:5 | { ... } [MyInt] | main.rs:212:13:212:34 | ...::new(...) [MyInt] | | main.rs:212:24:212:33 | source(...) | main.rs:206:12:206:17 | ...: i64 | main.rs:206:28:208:5 | { ... } [MyInt] | main.rs:212:13:212:34 | ...::new(...) [MyInt] |
| 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: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:252:9:252:9 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:220:42:223:5 | { ... } [MyInt] | main.rs:254:13:254:20 | a.add(...) [MyInt] | | main.rs: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:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | main.rs:227:19:227:27 | SelfParam [Return] [&ref, MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] |
| main.rs:272:27:272:28 | &a [&ref, MyInt] | main.rs:235:14:235:18 | SelfParam [&ref, MyInt] | main.rs:235:38:237:5 | { ... } [&ref] | main.rs:272:14:272:29 | ...::deref(...) [&ref] | | main.rs: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] | | main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] |
| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | | main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] |
testFailures testFailures
@@ -424,6 +436,7 @@ testFailures
| main.rs:255:10:255:16 | d.value | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:16 | d.value | $@ | main.rs:252:28:252:36 | source(...) | source(...) | | main.rs: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:262:10:262:16 | a.value | main.rs:259:28:259:37 | source(...) | main.rs:262:10:262:16 | a.value | $@ | main.rs:259:28:259:37 | source(...) | source(...) |
| main.rs:273:10:273:10 | c | main.rs:270:28:270:37 | source(...) | main.rs:273:10:273:10 | c | $@ | main.rs:270:28:270:37 | source(...) | source(...) | | main.rs:273:10:273:10 | c | main.rs:270:28:270:37 | source(...) | main.rs:273:10:273:10 | c | $@ | main.rs:270:28:270:37 | source(...) | source(...) |
| main.rs:277:10:277:10 | c | main.rs:275:28:275:37 | source(...) | main.rs:277:10:277:10 | c | $@ | main.rs:275:28:275:37 | source(...) | source(...) |
| main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) | | main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) |
| main.rs:307:10:307:10 | c | main.rs:305:28:305:37 | source(...) | main.rs:307:10:307:10 | c | $@ | main.rs:305:28:305:37 | source(...) | source(...) | | main.rs:307:10:307:10 | c | main.rs:305:28:305:37 | source(...) | main.rs:307:10:307:10 | c | $@ | main.rs:305:28:305:37 | source(...) | source(...) |
| main.rs:317:10:317:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:317:10:317:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) | | main.rs:317:10:317:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:317:10:317:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) |

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -24,11 +24,11 @@ struct MyStruct {
impl MyStruct { impl MyStruct {
fn set_data(&mut self, n: i64) { fn set_data(&mut self, n: i64) {
(*self).data = n // todo: implicit deref not yet supported self.data = n
} }
fn get_data(&self) -> i64 { fn get_data(&self) -> i64 {
(*self).data // todo: implicit deref not yet supported self.data
} }
} }
@@ -225,7 +225,7 @@ impl Add for MyInt {
impl MulAssign<MyInt> for MyInt { impl MulAssign<MyInt> for MyInt {
fn mul_assign(&mut self, rhs: MyInt) { fn mul_assign(&mut self, rhs: MyInt) {
(*self).value = rhs.value; // todo: implicit deref not yet supported self.value = rhs.value;
} }
} }
@@ -274,7 +274,7 @@ fn test_operator_overloading() {
let a = MyInt { value: source(28) }; let a = MyInt { value: source(28) };
let c = *a; let c = *a;
sink(c); // $ hasTaintFlow=28 MISSING: hasValueFlow=28 sink(c); // $ hasValueFlow=28
} }
trait MyTrait2 { trait MyTrait2 {

View File

@@ -59,6 +59,8 @@
| main.rs:212:13:212:34 | ...::new(...) | main.rs:205:5:208:5 | fn new | | main.rs:212:13:212:34 | ...::new(...) | main.rs:205:5:208:5 | fn new |
| main.rs:212:24:212:33 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:212:24:212:33 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:214:5:214:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:214:5:214:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:236:11:236:15 | * ... | {EXTERNAL LOCATION} | fn deref |
| main.rs:236:11:236:15 | * ... | {EXTERNAL LOCATION} | fn deref |
| main.rs:242:28:242:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:242:28:242:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:244:13:244:17 | ... + ... | main.rs:220:5:223:5 | fn add | | main.rs:244:13:244:17 | ... + ... | main.rs:220:5:223:5 | fn add |
| main.rs:245:5:245:17 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:245:5:245:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
@@ -75,6 +77,8 @@
| main.rs:266:5:266:10 | ... *= ... | main.rs:227:5:229:5 | fn mul_assign | | main.rs:266:5:266:10 | ... *= ... | main.rs:227:5:229:5 | fn mul_assign |
| main.rs:267:5:267:17 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:267:5:267:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:270:28:270:37 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:270:28:270:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:272:13:272:29 | * ... | {EXTERNAL LOCATION} | fn deref |
| main.rs:272:13:272:29 | * ... | {EXTERNAL LOCATION} | fn deref |
| main.rs:272:14:272:29 | ...::deref(...) | main.rs:235:5:237:5 | fn deref | | main.rs:272:14:272:29 | ...::deref(...) | main.rs:235:5:237:5 | fn deref |
| main.rs:273:5:273:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:273:5:273:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:275:28:275:37 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:275:28:275:37 | source(...) | main.rs:1:1:3:1 | fn source |

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -156,8 +156,6 @@ localStep
| main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | [SSA] i | | main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | [SSA] i |
| main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | i | | main.rs:115:9:115:9 | i | main.rs:115:9:115:9 | i |
| main.rs:115:13:115:31 | ...::new(...) | main.rs:115:9:115:9 | i | | main.rs:115:13:115:31 | ...::new(...) | main.rs:115:9:115:9 | i |
| main.rs:116:11:116:11 | [post] receiver for i | main.rs:116:11:116:11 | [post] i |
| main.rs:116:11:116:11 | i | main.rs:116:11:116:11 | receiver for i |
| main.rs:123:9:123:9 | [SSA] a | main.rs:124:10:124:10 | a | | main.rs:123:9:123:9 | [SSA] a | main.rs:124:10:124:10 | a |
| main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | [SSA] a | | main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | [SSA] a |
| main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | a | | main.rs:123:9:123:9 | a | main.rs:123:9:123:9 | a |
@@ -340,32 +338,22 @@ localStep
| main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | [SSA] s1 | | main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | [SSA] s1 |
| main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | s1 | | main.rs:278:9:278:10 | s1 | main.rs:278:9:278:10 | s1 |
| main.rs:278:14:278:29 | Some(...) | main.rs:278:9:278:10 | s1 | | main.rs:278:14:278:29 | Some(...) | main.rs:278:9:278:10 | s1 |
| main.rs:279:10:279:11 | [post] receiver for s1 | main.rs:279:10:279:11 | [post] s1 |
| main.rs:279:10:279:11 | s1 | main.rs:279:10:279:11 | receiver for s1 |
| main.rs:283:9:283:10 | [SSA] s1 | main.rs:284:10:284:11 | s1 | | main.rs:283:9:283:10 | [SSA] s1 | main.rs:284:10:284:11 | s1 |
| main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | [SSA] s1 | | main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | [SSA] s1 |
| main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | s1 | | main.rs:283:9:283:10 | s1 | main.rs:283:9:283:10 | s1 |
| main.rs:283:14:283:29 | Some(...) | main.rs:283:9:283:10 | s1 | | main.rs:283:14:283:29 | Some(...) | main.rs:283:9:283:10 | s1 |
| main.rs:284:10:284:11 | [post] receiver for s1 | main.rs:284:10:284:11 | [post] s1 |
| main.rs:284:10:284:11 | s1 | main.rs:284:10:284:11 | receiver for s1 |
| main.rs:286:9:286:10 | [SSA] s2 | main.rs:287:10:287:11 | s2 | | main.rs:286:9:286:10 | [SSA] s2 | main.rs:287:10:287:11 | s2 |
| main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | [SSA] s2 | | main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | [SSA] s2 |
| main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | s2 | | main.rs:286:9:286:10 | s2 | main.rs:286:9:286:10 | s2 |
| main.rs:286:14:286:20 | Some(...) | main.rs:286:9:286:10 | s2 | | main.rs:286:14:286:20 | Some(...) | main.rs:286:9:286:10 | s2 |
| main.rs:287:10:287:11 | [post] receiver for s2 | main.rs:287:10:287:11 | [post] s2 |
| main.rs:287:10:287:11 | s2 | main.rs:287:10:287:11 | receiver for s2 |
| main.rs:291:9:291:10 | [SSA] s1 | main.rs:292:10:292:11 | s1 | | main.rs:291:9:291:10 | [SSA] s1 | main.rs:292:10:292:11 | s1 |
| main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | [SSA] s1 | | main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | [SSA] s1 |
| main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | s1 | | main.rs:291:9:291:10 | s1 | main.rs:291:9:291:10 | s1 |
| main.rs:291:14:291:29 | Some(...) | main.rs:291:9:291:10 | s1 | | main.rs:291:14:291:29 | Some(...) | main.rs:291:9:291:10 | s1 |
| main.rs:292:10:292:11 | [post] receiver for s1 | main.rs:292:10:292:11 | [post] s1 |
| main.rs:292:10:292:11 | s1 | main.rs:292:10:292:11 | receiver for s1 |
| main.rs:294:9:294:10 | [SSA] s2 | main.rs:295:10:295:11 | s2 | | main.rs:294:9:294:10 | [SSA] s2 | main.rs:295:10:295:11 | s2 |
| main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | [SSA] s2 | | main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | [SSA] s2 |
| main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | s2 | | main.rs:294:9:294:10 | s2 | main.rs:294:9:294:10 | s2 |
| main.rs:294:14:294:17 | None | main.rs:294:9:294:10 | s2 | | main.rs:294:14:294:17 | None | main.rs:294:9:294:10 | s2 |
| main.rs:295:10:295:11 | [post] receiver for s2 | main.rs:295:10:295:11 | [post] s2 |
| main.rs:295:10:295:11 | s2 | main.rs:295:10:295:11 | receiver for s2 |
| main.rs:299:9:299:10 | [SSA] s1 | main.rs:301:14:301:15 | s1 | | main.rs:299:9:299:10 | [SSA] s1 | main.rs:301:14:301:15 | s1 |
| main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | [SSA] s1 | | main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | [SSA] s1 |
| main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | s1 | | main.rs:299:9:299:10 | s1 | main.rs:299:9:299:10 | s1 |
@@ -387,20 +375,12 @@ localStep
| main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | [SSA] o1a | | main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | [SSA] o1a |
| main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | o1a | | main.rs:309:9:309:11 | o1a | main.rs:309:9:309:11 | o1a |
| main.rs:309:28:309:29 | [post] r1 | main.rs:310:28:310:29 | r1 | | main.rs:309:28:309:29 | [post] r1 | main.rs:310:28:310:29 | r1 |
| main.rs:309:28:309:29 | [post] receiver for r1 | main.rs:309:28:309:29 | [post] r1 |
| main.rs:309:28:309:29 | r1 | main.rs:309:28:309:29 | receiver for r1 |
| main.rs:309:28:309:29 | r1 | main.rs:310:28:310:29 | r1 | | main.rs:309:28:309:29 | r1 | main.rs:310:28:310:29 | r1 |
| main.rs:309:28:309:34 | r1.ok() | main.rs:309:9:309:11 | o1a | | main.rs:309:28:309:34 | r1.ok() | main.rs:309:9:309:11 | o1a |
| main.rs:310:9:310:11 | [SSA] o1b | main.rs:312:10:312:12 | o1b | | main.rs:310:9:310:11 | [SSA] o1b | main.rs:312:10:312:12 | o1b |
| main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | [SSA] o1b | | main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | [SSA] o1b |
| main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | o1b | | main.rs:310:9:310:11 | o1b | main.rs:310:9:310:11 | o1b |
| main.rs:310:28:310:29 | [post] receiver for r1 | main.rs:310:28:310:29 | [post] r1 |
| main.rs:310:28:310:29 | r1 | main.rs:310:28:310:29 | receiver for r1 |
| main.rs:310:28:310:35 | r1.err() | main.rs:310:9:310:11 | o1b | | main.rs:310:28:310:35 | r1.err() | main.rs:310:9:310:11 | o1b |
| main.rs:311:10:311:12 | [post] receiver for o1a | main.rs:311:10:311:12 | [post] o1a |
| main.rs:311:10:311:12 | o1a | main.rs:311:10:311:12 | receiver for o1a |
| main.rs:312:10:312:12 | [post] receiver for o1b | main.rs:312:10:312:12 | [post] o1b |
| main.rs:312:10:312:12 | o1b | main.rs:312:10:312:12 | receiver for o1b |
| main.rs:314:9:314:10 | [SSA] r2 | main.rs:315:28:315:29 | r2 | | main.rs:314:9:314:10 | [SSA] r2 | main.rs:315:28:315:29 | r2 |
| main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | [SSA] r2 | | main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | [SSA] r2 |
| main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | r2 | | main.rs:314:9:314:10 | r2 | main.rs:314:9:314:10 | r2 |
@@ -409,20 +389,12 @@ localStep
| main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | [SSA] o2a | | main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | [SSA] o2a |
| main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | o2a | | main.rs:315:9:315:11 | o2a | main.rs:315:9:315:11 | o2a |
| main.rs:315:28:315:29 | [post] r2 | main.rs:316:28:316:29 | r2 | | main.rs:315:28:315:29 | [post] r2 | main.rs:316:28:316:29 | r2 |
| main.rs:315:28:315:29 | [post] receiver for r2 | main.rs:315:28:315:29 | [post] r2 |
| main.rs:315:28:315:29 | r2 | main.rs:315:28:315:29 | receiver for r2 |
| main.rs:315:28:315:29 | r2 | main.rs:316:28:316:29 | r2 | | main.rs:315:28:315:29 | r2 | main.rs:316:28:316:29 | r2 |
| main.rs:315:28:315:34 | r2.ok() | main.rs:315:9:315:11 | o2a | | main.rs:315:28:315:34 | r2.ok() | main.rs:315:9:315:11 | o2a |
| main.rs:316:9:316:11 | [SSA] o2b | main.rs:318:10:318:12 | o2b | | main.rs:316:9:316:11 | [SSA] o2b | main.rs:318:10:318:12 | o2b |
| main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | [SSA] o2b | | main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | [SSA] o2b |
| main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | o2b | | main.rs:316:9:316:11 | o2b | main.rs:316:9:316:11 | o2b |
| main.rs:316:28:316:29 | [post] receiver for r2 | main.rs:316:28:316:29 | [post] r2 |
| main.rs:316:28:316:29 | r2 | main.rs:316:28:316:29 | receiver for r2 |
| main.rs:316:28:316:35 | r2.err() | main.rs:316:9:316:11 | o2b | | main.rs:316:28:316:35 | r2.err() | main.rs:316:9:316:11 | o2b |
| main.rs:317:10:317:12 | [post] receiver for o2a | main.rs:317:10:317:12 | [post] o2a |
| main.rs:317:10:317:12 | o2a | main.rs:317:10:317:12 | receiver for o2a |
| main.rs:318:10:318:12 | [post] receiver for o2b | main.rs:318:10:318:12 | [post] o2b |
| main.rs:318:10:318:12 | o2b | main.rs:318:10:318:12 | receiver for o2b |
| main.rs:322:9:322:10 | [SSA] s1 | main.rs:325:14:325:15 | s1 | | main.rs:322:9:322:10 | [SSA] s1 | main.rs:325:14:325:15 | s1 |
| main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | [SSA] s1 | | main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | [SSA] s1 |
| main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | s1 | | main.rs:322:9:322:10 | s1 | main.rs:322:9:322:10 | s1 |
@@ -452,22 +424,14 @@ localStep
| main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | [SSA] s1 | | main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | [SSA] s1 |
| main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | s1 | | main.rs:335:9:335:10 | s1 | main.rs:335:9:335:10 | s1 |
| main.rs:335:32:335:45 | Ok(...) | main.rs:335:9:335:10 | s1 | | main.rs:335:32:335:45 | Ok(...) | main.rs:335:9:335:10 | s1 |
| main.rs:336:10:336:11 | [post] receiver for s1 | main.rs:336:10:336:11 | [post] s1 |
| main.rs:336:10:336:11 | [post] s1 | main.rs:337:10:337:11 | s1 | | main.rs:336:10:336:11 | [post] s1 | main.rs:337:10:337:11 | s1 |
| main.rs:336:10:336:11 | s1 | main.rs:336:10:336:11 | receiver for s1 |
| main.rs:336:10:336:11 | s1 | main.rs:337:10:337:11 | s1 | | main.rs:336:10:336:11 | s1 | main.rs:337:10:337:11 | s1 |
| main.rs:337:10:337:11 | [post] receiver for s1 | main.rs:337:10:337:11 | [post] s1 |
| main.rs:337:10:337:11 | s1 | main.rs:337:10:337:11 | receiver for s1 |
| main.rs:339:9:339:10 | [SSA] s2 | main.rs:340:10:340:11 | s2 | | main.rs:339:9:339:10 | [SSA] s2 | main.rs:340:10:340:11 | s2 |
| main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | [SSA] s2 | | main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | [SSA] s2 |
| main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | s2 | | main.rs:339:9:339:10 | s2 | main.rs:339:9:339:10 | s2 |
| main.rs:339:32:339:46 | Err(...) | main.rs:339:9:339:10 | s2 | | main.rs:339:32:339:46 | Err(...) | main.rs:339:9:339:10 | s2 |
| main.rs:340:10:340:11 | [post] receiver for s2 | main.rs:340:10:340:11 | [post] s2 |
| main.rs:340:10:340:11 | [post] s2 | main.rs:341:10:341:11 | s2 | | main.rs:340:10:340:11 | [post] s2 | main.rs:341:10:341:11 | s2 |
| main.rs:340:10:340:11 | s2 | main.rs:340:10:340:11 | receiver for s2 |
| main.rs:340:10:340:11 | s2 | main.rs:341:10:341:11 | s2 | | main.rs:340:10:340:11 | s2 | main.rs:341:10:341:11 | s2 |
| main.rs:341:10:341:11 | [post] receiver for s2 | main.rs:341:10:341:11 | [post] s2 |
| main.rs:341:10:341:11 | s2 | main.rs:341:10:341:11 | receiver for s2 |
| main.rs:350:9:350:10 | [SSA] s1 | main.rs:352:11:352:12 | s1 | | main.rs:350:9:350:10 | [SSA] s1 | main.rs:352:11:352:12 | s1 |
| main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | [SSA] s1 | | main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | [SSA] s1 |
| main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | s1 | | main.rs:350:9:350:10 | s1 | main.rs:350:9:350:10 | s1 |
@@ -704,8 +668,6 @@ localStep
| main.rs:478:39:478:72 | ...: Vec::<...> | main.rs:478:39:478:43 | names | | main.rs:478:39:478:72 | ...: Vec::<...> | main.rs:478:39:478:43 | names |
| main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | [SSA] default_name | | main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | [SSA] default_name |
| main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | default_name | | main.rs:479:9:479:20 | default_name | main.rs:479:9:479:20 | default_name |
| main.rs:479:24:479:33 | [post] receiver for source(...) | main.rs:479:24:479:33 | [post] source(...) |
| main.rs:479:24:479:33 | source(...) | main.rs:479:24:479:33 | receiver for source(...) |
| main.rs:479:24:479:45 | ... .to_string() | main.rs:479:9:479:20 | default_name | | main.rs:479:24:479:45 | ... .to_string() | main.rs:479:9:479:20 | default_name |
| main.rs:479:24:479:45 | ... .to_string() | main.rs:480:9:480:20 | SSA phi read(default_name) | | main.rs:479:24:479:45 | ... .to_string() | main.rs:480:9:480:20 | SSA phi read(default_name) |
| main.rs:480:5:486:5 | for ... in ... { ... } | main.rs:478:75:487:1 | { ... } | | main.rs:480:5:486:5 | for ... in ... { ... } | main.rs:478:75:487:1 | { ... } |
@@ -721,16 +683,10 @@ localStep
| main.rs:482:17:482:17 | [SSA] n | main.rs:483:18:483:18 | n | | main.rs:482:17:482:17 | [SSA] n | main.rs:483:18:483:18 | n |
| main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | [SSA] n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | [SSA] n |
| main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | n |
| main.rs:482:21:482:24 | [post] receiver for name | main.rs:482:21:482:24 | [post] name |
| main.rs:482:21:482:24 | name | main.rs:482:21:482:24 | receiver for name |
| main.rs:482:21:482:68 | name.unwrap_or_else(...) | main.rs:482:17:482:17 | n | | main.rs:482:21:482:68 | name.unwrap_or_else(...) | main.rs:482:17:482:17 | n |
| main.rs:482:41:482:67 | [post] default_name | main.rs:480:9:480:20 | SSA phi read(default_name) | | main.rs:482:41:482:67 | [post] default_name | main.rs:480:9:480:20 | SSA phi read(default_name) |
| main.rs:482:41:482:67 | closure self in \|...\| ... | main.rs:482:44:482:55 | this | | main.rs:482:41:482:67 | closure self in \|...\| ... | main.rs:482:44:482:55 | this |
| main.rs:482:41:482:67 | default_name | main.rs:480:9:480:20 | SSA phi read(default_name) | | main.rs:482:41:482:67 | default_name | main.rs:480:9:480:20 | SSA phi read(default_name) |
| main.rs:482:44:482:55 | [post] receiver for default_name | main.rs:482:44:482:55 | [post] default_name |
| main.rs:482:44:482:55 | default_name | main.rs:482:44:482:55 | receiver for default_name |
| main.rs:483:18:483:18 | [post] receiver for n | main.rs:483:18:483:18 | [post] n |
| main.rs:483:18:483:18 | n | main.rs:483:18:483:18 | receiver for n |
| main.rs:496:9:496:9 | [SSA] s | main.rs:497:10:497:10 | s | | main.rs:496:9:496:9 | [SSA] s | main.rs:497:10:497:10 | s |
| main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | [SSA] s | | main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | [SSA] s |
| main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | s | | main.rs:496:9:496:9 | s | main.rs:496:9:496:9 | s |
@@ -752,29 +708,19 @@ localStep
| main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | [SSA] b | | main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | [SSA] b |
| main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | b | | main.rs:506:9:506:9 | b | main.rs:506:9:506:9 | b |
| main.rs:506:13:506:13 | [post] a | main.rs:510:10:510:10 | a | | main.rs:506:13:506:13 | [post] a | main.rs:510:10:510:10 | a |
| main.rs:506:13:506:13 | [post] receiver for a | main.rs:506:13:506:13 | [post] a |
| main.rs:506:13:506:13 | a | main.rs:506:13:506:13 | receiver for a |
| main.rs:506:13:506:13 | a | main.rs:510:10:510:10 | a | | main.rs:506:13:506:13 | a | main.rs:510:10:510:10 | a |
| main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b | | main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b |
| main.rs:507:9:507:9 | [SSA] c | main.rs:512:10:512:10 | c | | main.rs:507:9:507:9 | [SSA] c | main.rs:512:10:512:10 | c |
| main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | [SSA] c | | main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | [SSA] c |
| main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | c | | main.rs:507:9:507:9 | c | main.rs:507:9:507:9 | c |
| main.rs:507:13:507:13 | [post] b | main.rs:508:18:508:18 | b | | main.rs:507:13:507:13 | [post] b | main.rs:508:18:508:18 | b |
| main.rs:507:13:507:13 | [post] receiver for b | main.rs:507:13:507:13 | [post] b |
| main.rs:507:13:507:13 | b | main.rs:507:13:507:13 | receiver for b |
| main.rs:507:13:507:13 | b | main.rs:508:18:508:18 | b | | main.rs:507:13:507:13 | b | main.rs:508:18:508:18 | b |
| main.rs:507:13:507:28 | [post] receiver for b.parse() | main.rs:507:13:507:28 | [post] b.parse() |
| main.rs:507:13:507:28 | b.parse() | main.rs:507:13:507:28 | receiver for b.parse() |
| main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c | | main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c |
| main.rs:508:9:508:9 | [SSA] d | main.rs:513:10:513:10 | d | | main.rs:508:9:508:9 | [SSA] d | main.rs:513:10:513:10 | d |
| main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | [SSA] d | | main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | [SSA] d |
| main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | d | | main.rs:508:9:508:9 | d | main.rs:508:9:508:9 | d |
| main.rs:508:18:508:18 | [post] b | main.rs:511:17:511:17 | b | | main.rs:508:18:508:18 | [post] b | main.rs:511:17:511:17 | b |
| main.rs:508:18:508:18 | [post] receiver for b | main.rs:508:18:508:18 | [post] b |
| main.rs:508:18:508:18 | b | main.rs:508:18:508:18 | receiver for b |
| main.rs:508:18:508:18 | b | main.rs:511:17:511:17 | b | | main.rs:508:18:508:18 | b | main.rs:511:17:511:17 | b |
| main.rs:508:18:508:26 | [post] receiver for b.parse() | main.rs:508:18:508:26 | [post] b.parse() |
| main.rs:508:18:508:26 | b.parse() | main.rs:508:18:508:26 | receiver for b.parse() |
| main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d | | main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d |
| main.rs:517:9:517:10 | [SSA] vs | main.rs:519:10:519:11 | vs | | main.rs:517:9:517:10 | [SSA] vs | main.rs:519:10:519:11 | vs |
| main.rs:517:9:517:10 | vs | main.rs:517:9:517:10 | [SSA] vs | | main.rs:517:9:517:10 | vs | main.rs:517:9:517:10 | [SSA] vs |
@@ -782,26 +728,10 @@ localStep
| main.rs:517:14:517:34 | [...] | main.rs:517:9:517:10 | vs | | main.rs:517:14:517:34 | [...] | main.rs:517:9:517:10 | vs |
| main.rs:519:10:519:11 | [post] vs | main.rs:520:11:520:12 | vs | | main.rs:519:10:519:11 | [post] vs | main.rs:520:11:520:12 | vs |
| main.rs:519:10:519:11 | vs | main.rs:520:11:520:12 | vs | | main.rs:519:10:519:11 | vs | main.rs:520:11:520:12 | vs |
| main.rs:520:11:520:12 | [post] receiver for vs | main.rs:520:11:520:12 | [post] vs |
| main.rs:520:11:520:12 | [post] vs | main.rs:521:11:521:12 | vs | | main.rs:520:11:520:12 | [post] vs | main.rs:521:11:521:12 | vs |
| main.rs:520:11:520:12 | vs | main.rs:520:11:520:12 | receiver for vs |
| main.rs:520:11:520:12 | vs | main.rs:521:11:521:12 | vs | | main.rs:520:11:520:12 | vs | main.rs:521:11:521:12 | vs |
| main.rs:520:11:520:19 | [post] receiver for vs.iter() | main.rs:520:11:520:19 | [post] vs.iter() |
| main.rs:520:11:520:19 | vs.iter() | main.rs:520:11:520:19 | receiver for vs.iter() |
| main.rs:520:11:520:26 | ... .next() | main.rs:520:11:520:26 | receiver for ... .next() |
| main.rs:520:11:520:26 | [post] receiver for ... .next() | main.rs:520:11:520:26 | [post] ... .next() |
| main.rs:520:11:520:35 | ... .unwrap() | main.rs:520:11:520:35 | receiver for ... .unwrap() |
| main.rs:520:11:520:35 | [post] receiver for ... .unwrap() | main.rs:520:11:520:35 | [post] ... .unwrap() |
| main.rs:521:11:521:12 | [post] receiver for vs | main.rs:521:11:521:12 | [post] vs |
| main.rs:521:11:521:12 | [post] vs | main.rs:523:14:523:15 | vs | | main.rs:521:11:521:12 | [post] vs | main.rs:523:14:523:15 | vs |
| main.rs:521:11:521:12 | vs | main.rs:521:11:521:12 | receiver for vs |
| main.rs:521:11:521:12 | vs | main.rs:523:14:523:15 | vs | | main.rs:521:11:521:12 | vs | main.rs:523:14:523:15 | vs |
| main.rs:521:11:521:19 | [post] receiver for vs.iter() | main.rs:521:11:521:19 | [post] vs.iter() |
| main.rs:521:11:521:19 | vs.iter() | main.rs:521:11:521:19 | receiver for vs.iter() |
| main.rs:521:11:521:26 | ... .nth(...) | main.rs:521:11:521:26 | receiver for ... .nth(...) |
| main.rs:521:11:521:26 | [post] receiver for ... .nth(...) | main.rs:521:11:521:26 | [post] ... .nth(...) |
| main.rs:521:11:521:35 | ... .unwrap() | main.rs:521:11:521:35 | receiver for ... .unwrap() |
| main.rs:521:11:521:35 | [post] receiver for ... .unwrap() | main.rs:521:11:521:35 | [post] ... .unwrap() |
| main.rs:523:9:523:9 | [SSA] v | main.rs:524:14:524:14 | v | | main.rs:523:9:523:9 | [SSA] v | main.rs:524:14:524:14 | v |
| main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | [SSA] v | | main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | [SSA] v |
| main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | v | | main.rs:523:9:523:9 | v | main.rs:523:9:523:9 | v |
@@ -809,52 +739,32 @@ localStep
| main.rs:526:10:526:10 | [SSA] v | main.rs:527:14:527:14 | v | | main.rs:526:10:526:10 | [SSA] v | main.rs:527:14:527:14 | v |
| main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | [SSA] v | | main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | [SSA] v |
| main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | v | | main.rs:526:10:526:10 | v | main.rs:526:10:526:10 | v |
| main.rs:526:15:526:16 | [post] receiver for vs | main.rs:526:15:526:16 | [post] vs |
| main.rs:526:15:526:16 | [post] vs | main.rs:530:26:530:27 | vs | | main.rs:526:15:526:16 | [post] vs | main.rs:530:26:530:27 | vs |
| main.rs:526:15:526:16 | vs | main.rs:526:15:526:16 | receiver for vs |
| main.rs:526:15:526:16 | vs | main.rs:530:26:530:27 | vs | | main.rs:526:15:526:16 | vs | main.rs:530:26:530:27 | vs |
| main.rs:530:9:530:11 | [SSA] vs2 | main.rs:531:15:531:17 | vs2 | | main.rs:530:9:530:11 | [SSA] vs2 | main.rs:531:15:531:17 | vs2 |
| main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | [SSA] vs2 | | main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | [SSA] vs2 |
| main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | vs2 | | main.rs:530:9:530:11 | vs2 | main.rs:530:9:530:11 | vs2 |
| main.rs:530:26:530:27 | [post] receiver for vs | main.rs:530:26:530:27 | [post] vs |
| main.rs:530:26:530:27 | [post] vs | main.rs:535:5:535:6 | vs | | main.rs:530:26:530:27 | [post] vs | main.rs:535:5:535:6 | vs |
| main.rs:530:26:530:27 | vs | main.rs:530:26:530:27 | receiver for vs |
| main.rs:530:26:530:27 | vs | main.rs:535:5:535:6 | vs | | main.rs:530:26:530:27 | vs | main.rs:535:5:535:6 | vs |
| main.rs:530:26:530:34 | [post] receiver for vs.iter() | main.rs:530:26:530:34 | [post] vs.iter() |
| main.rs:530:26:530:34 | vs.iter() | main.rs:530:26:530:34 | receiver for vs.iter() |
| main.rs:530:26:530:44 | ... .collect() | main.rs:530:9:530:11 | vs2 | | main.rs:530:26:530:44 | ... .collect() | main.rs:530:9:530:11 | vs2 |
| main.rs:531:10:531:10 | [SSA] v | main.rs:532:14:532:14 | v | | main.rs:531:10:531:10 | [SSA] v | main.rs:532:14:532:14 | v |
| main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | [SSA] v | | main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | [SSA] v |
| main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | v | | main.rs:531:10:531:10 | v | main.rs:531:10:531:10 | v |
| main.rs:535:5:535:6 | [post] receiver for vs | main.rs:535:5:535:6 | [post] vs |
| main.rs:535:5:535:6 | [post] vs | main.rs:536:5:536:6 | vs | | main.rs:535:5:535:6 | [post] vs | main.rs:536:5:536:6 | vs |
| main.rs:535:5:535:6 | vs | main.rs:535:5:535:6 | receiver for vs |
| main.rs:535:5:535:6 | vs | main.rs:536:5:536:6 | vs | | main.rs:535:5:535:6 | vs | main.rs:536:5:536:6 | vs |
| main.rs:535:5:535:13 | [post] receiver for vs.iter() | main.rs:535:5:535:13 | [post] vs.iter() |
| main.rs:535:5:535:13 | vs.iter() | main.rs:535:5:535:13 | receiver for vs.iter() |
| main.rs:535:20:535:20 | ... | main.rs:535:20:535:20 | x | | main.rs:535:20:535:20 | ... | main.rs:535:20:535:20 | x |
| main.rs:535:20:535:20 | [SSA] x | main.rs:535:29:535:29 | x | | main.rs:535:20:535:20 | [SSA] x | main.rs:535:29:535:29 | x |
| main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | [SSA] x | | main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | [SSA] x |
| main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | x | | main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | x |
| main.rs:535:29:535:29 | [post] receiver for x | main.rs:535:29:535:29 | [post] x |
| main.rs:535:29:535:29 | x | main.rs:535:29:535:29 | receiver for x |
| main.rs:536:5:536:6 | [post] receiver for vs | main.rs:536:5:536:6 | [post] vs |
| main.rs:536:5:536:6 | [post] vs | main.rs:538:14:538:15 | vs | | main.rs:536:5:536:6 | [post] vs | main.rs:538:14:538:15 | vs |
| main.rs:536:5:536:6 | vs | main.rs:536:5:536:6 | receiver for vs |
| main.rs:536:5:536:6 | vs | main.rs:538:14:538:15 | vs | | main.rs:536:5:536:6 | vs | main.rs:538:14:538:15 | vs |
| main.rs:536:5:536:13 | [post] receiver for vs.iter() | main.rs:536:5:536:13 | [post] vs.iter() |
| main.rs:536:5:536:13 | vs.iter() | main.rs:536:5:536:13 | receiver for vs.iter() |
| main.rs:536:25:536:25 | ... | main.rs:536:25:536:25 | x | | main.rs:536:25:536:25 | ... | main.rs:536:25:536:25 | x |
| main.rs:536:25:536:25 | [SSA] x | main.rs:536:34:536:34 | x | | main.rs:536:25:536:25 | [SSA] x | main.rs:536:34:536:34 | x |
| main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | [SSA] x | | main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | [SSA] x |
| main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | x | | main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | x |
| main.rs:536:34:536:34 | [post] receiver for x | main.rs:536:34:536:34 | [post] x |
| main.rs:536:34:536:34 | x | main.rs:536:34:536:34 | receiver for x |
| main.rs:538:9:538:9 | [SSA] v | main.rs:539:14:539:14 | v | | main.rs:538:9:538:9 | [SSA] v | main.rs:539:14:539:14 | v |
| main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | [SSA] v | | main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | [SSA] v |
| main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | v | | main.rs:538:9:538:9 | v | main.rs:538:9:538:9 | v |
| main.rs:538:14:538:15 | [post] receiver for vs | main.rs:538:14:538:15 | [post] vs |
| main.rs:538:14:538:15 | vs | main.rs:538:14:538:15 | receiver for vs |
| main.rs:542:9:542:18 | mut vs_mut | main.rs:542:13:542:18 | vs_mut | | main.rs:542:9:542:18 | mut vs_mut | main.rs:542:13:542:18 | vs_mut |
| main.rs:542:13:542:18 | [SSA] vs_mut | main.rs:544:10:544:15 | vs_mut | | main.rs:542:13:542:18 | [SSA] vs_mut | main.rs:544:10:544:15 | vs_mut |
| main.rs:542:13:542:18 | vs_mut | main.rs:542:13:542:18 | [SSA] vs_mut | | main.rs:542:13:542:18 | vs_mut | main.rs:542:13:542:18 | [SSA] vs_mut |
@@ -865,35 +775,17 @@ localStep
| main.rs:544:10:544:15 | vs_mut | main.rs:545:11:545:16 | vs_mut | | main.rs:544:10:544:15 | vs_mut | main.rs:545:11:545:16 | vs_mut |
| main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut | | main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
| main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | vs_mut | | main.rs:545:11:545:16 | [SSA] vs_mut | main.rs:546:11:546:16 | vs_mut |
| main.rs:545:11:545:16 | [post] receiver for vs_mut | main.rs:545:11:545:16 | [post] vs_mut |
| main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut | | main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
| main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | vs_mut | | main.rs:545:11:545:16 | [post] vs_mut | main.rs:546:11:546:16 | vs_mut |
| main.rs:545:11:545:16 | vs_mut | main.rs:545:11:545:16 | receiver for vs_mut |
| main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut | | main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | [SSA] vs_mut |
| main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | vs_mut | | main.rs:545:11:545:16 | vs_mut | main.rs:546:11:546:16 | vs_mut |
| main.rs:545:11:545:23 | [post] receiver for vs_mut.iter() | main.rs:545:11:545:23 | [post] vs_mut.iter() |
| main.rs:545:11:545:23 | vs_mut.iter() | main.rs:545:11:545:23 | receiver for vs_mut.iter() |
| main.rs:545:11:545:30 | ... .next() | main.rs:545:11:545:30 | receiver for ... .next() |
| main.rs:545:11:545:30 | [post] receiver for ... .next() | main.rs:545:11:545:30 | [post] ... .next() |
| main.rs:545:11:545:39 | ... .unwrap() | main.rs:545:11:545:39 | receiver for ... .unwrap() |
| main.rs:545:11:545:39 | [post] receiver for ... .unwrap() | main.rs:545:11:545:39 | [post] ... .unwrap() |
| main.rs:546:11:546:16 | [SSA] vs_mut | main.rs:548:19:548:24 | vs_mut | | main.rs:546:11:546:16 | [SSA] vs_mut | main.rs:548:19:548:24 | vs_mut |
| main.rs:546:11:546:16 | [post] receiver for vs_mut | main.rs:546:11:546:16 | [post] vs_mut |
| main.rs:546:11:546:16 | [post] vs_mut | main.rs:548:19:548:24 | vs_mut | | main.rs:546:11:546:16 | [post] vs_mut | main.rs:548:19:548:24 | vs_mut |
| main.rs:546:11:546:16 | vs_mut | main.rs:546:11:546:16 | receiver for vs_mut |
| main.rs:546:11:546:16 | vs_mut | main.rs:548:19:548:24 | vs_mut | | main.rs:546:11:546:16 | vs_mut | main.rs:548:19:548:24 | vs_mut |
| main.rs:546:11:546:23 | [post] receiver for vs_mut.iter() | main.rs:546:11:546:23 | [post] vs_mut.iter() |
| main.rs:546:11:546:23 | vs_mut.iter() | main.rs:546:11:546:23 | receiver for vs_mut.iter() |
| main.rs:546:11:546:30 | ... .nth(...) | main.rs:546:11:546:30 | receiver for ... .nth(...) |
| main.rs:546:11:546:30 | [post] receiver for ... .nth(...) | main.rs:546:11:546:30 | [post] ... .nth(...) |
| main.rs:546:11:546:39 | ... .unwrap() | main.rs:546:11:546:39 | receiver for ... .unwrap() |
| main.rs:546:11:546:39 | [post] receiver for ... .unwrap() | main.rs:546:11:546:39 | [post] ... .unwrap() |
| main.rs:548:5:550:5 | for ... in ... { ... } | main.rs:516:16:551:1 | { ... } | | main.rs:548:5:550:5 | for ... in ... { ... } | main.rs:516:16:551:1 | { ... } |
| main.rs:548:14:548:14 | [SSA] v | main.rs:549:14:549:14 | v | | main.rs:548:14:548:14 | [SSA] v | main.rs:549:14:549:14 | v |
| main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | [SSA] v | | main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | [SSA] v |
| main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | v | | main.rs:548:14:548:14 | v | main.rs:548:14:548:14 | v |
| main.rs:548:19:548:24 | [post] receiver for vs_mut | main.rs:548:19:548:24 | [post] vs_mut |
| main.rs:548:19:548:24 | vs_mut | main.rs:548:19:548:24 | receiver for vs_mut |
| main.rs:554:9:554:9 | [SSA] a | main.rs:559:10:559:10 | a | | main.rs:554:9:554:9 | [SSA] a | main.rs:559:10:559:10 | a |
| main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | [SSA] a | | main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | [SSA] a |
| main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | a | | main.rs:554:9:554:9 | a | main.rs:554:9:554:9 | a |
@@ -912,8 +804,6 @@ localStep
| main.rs:557:17:557:18 | &c | main.rs:557:9:557:13 | c_ref | | main.rs:557:17:557:18 | &c | main.rs:557:9:557:13 | c_ref |
| main.rs:561:14:561:18 | [post] c_ref | main.rs:562:11:562:15 | c_ref | | main.rs:561:14:561:18 | [post] c_ref | main.rs:562:11:562:15 | c_ref |
| main.rs:561:14:561:18 | c_ref | main.rs:562:11:562:15 | c_ref | | main.rs:561:14:561:18 | c_ref | main.rs:562:11:562:15 | c_ref |
| main.rs:562:11:562:15 | [post] receiver for c_ref | main.rs:562:11:562:15 | [post] c_ref |
| main.rs:562:11:562:15 | c_ref | main.rs:562:11:562:15 | receiver for c_ref |
| main.rs:566:9:566:9 | [SSA] a | main.rs:568:10:568:10 | a | | main.rs:566:9:566:9 | [SSA] a | main.rs:568:10:568:10 | a |
| main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | [SSA] a | | main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | [SSA] a |
| main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | a | | main.rs:566:9:566:9 | a | main.rs:566:9:566:9 | a |
@@ -921,8 +811,6 @@ localStep
| main.rs:568:10:568:10 | [post] a | main.rs:569:10:569:10 | a | | main.rs:568:10:568:10 | [post] a | main.rs:569:10:569:10 | a |
| main.rs:568:10:568:10 | a | main.rs:569:10:569:10 | a | | main.rs:568:10:568:10 | a | main.rs:569:10:569:10 | a |
| main.rs:569:10:569:10 | [post] a | main.rs:570:20:570:20 | a | | main.rs:569:10:569:10 | [post] a | main.rs:570:20:570:20 | a |
| main.rs:569:10:569:10 | [post] receiver for a | main.rs:569:10:569:10 | [post] a |
| main.rs:569:10:569:10 | a | main.rs:569:10:569:10 | receiver for a |
| main.rs:569:10:569:10 | a | main.rs:570:20:570:20 | a | | main.rs:569:10:569:10 | a | main.rs:570:20:570:20 | a |
| main.rs:572:9:572:9 | [SSA] b | main.rs:574:10:574:10 | b | | main.rs:572:9:572:9 | [SSA] b | main.rs:574:10:574:10 | b |
| main.rs:572:9:572:9 | b | main.rs:572:9:572:9 | [SSA] b | | main.rs:572:9:572:9 | b | main.rs:572:9:572:9 | [SSA] b |
@@ -931,16 +819,14 @@ localStep
| main.rs:574:10:574:10 | [post] b | main.rs:575:10:575:10 | b | | main.rs:574:10:574:10 | [post] b | main.rs:575:10:575:10 | b |
| main.rs:574:10:574:10 | b | main.rs:575:10:575:10 | b | | main.rs:574:10:574:10 | b | main.rs:575:10:575:10 | b |
| main.rs:575:10:575:10 | [post] b | main.rs:576:20:576:20 | b | | main.rs:575:10:575:10 | [post] b | main.rs:576:20:576:20 | b |
| main.rs:575:10:575:10 | [post] receiver for b | main.rs:575:10:575:10 | [post] b |
| main.rs:575:10:575:10 | b | main.rs:575:10:575:10 | receiver for b |
| main.rs:575:10:575:10 | b | main.rs:576:20:576:20 | b | | main.rs:575:10:575:10 | b | main.rs:576:20:576:20 | b |
| main.rs:604:13:604:33 | result_questionmark(...) | main.rs:604:9:604:9 | _ | | main.rs:604:13:604:33 | result_questionmark(...) | main.rs:604:9:604:9 | _ |
| main.rs:616:36:616:39 | ...::new(...) | main.rs:616:36:616:41 | MacroExpr | | main.rs:616:36:616:39 | ...::new(...) | main.rs:616:36:616:41 | MacroExpr |
| main.rs:616:36:616:41 | [post] MacroExpr | main.rs:616:36:616:39 | [post] ...::new(...) | | main.rs:616:36:616:41 | [post] MacroExpr | main.rs:616:36:616:39 | [post] ...::new(...) |
readStep readStep
| main.rs:50:9:50:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:50:14:50:14 | _ | | main.rs:50:9:50:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:50:14:50:14 | _ |
| main.rs:116:11:116:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | [post] i | | main.rs:116:10:116:11 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:116:10:116:11 | * ... |
| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:10:116:11 | * ... | | main.rs:116:11:116:11 | [post] i [borrowed] | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | [post] i |
| main.rs:124:10:124:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:124:10:124:12 | a.0 | | main.rs:124:10:124:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:124:10:124:12 | a.0 |
| main.rs:125:10:125:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:125:10:125:12 | a.1 | | main.rs:125:10:125:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:125:10:125:12 | a.1 |
| main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:130:10:130:11 | a0 | | main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:130:10:130:11 | a0 |
@@ -1018,53 +904,62 @@ readStep
| main.rs:418:28:418:43 | D {...} | main.rs:385:9:385:20 | D | main.rs:418:41:418:41 | n | | main.rs:418:28:418:43 | D {...} | main.rs:385:9:385:20 | D | main.rs:418:41:418:41 | n |
| main.rs:421:9:421:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:421:22:421:22 | n | | 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: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:17 | arr1 | file://:0:0:0:0 | element | 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:17 | arr2 | file://:0:0:0:0 | element | 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:17 | arr3 | file://:0:0:0:0 | element | 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: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: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: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: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: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:16 | mut_arr | file://:0:0:0:0 | element | 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:11 | mut_arr | file://:0:0:0:0 | element | 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:19 | mut_arr | file://:0:0:0:0 | element | 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:16 | mut_arr | file://:0:0:0:0 | element | main.rs:473:10:473:19 | mut_arr[0] |
| main.rs:479:24:479:33 | [post] receiver for source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | [post] source(...) | | 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.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 | | main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:480:16:480:19 | name |
| main.rs:480:25:480:29 | names | file://:0:0:0:0 | element | main.rs:480:9:480:20 | TuplePat | | main.rs:480:25:480:29 | names | file://:0:0:0:0 | element | main.rs:480:9:480:20 | TuplePat |
| main.rs:482:41:482:67 | [post] \|...\| ... | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | [post] default_name | | main.rs:482:41:482:67 | [post] \|...\| ... | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | [post] default_name |
| main.rs:482:44:482:55 | [post] receiver for default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | | main.rs:482:44:482:55 | [post] default_name [borrowed] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name |
| main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name | | main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name |
| main.rs:483:18:483:18 | [post] receiver for n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n | | 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] receiver for a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | | 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:11 | vs | file://:0:0:0:0 | element | main.rs:519:10:519:14 | vs[0] |
| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... | | 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] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() | | 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:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... | | main.rs:521:10:521:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... |
| main.rs:521:11:521:35 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() | | main.rs:521:11:521:35 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() |
| main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v | | main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v |
| main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v | | main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v |
| main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... | | main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... |
| main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v | | main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v |
| main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... | | main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... |
| main.rs:535:29:535:29 | [post] receiver for x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x | | main.rs:535:28:535:29 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... |
| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... | | main.rs:535:29:535:29 | [post] x [borrowed] | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x |
| main.rs:536:34:536:34 | [post] receiver for x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x | | main.rs:536:33:536:34 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... |
| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... | | 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: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:15 | vs_mut | file://:0:0:0:0 | element | main.rs:544:10:544:18 | vs_mut[0] |
| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... | | 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] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() | | 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:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... | | main.rs:546:10:546:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... |
| main.rs:546:11:546:39 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() | | main.rs:546:11:546:39 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() |
| main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v | | main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v |
| main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... | | main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... |
| main.rs:562:11:562:15 | [post] receiver for c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref | | main.rs:562:10:562:15 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... |
| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... | | main.rs:562:11:562:15 | [post] c_ref [borrowed] | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref |
storeStep storeStep
| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | receiver for i | | main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | i [borrowed] |
| main.rs:123:14:123:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:123:13:123:26 | TupleExpr | | main.rs:123:14:123:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:123:13:123:26 | TupleExpr |
| main.rs:123:25:123:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:123:13:123:26 | TupleExpr | | main.rs:123:25:123:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:123:13:123:26 | TupleExpr |
| main.rs:129:14:129:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:129:13:129:30 | TupleExpr | | main.rs:129:14:129:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:129:13:129:30 | TupleExpr |
@@ -1126,10 +1021,13 @@ storeStep
| main.rs:430:17:430:17 | 1 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | | main.rs:430:17:430:17 | 1 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
| main.rs:430:20:430:20 | 2 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | | main.rs:430:20:430:20 | 2 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
| main.rs:430:23:430:32 | source(...) | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | | main.rs:430:23:430:32 | source(...) | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] |
| main.rs:431:14:431:17 | arr1 | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | arr1 [borrowed] |
| main.rs:434:17:434:26 | source(...) | file://:0:0:0:0 | element | main.rs:434:16:434:31 | [...; 10] | | main.rs:434:17:434:26 | source(...) | file://:0:0:0:0 | element | main.rs:434:16:434:31 | [...; 10] |
| main.rs:435:14:435:17 | arr2 | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | arr2 [borrowed] |
| main.rs:438:17:438:17 | 1 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | | main.rs:438:17:438:17 | 1 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
| main.rs:438:20:438:20 | 2 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | | main.rs:438:20:438:20 | 2 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
| main.rs:438:23:438:23 | 3 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | | main.rs:438:23:438:23 | 3 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] |
| main.rs:439:14:439:17 | arr3 | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | arr3 [borrowed] |
| main.rs:444:17:444:17 | 1 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | | main.rs:444:17:444:17 | 1 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
| main.rs:444:20:444:20 | 2 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | | main.rs:444:20:444:20 | 2 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
| main.rs:444:23:444:32 | source(...) | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | | main.rs:444:23:444:32 | source(...) | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] |
@@ -1142,27 +1040,33 @@ storeStep
| main.rs:467:24:467:24 | 1 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | | main.rs:467:24:467:24 | 1 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
| main.rs:467:27:467:27 | 2 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | | main.rs:467:27:467:27 | 2 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] |
| main.rs:467:30:467:30 | 3 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | | 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 | element | main.rs:470:5:470:11 | [post] mut_arr | | main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | element | main.rs:470:5:470:11 | [post] mut_arr |
| main.rs:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | receiver for source(...) | | 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] |
| main.rs:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | source(...) [borrowed] |
| main.rs:482:41:482:67 | default_name | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | \|...\| ... | | main.rs:482:41:482:67 | default_name | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | \|...\| ... |
| main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | receiver for default_name | | main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [borrowed] |
| main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | receiver for n | | main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | n [borrowed] |
| main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | receiver for a | | main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | a [borrowed] |
| main.rs:517:15:517:24 | source(...) | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:15:517:24 | source(...) | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
| main.rs:517:27:517:27 | 2 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:27:517:27 | 2 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
| main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
| main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] |
| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | receiver for ... .unwrap() | | main.rs:519:10:519:11 | vs | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | vs [borrowed] |
| main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | receiver for ... .unwrap() | | main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | ... .unwrap() [borrowed] |
| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | receiver for x | | main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | ... .unwrap() [borrowed] |
| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | receiver for x | | main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | x [borrowed] |
| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | x [borrowed] |
| main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
| main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
| main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
| main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] |
| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | receiver for ... .unwrap() | | main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | vs_mut [borrowed] |
| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | receiver for ... .unwrap() | | main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | ... .unwrap() [borrowed] |
| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | ... .unwrap() [borrowed] |
| main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c | | main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c |
| main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b | | main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b |
| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | receiver for c_ref | | main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | c_ref [borrowed] |
| main.rs:583:27:583:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:583:22:583:28 | Some(...) | | main.rs:583:27:583:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:583:22:583:28 | Some(...) |

View File

@@ -1,14 +1,21 @@
models models
| 1 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value | | 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
| 2 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 2 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint |
| 3 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value | | 3 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 4 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 4 | Summary: <alloc::boxed::Box as core::ops::deref::Deref>::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value |
| 5 | Summary: <core::option::Option>::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | | 5 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
| 6 | Summary: <core::option::Option>::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 6 | Summary: <core::i64 as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 7 | Summary: <core::result::Result>::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | | 7 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 8 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 8 | Summary: <core::option::Option>::unwrap_or; Argument[0]; ReturnValue; value |
| 9 | Summary: <core::result::Result>::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | | 9 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 10 | Summary: <core::result::Result>::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | | 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 |
edges 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:24:10:24:10 | s | provenance | |
| main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | | | main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | |
@@ -34,10 +41,10 @@ edges
| main.rs:81:9:81:13 | mut l | main.rs:82:5:82:5 | l | provenance | | | main.rs:81:9:81:13 | mut l | main.rs:82:5:82:5 | l | provenance | |
| main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l | provenance | | | main.rs:81:17:81:25 | source(...) | main.rs:81:9:81:13 | mut l | provenance | |
| main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | | | main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | |
| main.rs:115:9:115:9 | i [&ref] | main.rs:116:11:116:11 | i [&ref] | 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(...) [&ref] | main.rs:115:9:115:9 | i [&ref] | 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(...) [&ref] | provenance | MaD:1 | | 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 [&ref] | main.rs:116:10:116:11 | * ... | provenance | | | main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:4 |
| main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | | | 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: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 | | | main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | |
@@ -117,45 +124,54 @@ edges
| main.rs:267:12:267:18 | Some(...) [Some] | main.rs:267:17:267:17 | n | provenance | | | main.rs:267:12:267:18 | Some(...) [Some] | main.rs:267:17:267:17 | n | provenance | |
| main.rs:267:17:267:17 | n | main.rs:269:18:269:18 | n | provenance | | | main.rs:267:17:267:17 | n | main.rs:269:18:269:18 | n | provenance | |
| main.rs:267:17:267:17 | n | main.rs:273:14:273:14 | n | provenance | | | main.rs:267:17:267:17 | n | main.rs:273:14:273:14 | n | provenance | |
| main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:2 | | main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:11 | s1 [Some] | provenance | |
| main.rs:278:14:278:29 | Some(...) [Some] | main.rs:278:9:278:10 | 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:278:19:278:28 | source(...) | main.rs:278:14:278:29 | Some(...) [Some] | provenance | |
| main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:4 | | main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:7 |
| 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: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:283:19:283:28 | source(...) | main.rs:283:14:283:29 | Some(...) [Some] | provenance | |
| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:3 | | main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:9 |
| main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:6 | | main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:8 |
| 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: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:291:19:291:28 | source(...) | main.rs:291:14:291:29 | Some(...) [Some] | provenance | |
| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:5 | | main.rs: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:299:9:299:10 | s1 [Some] | main.rs:301:14:301:15 | s1 [Some] | provenance | | | 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:14:299:29 | Some(...) [Some] | main.rs:299:9:299:10 | s1 [Some] | provenance | |
| main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | | | main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | |
| main.rs:301:9:301:10 | i1 | main.rs:302:10:302:11 | i1 | provenance | | | main.rs:301:9:301:10 | i1 | main.rs:302:10:302:11 | i1 | provenance | |
| main.rs:301:14:301:15 | s1 [Some] | main.rs:301:14:301:16 | TryExpr | provenance | | | main.rs:301:14:301:15 | s1 [Some] | main.rs:301:14:301:16 | TryExpr | provenance | |
| main.rs:301:14:301:16 | TryExpr | main.rs:301:9:301:10 | i1 | provenance | | | main.rs:301:14:301:16 | TryExpr | main.rs:301:9:301:10 | i1 | provenance | |
| main.rs:308:9:308:10 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:10 | | main.rs:308:9:308:10 | r1 [Ok] | main.rs:309:28:309:29 | r1 [Ok] | provenance | |
| main.rs:308:32:308:45 | Ok(...) [Ok] | main.rs:308:9:308:10 | r1 [Ok] | provenance | | | 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:308:35:308:44 | source(...) | main.rs:308:32:308:45 | Ok(...) [Ok] | provenance | |
| main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:2 | | main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311: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:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | | | main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | |
| main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:7 | | main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:7 |
| 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: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:314:36:314:45 | source(...) | main.rs:314:32:314:46 | Err(...) [Err] | provenance | |
| main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:2 | | main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318: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:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | | | 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:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | | | main.rs:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | |
| main.rs:322:32:322:45 | Ok(...) [Ok] | main.rs:322:9:322:10 | s1 [Ok] | provenance | | | 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 | | | main.rs:322:35:322:44 | source(...) | main.rs:322:32:322:45 | Ok(...) [Ok] | provenance | |
| main.rs:325:9:325:10 | i1 | main.rs:327:10:327:11 | i1 | provenance | | | main.rs:325:9:325:10 | i1 | main.rs:327:10:327:11 | i1 | provenance | |
| main.rs:325:14:325:15 | s1 [Ok] | main.rs:325:14:325:16 | TryExpr | provenance | | | main.rs:325:14:325:15 | s1 [Ok] | main.rs:325:14:325:16 | TryExpr | provenance | |
| main.rs:325:14:325:16 | TryExpr | main.rs:325:9:325:10 | i1 | provenance | | | main.rs:325:14:325:16 | TryExpr | main.rs:325:9:325:10 | i1 | provenance | |
| main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:8 | | main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:11 | s1 [Ok] | provenance | |
| main.rs:335:32:335:45 | Ok(...) [Ok] | main.rs:335:9:335:10 | 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:335:35:335:44 | source(...) | main.rs:335:32:335:45 | Ok(...) [Ok] | provenance | |
| main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:9 | | main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:13 |
| 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: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: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:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | | | 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: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 | | | main.rs:350:29:350:38 | source(...) | main.rs:350:14:350:39 | ...::A(...) [A] | provenance | |
@@ -236,8 +252,22 @@ edges
| 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 | |
| main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | | | main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | |
| main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | | | main.rs: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 | |
| main.rs:505:9:505:9 | a | main.rs:510:10:510:10 | a | provenance | | | main.rs:505:9:505:9 | a | main.rs:510:10:510:10 | a | provenance | |
| main.rs:505:13:505:22 | source(...) | main.rs:505:9:505:9 | a | provenance | | | main.rs:505:13:505:22 | source(...) | main.rs:505:9:505:9 | a | provenance | |
| main.rs:506:9:506:9 | b | main.rs:507:13:507:13 | b | provenance | |
| main.rs:506:9:506:9 | b | main.rs:508:18:508:18 | b | provenance | |
| main.rs:506:9:506:9 | b | main.rs:511:17:511:17 | b | provenance | |
| 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: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: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: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: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:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | |
@@ -251,12 +281,23 @@ edges
| 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 | |
| main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | | | main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | |
| main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | | | main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | |
| main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | |
| main.rs:555:13:555:22 | source(...) | main.rs:555:9:555:9 | b | provenance | |
| main.rs:556:9:556:9 | c | main.rs:557:18:557:18 | c | provenance | | | main.rs:556:9:556:9 | c | main.rs:557:18:557:18 | c | provenance | |
| main.rs:556:13:556:22 | source(...) | main.rs:556:9:556:9 | c | provenance | | | main.rs:556:13:556:22 | source(...) | main.rs:556:9:556:9 | c | provenance | |
| main.rs:557:9:557:13 | c_ref [&ref] | main.rs:561:14:561:18 | c_ref | provenance | |
| main.rs:557:9:557:13 | c_ref [&ref] | main.rs:562:11:562:15 | c_ref [&ref] | provenance | | | main.rs:557:9:557:13 | c_ref [&ref] | main.rs:562:11:562:15 | c_ref [&ref] | provenance | |
| main.rs:557:17:557:18 | &c [&ref] | main.rs:557:9:557:13 | c_ref [&ref] | provenance | | | main.rs:557:17:557:18 | &c [&ref] | main.rs:557:9:557:13 | c_ref [&ref] | provenance | |
| main.rs:557:18:557:18 | c | main.rs:557:17:557:18 | &c [&ref] | provenance | | | main.rs:557:18:557:18 | c | main.rs:557:17:557:18 | &c [&ref] | provenance | |
| main.rs:562:11:562:15 | c_ref [&ref] | main.rs:562:10:562:15 | * ... | provenance | | | main.rs:560:15:560:15 | b | main.rs:560:14:560:15 | &b | provenance | |
| main.rs:562:11:562:15 | c_ref [&ref] | main.rs:562:10:562:15 | * ... | provenance | MaD:1 |
| main.rs:566:9:566:9 | a | main.rs:568:10:568:17 | a as i64 | provenance | |
| main.rs:566:18:566:27 | source(...) | main.rs:566:9:566:9 | a | provenance | |
| main.rs:572:9:572:9 | b | main.rs:574:10:574:17 | b as i64 | provenance | |
| main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | |
| main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | |
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:3 |
| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:6 |
nodes nodes
| main.rs:19:10:19:18 | source(...) | semmle.label | source(...) | | main.rs:19:10:19:18 | source(...) | semmle.label | source(...) |
| main.rs:23:9:23:9 | s | semmle.label | s | | main.rs:23:9:23:9 | s | semmle.label | s |
@@ -290,11 +331,11 @@ nodes
| main.rs:81:17:81:25 | source(...) | semmle.label | source(...) | | main.rs:81:17:81:25 | source(...) | semmle.label | source(...) |
| main.rs:82:5:82:5 | l | semmle.label | l | | main.rs:82:5:82:5 | l | semmle.label | l |
| main.rs:83:10:83:10 | l | semmle.label | l | | main.rs:83:10:83:10 | l | semmle.label | l |
| main.rs:115:9:115:9 | i [&ref] | semmle.label | i [&ref] | | main.rs:115:9:115:9 | i [Box(0)] | semmle.label | i [Box(0)] |
| main.rs:115:13:115:31 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | semmle.label | ...::new(...) [Box(0)] |
| main.rs:115:22:115:30 | source(...) | semmle.label | source(...) | | main.rs:115:22:115:30 | source(...) | semmle.label | source(...) |
| main.rs:116:10:116:11 | * ... | semmle.label | * ... | | main.rs:116:10:116:11 | * ... | semmle.label | * ... |
| main.rs:116:11:116:11 | i [&ref] | semmle.label | i [&ref] | | main.rs:116:11:116:11 | i [Box(0)] | semmle.label | i [Box(0)] |
| main.rs:123:9:123:9 | a [tuple.0] | semmle.label | a [tuple.0] | | main.rs:123:9:123:9 | a [tuple.0] | semmle.label | a [tuple.0] |
| main.rs:123:13:123:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | main.rs:123:13:123:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
| main.rs:123:14:123:22 | source(...) | semmle.label | source(...) | | main.rs:123:14:123:22 | source(...) | semmle.label | source(...) |
@@ -391,16 +432,19 @@ nodes
| main.rs:278:9:278:10 | s1 [Some] | semmle.label | s1 [Some] | | main.rs:278:9:278:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:278:14:278:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:278:14:278:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:278:19:278:28 | source(...) | semmle.label | source(...) | | main.rs:278:19:278:28 | source(...) | semmle.label | source(...) |
| main.rs:279:10:279:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:279:10:279:20 | s1.unwrap() | semmle.label | s1.unwrap() | | main.rs:279:10:279:20 | s1.unwrap() | semmle.label | s1.unwrap() |
| main.rs:283:9:283:10 | s1 [Some] | semmle.label | s1 [Some] | | main.rs:283:9:283:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:283:14:283:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:283:14:283:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:283:19:283:28 | source(...) | semmle.label | source(...) | | main.rs:283:19:283:28 | source(...) | semmle.label | source(...) |
| main.rs:284:10:284:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:284:10:284:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) | | main.rs:284:10:284:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
| main.rs:287:10:287:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) | | main.rs:287:10:287:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
| main.rs:287:23:287:32 | source(...) | semmle.label | source(...) | | main.rs:287:23:287:32 | source(...) | semmle.label | source(...) |
| main.rs:291:9:291:10 | s1 [Some] | semmle.label | s1 [Some] | | main.rs:291:9:291:10 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:291:14:291:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:291:14:291:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:291:19:291:28 | source(...) | semmle.label | source(...) | | main.rs:291:19:291:28 | source(...) | semmle.label | source(...) |
| main.rs:292:10:292:11 | s1 [Some] | semmle.label | s1 [Some] |
| main.rs:292:10:292:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) | | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
| main.rs:295:10:295:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) | | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
| main.rs:295:31:295:40 | source(...) | semmle.label | source(...) | | main.rs:295:31:295:40 | source(...) | semmle.label | source(...) |
@@ -415,13 +459,17 @@ nodes
| main.rs:308:32:308:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | | main.rs:308:32:308:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:308:35:308:44 | source(...) | semmle.label | source(...) | | main.rs:308:35:308:44 | source(...) | semmle.label | source(...) |
| main.rs:309:9:309:11 | o1a [Some] | semmle.label | o1a [Some] | | main.rs:309:9:309:11 | o1a [Some] | semmle.label | o1a [Some] |
| main.rs:309:28:309:29 | r1 [Ok] | semmle.label | r1 [Ok] |
| main.rs:309:28:309:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] | | main.rs:309:28:309:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] |
| main.rs:311:10:311:12 | o1a [Some] | semmle.label | o1a [Some] |
| main.rs:311:10:311:21 | o1a.unwrap() | semmle.label | o1a.unwrap() | | main.rs:311:10:311:21 | o1a.unwrap() | semmle.label | o1a.unwrap() |
| main.rs:314:9:314:10 | r2 [Err] | semmle.label | r2 [Err] | | main.rs:314:9:314:10 | r2 [Err] | semmle.label | r2 [Err] |
| main.rs:314:32:314:46 | Err(...) [Err] | semmle.label | Err(...) [Err] | | main.rs:314:32:314:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:314:36:314:45 | source(...) | semmle.label | source(...) | | main.rs:314:36:314:45 | source(...) | semmle.label | source(...) |
| main.rs:316:9:316:11 | o2b [Some] | semmle.label | o2b [Some] | | main.rs:316:9:316:11 | o2b [Some] | semmle.label | o2b [Some] |
| main.rs:316:28:316:29 | r2 [Err] | semmle.label | r2 [Err] |
| main.rs:316:28:316:35 | r2.err() [Some] | semmle.label | r2.err() [Some] | | main.rs:316:28:316:35 | r2.err() [Some] | semmle.label | r2.err() [Some] |
| main.rs:318:10:318:12 | o2b [Some] | semmle.label | o2b [Some] |
| main.rs:318:10:318:21 | o2b.unwrap() | semmle.label | o2b.unwrap() | | main.rs:318:10:318:21 | o2b.unwrap() | semmle.label | o2b.unwrap() |
| main.rs:322:9:322:10 | s1 [Ok] | semmle.label | s1 [Ok] | | main.rs:322:9:322:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:322:32:322:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | | main.rs:322:32:322:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
@@ -433,10 +481,12 @@ nodes
| main.rs:335:9:335:10 | s1 [Ok] | semmle.label | s1 [Ok] | | main.rs:335:9:335:10 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:335:32:335:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | | main.rs:335:32:335:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:335:35:335:44 | source(...) | semmle.label | source(...) | | main.rs:335:35:335:44 | source(...) | semmle.label | source(...) |
| main.rs:336:10:336:11 | s1 [Ok] | semmle.label | s1 [Ok] |
| main.rs:336:10:336:22 | s1.expect(...) | semmle.label | s1.expect(...) | | main.rs:336:10:336:22 | s1.expect(...) | semmle.label | s1.expect(...) |
| main.rs:339:9:339:10 | s2 [Err] | semmle.label | s2 [Err] | | main.rs:339:9:339:10 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:339:32:339:46 | Err(...) [Err] | semmle.label | Err(...) [Err] | | main.rs:339:32:339:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
| main.rs:339:36:339:45 | source(...) | semmle.label | source(...) | | main.rs:339:36:339:45 | source(...) | semmle.label | source(...) |
| main.rs:341:10:341:11 | s2 [Err] | semmle.label | s2 [Err] |
| main.rs:341:10:341:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) | | main.rs:341:10:341:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
| main.rs:350:9:350:10 | s1 [A] | semmle.label | s1 [A] | | main.rs:350:9:350:10 | s1 [A] | semmle.label | s1 [A] |
| main.rs:350:14:350:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] | | main.rs:350:14:350:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
@@ -530,7 +580,21 @@ nodes
| main.rs:497:10:497:10 | s | semmle.label | s | | main.rs:497:10:497:10 | s | semmle.label | s |
| main.rs:505:9:505:9 | a | semmle.label | a | | main.rs:505:9:505:9 | a | semmle.label | a |
| main.rs:505:13:505:22 | source(...) | semmle.label | source(...) | | main.rs:505:13:505:22 | source(...) | semmle.label | source(...) |
| main.rs:506:9:506:9 | b | semmle.label | b |
| main.rs:506:13:506:13 | a | semmle.label | a |
| main.rs:506:13:506:25 | a.to_string() | semmle.label | a.to_string() |
| main.rs:507:9:507:9 | c | semmle.label | c |
| main.rs:507:13:507:13 | b | semmle.label | b |
| main.rs:507:13:507:28 | b.parse() [Ok] | semmle.label | b.parse() [Ok] |
| main.rs:507:13:507:37 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:508:9:508:9 | d | semmle.label | d |
| main.rs:508:18:508:18 | b | semmle.label | b |
| main.rs:508:18:508:26 | b.parse() [Ok] | semmle.label | b.parse() [Ok] |
| main.rs:508:18:508:35 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:510:10:510:10 | a | semmle.label | a | | main.rs:510:10:510:10 | a | semmle.label | a |
| main.rs:511:17:511:17 | b | semmle.label | b |
| main.rs:512:10:512:10 | c | semmle.label | c |
| main.rs:513:10:513:10 | d | semmle.label | d |
| main.rs:517:9:517:10 | vs [element] | semmle.label | vs [element] | | main.rs:517:9:517:10 | vs [element] | semmle.label | vs [element] |
| main.rs:517:14:517:34 | [...] [element] | semmle.label | [...] [element] | | main.rs:517:14:517:34 | [...] [element] | semmle.label | [...] [element] |
| main.rs:517:15:517:24 | source(...) | semmle.label | source(...) | | main.rs:517:15:517:24 | source(...) | semmle.label | source(...) |
@@ -546,14 +610,27 @@ nodes
| main.rs:544:10:544:18 | vs_mut[0] | semmle.label | vs_mut[0] | | main.rs:544:10:544:18 | vs_mut[0] | semmle.label | vs_mut[0] |
| main.rs:554:9:554:9 | a | semmle.label | a | | main.rs:554:9:554:9 | a | semmle.label | a |
| main.rs:554:13:554:22 | source(...) | semmle.label | source(...) | | main.rs:554:13:554:22 | source(...) | semmle.label | source(...) |
| main.rs:555:9:555:9 | b | semmle.label | b |
| main.rs:555:13:555:22 | source(...) | semmle.label | source(...) |
| main.rs:556:9:556:9 | c | semmle.label | c | | main.rs:556:9:556:9 | c | semmle.label | c |
| main.rs:556:13:556:22 | source(...) | semmle.label | source(...) | | main.rs:556:13:556:22 | source(...) | semmle.label | source(...) |
| main.rs:557:9:557:13 | c_ref [&ref] | semmle.label | c_ref [&ref] | | main.rs:557:9:557:13 | c_ref [&ref] | semmle.label | c_ref [&ref] |
| main.rs:557:17:557:18 | &c [&ref] | semmle.label | &c [&ref] | | main.rs:557:17:557:18 | &c [&ref] | semmle.label | &c [&ref] |
| main.rs:557:18:557:18 | c | semmle.label | c | | main.rs:557:18:557:18 | c | semmle.label | c |
| main.rs:559:10:559:10 | a | semmle.label | a | | main.rs:559:10:559:10 | a | semmle.label | a |
| main.rs:560:14:560:15 | &b | semmle.label | &b |
| main.rs:560:15:560:15 | b | semmle.label | b |
| main.rs:561:14:561:18 | c_ref | semmle.label | c_ref |
| main.rs:562:10:562:15 | * ... | semmle.label | * ... | | main.rs:562:10:562:15 | * ... | semmle.label | * ... |
| main.rs:562:11:562:15 | c_ref [&ref] | semmle.label | c_ref [&ref] | | main.rs:562:11:562:15 | c_ref [&ref] | semmle.label | c_ref [&ref] |
| main.rs:566:9:566:9 | a | semmle.label | a |
| main.rs:566:18:566:27 | source(...) | semmle.label | source(...) |
| main.rs:568:10:568:17 | a as i64 | semmle.label | a as i64 |
| main.rs:572:9:572:9 | b | semmle.label | b |
| main.rs:572:18:572:27 | source(...) | semmle.label | source(...) |
| main.rs:574:10:574:17 | b as i64 | semmle.label | b as i64 |
| main.rs:576:10:576:21 | ...::from(...) | semmle.label | ...::from(...) |
| main.rs:576:20:576:20 | b | semmle.label | b |
subpaths subpaths
testFailures testFailures
#select #select
@@ -615,8 +692,16 @@ testFailures
| main.rs:473:10:473:19 | mut_arr[0] | main.rs:470:18:470:27 | source(...) | main.rs:473:10:473:19 | mut_arr[0] | $@ | main.rs:470:18:470:27 | source(...) | source(...) | | main.rs:473:10:473:19 | mut_arr[0] | main.rs:470:18:470:27 | source(...) | main.rs:473:10:473:19 | mut_arr[0] | $@ | main.rs:470:18:470:27 | source(...) | source(...) |
| main.rs:497:10:497:10 | s | main.rs:496:25:496:26 | source(...) | main.rs:497:10:497:10 | s | $@ | main.rs:496:25:496:26 | source(...) | source(...) | | main.rs:497:10:497:10 | s | main.rs:496:25:496:26 | source(...) | main.rs:497:10:497:10 | s | $@ | main.rs:496:25:496:26 | source(...) | source(...) |
| main.rs:510:10:510:10 | a | main.rs:505:13:505:22 | source(...) | main.rs:510:10:510:10 | a | $@ | main.rs:505:13:505:22 | source(...) | source(...) | | main.rs:510:10:510:10 | a | main.rs:505:13:505:22 | source(...) | main.rs:510:10:510:10 | a | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
| main.rs:511:17:511:17 | b | main.rs:505:13:505:22 | source(...) | main.rs:511:17:511:17 | b | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
| main.rs:512:10:512:10 | c | main.rs:505:13:505:22 | source(...) | main.rs:512:10:512:10 | c | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
| main.rs:513:10:513:10 | d | main.rs:505:13:505:22 | source(...) | main.rs:513:10:513:10 | d | $@ | main.rs:505:13:505:22 | source(...) | source(...) |
| main.rs:519:10:519:14 | vs[0] | main.rs:517:15:517:24 | source(...) | main.rs:519:10:519:14 | vs[0] | $@ | main.rs:517:15:517:24 | source(...) | source(...) | | main.rs:519:10:519:14 | vs[0] | main.rs:517:15:517:24 | source(...) | main.rs:519:10:519:14 | vs[0] | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
| main.rs:524:14:524:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:524:14:524:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) | | main.rs:524:14:524:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:524:14:524:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) |
| main.rs:544:10:544:18 | vs_mut[0] | main.rs:542:23:542:32 | source(...) | main.rs:544:10:544:18 | vs_mut[0] | $@ | main.rs:542:23:542:32 | source(...) | source(...) | | main.rs:544:10:544:18 | vs_mut[0] | main.rs:542:23:542:32 | source(...) | main.rs:544:10:544:18 | vs_mut[0] | $@ | main.rs:542:23:542:32 | source(...) | source(...) |
| main.rs:559:10:559:10 | a | main.rs:554:13:554:22 | source(...) | main.rs:559:10:559:10 | a | $@ | main.rs:554:13:554:22 | source(...) | source(...) | | main.rs:559:10:559:10 | a | main.rs:554:13:554:22 | source(...) | main.rs:559:10:559:10 | a | $@ | main.rs:554:13:554:22 | source(...) | source(...) |
| main.rs:560:14:560:15 | &b | main.rs:555:13:555:22 | source(...) | main.rs:560:14:560:15 | &b | $@ | main.rs:555:13:555:22 | source(...) | source(...) |
| main.rs:561:14:561:18 | c_ref | main.rs:556:13:556:22 | source(...) | main.rs:561:14:561:18 | c_ref | $@ | main.rs:556:13:556:22 | source(...) | source(...) |
| main.rs:562:10:562:15 | * ... | main.rs:556:13:556:22 | source(...) | main.rs:562:10:562:15 | * ... | $@ | main.rs:556:13:556:22 | source(...) | source(...) | | main.rs:562:10:562:15 | * ... | main.rs:556:13:556:22 | source(...) | main.rs:562:10:562:15 | * ... | $@ | main.rs:556:13:556:22 | source(...) | source(...) |
| main.rs:568:10:568:17 | a as i64 | main.rs:566:18:566:27 | source(...) | main.rs:568:10:568:17 | a as i64 | $@ | main.rs:566:18:566:27 | source(...) | source(...) |
| main.rs:574:10:574:17 | b as i64 | main.rs:572:18:572:27 | source(...) | main.rs:574:10:574:17 | b as i64 | $@ | main.rs:572:18:572:27 | source(...) | source(...) |
| main.rs:576:10:576:21 | ...::from(...) | main.rs:572:18:572:27 | source(...) | main.rs:576:10:576:21 | ...::from(...) | $@ | main.rs:572:18:572:27 | source(...) | source(...) |

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -1,54 +1,62 @@
models models
| 1 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
| 2 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue; value | | 2 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 3 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Reference; value | | 3 | Summary: <alloc::boxed::Box>::into_pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
| 4 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Reference; value | | 4 | Summary: <alloc::boxed::Box>::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value |
| 5 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 5 | Summary: <alloc::boxed::Box>::pin; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]; value |
| 6 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 6 | Summary: <core::i64 as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 7 | Summary: <core::option::Option>::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value | | 7 | Summary: <core::option::Option>::map_or; Argument[1].ReturnValue; ReturnValue; value |
| 8 | Summary: <core::pin::Pin>::into_inner; Argument[0]; ReturnValue; value | | 8 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 9 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[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>::new; Argument[0].Reference; ReturnValue; 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>::new; Argument[0]; ReturnValue; 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>::new_unchecked; Argument[0].Reference; ReturnValue; value | | 12 | Summary: <core::pin::Pin>::into_inner; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
| 13 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 13 | Summary: <core::pin::Pin>::into_inner_unchecked; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value |
| 14 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value | | 14 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
| 15 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; 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 |
edges edges
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:6 | | main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:10 | a [Some] | provenance | |
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | 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: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:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | |
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:6 | | main.rs:13:10:13:10 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:8 |
| main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | MaD:1 | | main.rs:14: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:14:13:14:21 | a.clone() [Some] | main.rs:14:9:14:9 | b [Some] | provenance | |
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:13 | | main.rs:15:10:15:10 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:8 |
| 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: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: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:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | |
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:13 | | main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:16 |
| main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | MaD:1 | | 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: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:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | | | main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | |
| main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | | | main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | |
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | 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:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | |
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:1 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:2 |
| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:5 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:6 |
| main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | | | main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | |
| main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:44:26:44:29 | self [Wrapper] | provenance | | | main.rs: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 | | | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | provenance | |
| main.rs:44:26:44:29 | self [Wrapper] | main.rs:44:26:44:31 | self.n | provenance | | | main.rs:44:26:44:29 | self [&ref, Wrapper] | main.rs:44:26:44:31 | self.n | provenance | |
| main.rs:44:26:44:31 | self.n | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | provenance | | | main.rs:44:26:44:31 | self.n | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:49:13:49:13 | w [Wrapper] | main.rs:50:15:50:15 | w [Wrapper] | provenance | | | main.rs:49:13:49:13 | w [Wrapper] | main.rs:50:15:50:15 | w [Wrapper] | provenance | |
| main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | main.rs:49:13:49:13 | w [Wrapper] | provenance | | | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | main.rs:49:13:49:13 | w [Wrapper] | provenance | |
| main.rs:49:30:49:39 | source(...) | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | provenance | | | main.rs:49:30:49:39 | source(...) | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:50:15:50:15 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [Wrapper] | provenance | |
| main.rs:50:15:50:15 | w [Wrapper] | main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | provenance | | | main.rs:50:15:50:15 | w [Wrapper] | main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:50:15:50:15 | w [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | provenance | | | main.rs:50:15:50:15 | w [Wrapper] | main.rs:53:17:53:17 | w [Wrapper] | provenance | |
| main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | main.rs:51:26:51:26 | n | provenance | | | main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | main.rs:51:26:51:26 | n | provenance | |
| main.rs:51:26:51:26 | n | main.rs:51:38:51:38 | n | provenance | | | main.rs:51:26:51:26 | n | main.rs:51:38:51:38 | n | provenance | |
| main.rs:53:13:53:13 | u [Wrapper] | main.rs:54:15:54:15 | u [Wrapper] | provenance | | | main.rs:53:13:53:13 | u [Wrapper] | main.rs:54:15:54:15 | u [Wrapper] | provenance | |
| main.rs:53:17:53:17 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | provenance | |
| main.rs:53:17:53:17 | w [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | provenance | |
| main.rs:53:17:53:25 | w.clone() [Wrapper] | main.rs:53:13:53:13 | u [Wrapper] | provenance | | | main.rs:53:17:53:25 | w.clone() [Wrapper] | main.rs:53:13:53:13 | u [Wrapper] | provenance | |
| main.rs:54:15:54:15 | u [Wrapper] | main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | provenance | | | main.rs:54:15:54:15 | u [Wrapper] | main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | provenance | |
| main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | main.rs:55:26:55:26 | n | provenance | | | main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | main.rs:55:26:55:26 | n | provenance | |
@@ -58,72 +66,87 @@ edges
| main.rs:66:22:66:31 | source(...) | main.rs:66:17:66:32 | Some(...) [Some] | provenance | | | 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: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:17:67:24 | a.zip(...) [Some, tuple.1] | main.rs:67:13:67:13 | z [Some, tuple.1] | provenance | |
| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:7 | | main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:9 |
| main.rs:68:15:68:15 | z [Some, tuple.1] | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | provenance | | | main.rs: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: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: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:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | |
| main.rs:79:13:79:13 | b | main.rs:80:14:80:14 | b | provenance | |
| main.rs:79:17:79:47 | a.map_or(...) | main.rs:79:13:79:13 | b | provenance | |
| main.rs:79:33:79:46 | ... + ... | main.rs:79:17:79:47 | a.map_or(...) | provenance | MaD:7 |
| main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | |
| main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | | | main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | |
| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:15 | | main.rs: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:14 | | main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:17 |
| 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: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:110:33:110:33 | i | provenance | |
| main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | |
| main.rs:108:13:108:17 | mut i | main.rs:112:24:112:27 | mut pinned | provenance | |
| main.rs:108:13:108:17 | mut i | main.rs:113:14:113:14 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:113:14:113:14 | i | provenance | |
| main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | | | main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | |
| main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:114:15:114:18 | pin1 [&ref] | provenance | | | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:114:15:114:18 | pin1 [Pin, &ref] | provenance | |
| main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:115:31:115:34 | pin1 [&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(...) [&ref] | main.rs:109:13:109:20 | mut pin1 [&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(...) [&ref] | provenance | MaD:11 | | main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:14 |
| main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | | | main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | |
| main.rs:110:13:110:20 | mut pin2 [&ref] | main.rs:116:15:116:18 | pin2 [&ref] | provenance | | | main.rs:110: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(...) [&ref] | main.rs:110:13:110:20 | mut pin2 [&ref] | 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(...) [&ref] | provenance | MaD:4 | | main.rs:110:33:110:33 | i | main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | provenance | MaD:5 |
| main.rs:111:13:111:20 | mut pin3 [&ref] | main.rs:117:15:117:18 | pin3 [&ref] | provenance | | | 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(...) [&ref] | main.rs:111:13:111:20 | mut pin3 [&ref] | 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(...) [&ref] | main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | provenance | MaD:2 | | 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(...) [&ref] | provenance | MaD:3 | | main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | provenance | MaD:4 |
| main.rs:114:15:114:18 | pin1 [&ref] | main.rs:114:14:114:18 | * ... | provenance | | | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | main.rs:118:15:118:18 | pin4 [Pin, &ref] | provenance | |
| main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | main.rs:115:14:115:35 | * ... | 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:115:31:115:34 | pin1 [&ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:8 | | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | provenance | |
| main.rs:116:15:116:18 | pin2 [&ref] | main.rs:116:14:116:18 | * ... | provenance | | | main.rs:112:24:112:27 | mut pinned | main.rs:112:24:112:27 | pinned | provenance | |
| main.rs:117:15:117:18 | pin3 [&ref] | main.rs:117:14:117:18 | * ... | 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: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: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: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: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: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:122:38:122:47 | source(...) | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | provenance | |
| main.rs:123:13:123:20 | mut pin1 [MyStruct] | main.rs:129:30:129:33 | pin1 [MyStruct] | provenance | | | main.rs:123: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(...) [MyStruct] | main.rs:123:13:123:20 | mut pin1 [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(...) [MyStruct] | provenance | MaD:10 | | 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:34:123:35 | ms [MyStruct] | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | provenance | | | 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:127:14:127:15 | ms [MyStruct] | main.rs:127:14:127:19 | ms.val | provenance | |
| main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | | | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | |
| main.rs:129:30:129:33 | pin1 [MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | provenance | MaD:8 | | main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | provenance | MaD:12 |
| main.rs:136:13:136:18 | mut ms [MyStruct] | main.rs:137:44:137:45 | ms [MyStruct] | provenance | | | 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: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:136:38:136:47 | source(...) | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | provenance | |
| main.rs:137:13:137:20 | mut pin5 [MyStruct] | main.rs:139:40:139:43 | pin5 [MyStruct] | provenance | | | main.rs:137: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(...) [MyStruct] | main.rs:137:13:137:20 | mut pin5 [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(...) [MyStruct] | provenance | MaD:12 | | 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:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | | | main.rs:137:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | |
| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | | | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | |
| main.rs:139:40:139:43 | pin5 [MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | provenance | MaD:9 | | main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | provenance | MaD:13 |
nodes nodes
| main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] | | main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] |
| main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | | main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| main.rs:12:18:12:27 | source(...) | semmle.label | source(...) | | main.rs:12:18:12:27 | source(...) | semmle.label | source(...) |
| main.rs:13:10:13:10 | a [Some] | semmle.label | a [Some] |
| main.rs:13:10:13:19 | a.unwrap() | semmle.label | a.unwrap() | | main.rs:13:10:13:19 | a.unwrap() | semmle.label | a.unwrap() |
| main.rs:14:9:14:9 | b [Some] | semmle.label | b [Some] | | main.rs:14:9:14:9 | b [Some] | semmle.label | b [Some] |
| main.rs:14:13:14:13 | a [Some] | semmle.label | a [Some] | | main.rs:14:13:14:13 | a [Some] | semmle.label | a [Some] |
| main.rs:14:13:14:21 | a.clone() [Some] | semmle.label | a.clone() [Some] | | main.rs:14:13:14:21 | a.clone() [Some] | semmle.label | a.clone() [Some] |
| main.rs:15:10:15:10 | b [Some] | semmle.label | b [Some] |
| main.rs:15:10:15:19 | b.unwrap() | semmle.label | b.unwrap() | | main.rs:15:10:15:19 | b.unwrap() | semmle.label | b.unwrap() |
| main.rs:19:9:19:9 | a [Ok] | semmle.label | a [Ok] | | main.rs:19:9:19:9 | a [Ok] | semmle.label | a [Ok] |
| main.rs:19:31:19:44 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | | main.rs:19:31:19:44 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
| main.rs:19:34:19:43 | source(...) | semmle.label | source(...) | | main.rs:19:34:19:43 | source(...) | semmle.label | source(...) |
| main.rs:20:10:20:10 | a [Ok] | semmle.label | a [Ok] |
| main.rs:20:10:20:19 | a.unwrap() | semmle.label | a.unwrap() | | main.rs:20:10:20:19 | a.unwrap() | semmle.label | a.unwrap() |
| main.rs:21:9:21:9 | b [Ok] | semmle.label | b [Ok] | | main.rs:21:9:21:9 | b [Ok] | semmle.label | b [Ok] |
| main.rs:21:13:21:13 | a [Ok] | semmle.label | a [Ok] | | main.rs:21:13:21:13 | a [Ok] | semmle.label | a [Ok] |
| main.rs:21:13:21:21 | a.clone() [Ok] | semmle.label | a.clone() [Ok] | | main.rs:21:13:21:21 | a.clone() [Ok] | semmle.label | a.clone() [Ok] |
| main.rs:22:10:22:10 | b [Ok] | semmle.label | b [Ok] |
| main.rs:22:10:22:19 | b.unwrap() | semmle.label | b.unwrap() | | main.rs:22:10:22:19 | b.unwrap() | semmle.label | b.unwrap() |
| main.rs:26:9:26:9 | a | semmle.label | a | | main.rs:26:9:26:9 | a | semmle.label | a |
| main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) |
@@ -132,10 +155,10 @@ nodes
| main.rs:28:13:28:13 | a | semmle.label | a | | main.rs:28:13:28:13 | a | semmle.label | a |
| main.rs:28:13:28:21 | a.clone() | semmle.label | a.clone() | | main.rs:28:13:28:21 | a.clone() | semmle.label | a.clone() |
| main.rs:29:10:29:10 | b | semmle.label | b | | main.rs:29:10:29:10 | b | semmle.label | b |
| main.rs:43:18:43:22 | SelfParam [Wrapper] | semmle.label | SelfParam [Wrapper] | | main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | semmle.label | SelfParam [&ref, Wrapper] |
| main.rs:43:33:45:9 | { ... } [Wrapper] | semmle.label | { ... } [Wrapper] | | main.rs:43:33:45:9 | { ... } [Wrapper] | semmle.label | { ... } [Wrapper] |
| main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
| main.rs:44:26:44:29 | self [Wrapper] | semmle.label | self [Wrapper] | | main.rs:44:26:44:29 | self [&ref, Wrapper] | semmle.label | self [&ref, Wrapper] |
| main.rs:44:26:44:31 | self.n | semmle.label | self.n | | main.rs:44:26:44:31 | self.n | semmle.label | self.n |
| main.rs:49:13:49:13 | w [Wrapper] | semmle.label | w [Wrapper] | | main.rs:49:13:49:13 | w [Wrapper] | semmle.label | w [Wrapper] |
| main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
@@ -145,6 +168,7 @@ nodes
| main.rs:51:26:51:26 | n | semmle.label | n | | main.rs:51:26:51:26 | n | semmle.label | n |
| main.rs:51:38:51:38 | n | semmle.label | n | | main.rs:51:38:51:38 | n | semmle.label | n |
| main.rs:53:13:53:13 | u [Wrapper] | semmle.label | u [Wrapper] | | main.rs:53:13:53:13 | u [Wrapper] | semmle.label | u [Wrapper] |
| main.rs:53:17:53:17 | w [Wrapper] | semmle.label | w [Wrapper] |
| main.rs:53:17:53:25 | w.clone() [Wrapper] | semmle.label | w.clone() [Wrapper] | | main.rs:53:17:53:25 | w.clone() [Wrapper] | semmle.label | w.clone() [Wrapper] |
| main.rs:54:15:54:15 | u [Wrapper] | semmle.label | u [Wrapper] | | main.rs:54:15:54:15 | u [Wrapper] | semmle.label | u [Wrapper] |
| main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | | main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
@@ -161,57 +185,69 @@ nodes
| main.rs:69:18:69:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | | main.rs:69:18:69:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| main.rs:69:22:69:22 | m | semmle.label | m | | main.rs:69:22:69:22 | m | semmle.label | m |
| main.rs:71:22:71:22 | m | semmle.label | m | | main.rs:71:22:71:22 | m | semmle.label | m |
| main.rs:79:13:79:13 | b | semmle.label | b |
| main.rs:79:17:79:47 | a.map_or(...) | semmle.label | a.map_or(...) |
| main.rs:79:33:79:46 | ... + ... | semmle.label | ... + ... |
| main.rs:79:37:79:46 | source(...) | semmle.label | source(...) |
| main.rs:80:14:80:14 | b | semmle.label | b |
| main.rs:92:29:92:29 | [post] y [&ref] | semmle.label | [post] y [&ref] | | main.rs:92:29:92:29 | [post] y [&ref] | semmle.label | [post] y [&ref] |
| main.rs:92:32:92:41 | source(...) | semmle.label | source(...) | | main.rs:92:32:92:41 | source(...) | semmle.label | source(...) |
| main.rs:93:18:93:34 | ...::read(...) | semmle.label | ...::read(...) | | main.rs:93:18:93:34 | ...::read(...) | semmle.label | ...::read(...) |
| main.rs:93:33:93:33 | y [&ref] | semmle.label | y [&ref] | | main.rs:93:33:93:33 | y [&ref] | semmle.label | y [&ref] |
| main.rs:108:13:108:17 | mut i | semmle.label | mut i | | main.rs:108:13:108:17 | mut i | semmle.label | mut i |
| main.rs:108:21:108:30 | source(...) | semmle.label | source(...) | | main.rs:108:21:108:30 | source(...) | semmle.label | source(...) |
| main.rs:109:13:109:20 | mut pin1 [&ref] | semmle.label | mut pin1 [&ref] | | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | semmle.label | mut pin1 [Pin, &ref] |
| main.rs:109:24:109:35 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
| main.rs:109:33:109:34 | &i [&ref] | semmle.label | &i [&ref] | | main.rs:109:33:109:34 | &i [&ref] | semmle.label | &i [&ref] |
| main.rs:109:34:109:34 | i | semmle.label | i | | main.rs:109:34:109:34 | i | semmle.label | i |
| main.rs:110:13:110:20 | mut pin2 [&ref] | semmle.label | mut pin2 [&ref] | | main.rs:110:13:110:20 | mut pin2 [Pin, Box(0)] | semmle.label | mut pin2 [Pin, Box(0)] |
| main.rs:110:24:110:34 | ...::pin(...) [&ref] | semmle.label | ...::pin(...) [&ref] | | main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | semmle.label | ...::pin(...) [Pin, Box(0)] |
| main.rs:110:33:110:33 | i | semmle.label | i | | main.rs:110:33:110:33 | i | semmle.label | i |
| main.rs:111:13:111:20 | mut pin3 [&ref] | semmle.label | mut pin3 [&ref] | | main.rs:111:13:111:20 | mut pin3 [Pin, Box(0)] | semmle.label | mut pin3 [Pin, Box(0)] |
| main.rs:111:24:111:49 | ...::into_pin(...) [&ref] | semmle.label | ...::into_pin(...) [&ref] | | main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | semmle.label | ...::into_pin(...) [Pin, Box(0)] |
| main.rs:111:38:111:48 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | semmle.label | ...::new(...) [Box(0)] |
| main.rs:111:47:111:47 | i | semmle.label | i | | main.rs:111:47:111:47 | i | semmle.label | i |
| main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | semmle.label | mut pin4 [Pin, &ref] |
| main.rs:112:24:112:27 | &mut pinned [&ref] | semmle.label | &mut pinned [&ref] |
| main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | semmle.label | ...::new_unchecked(...) [Pin, &ref] |
| main.rs:112:24:112:27 | mut pinned | semmle.label | mut pinned |
| main.rs:112:24:112:27 | pinned | semmle.label | pinned |
| main.rs:113:14:113:14 | i | semmle.label | i | | main.rs:113:14:113:14 | i | semmle.label | i |
| main.rs:114:14:114:18 | * ... | semmle.label | * ... | | main.rs:114:14:114:18 | * ... | semmle.label | * ... |
| main.rs:114:15:114:18 | pin1 [&ref] | semmle.label | pin1 [&ref] | | main.rs:114:15:114:18 | pin1 [Pin, &ref] | semmle.label | pin1 [Pin, &ref] |
| main.rs:115:14:115:35 | * ... | semmle.label | * ... | | main.rs:115:14:115:35 | * ... | semmle.label | * ... |
| main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | semmle.label | ...::into_inner(...) [&ref] | | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | semmle.label | ...::into_inner(...) [&ref] |
| main.rs:115:31:115:34 | pin1 [&ref] | semmle.label | pin1 [&ref] | | main.rs:115:31:115:34 | pin1 [Pin, &ref] | semmle.label | pin1 [Pin, &ref] |
| main.rs:116:14:116:18 | * ... | semmle.label | * ... | | main.rs:116:14:116:18 | * ... | semmle.label | * ... |
| main.rs:116:15:116:18 | pin2 [&ref] | semmle.label | pin2 [&ref] | | main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | semmle.label | pin2 [Pin, Box(0)] |
| main.rs:117:14:117:18 | * ... | semmle.label | * ... | | main.rs:117:14:117:18 | * ... | semmle.label | * ... |
| main.rs:117:15:117:18 | pin3 [&ref] | semmle.label | pin3 [&ref] | | main.rs:117:15:117:18 | pin3 [Pin, Box(0)] | semmle.label | pin3 [Pin, Box(0)] |
| main.rs:118:14:118:18 | * ... | semmle.label | * ... |
| main.rs:118:15:118:18 | pin4 [Pin, &ref] | semmle.label | pin4 [Pin, &ref] |
| main.rs:122:13:122:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] | | main.rs:122:13:122:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] |
| main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] | | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] |
| main.rs:122:38:122:47 | source(...) | semmle.label | source(...) | | main.rs:122:38:122:47 | source(...) | semmle.label | source(...) |
| main.rs:123:13:123:20 | mut pin1 [MyStruct] | semmle.label | mut pin1 [MyStruct] | | main.rs:123:13:123:20 | mut pin1 [Pin, &ref, MyStruct] | semmle.label | mut pin1 [Pin, &ref, MyStruct] |
| main.rs:123:24:123:36 | ...::new(...) [MyStruct] | semmle.label | ...::new(...) [MyStruct] | | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | semmle.label | ...::new(...) [Pin, &ref, MyStruct] |
| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] | | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] |
| main.rs:123:34:123:35 | ms [MyStruct] | semmle.label | ms [MyStruct] | | main.rs:123:34:123:35 | ms [MyStruct] | semmle.label | ms [MyStruct] |
| main.rs:127:14:127:15 | ms [MyStruct] | semmle.label | ms [MyStruct] | | main.rs:127:14:127:15 | ms [MyStruct] | semmle.label | ms [MyStruct] |
| main.rs:127:14:127:19 | ms.val | semmle.label | ms.val | | main.rs:127:14:127:19 | ms.val | semmle.label | ms.val |
| main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | semmle.label | ...::into_inner(...) [MyStruct] | | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | semmle.label | ...::into_inner(...) [&ref, MyStruct] |
| main.rs:129:14:129:38 | ... .val | semmle.label | ... .val | | main.rs:129:14:129:38 | ... .val | semmle.label | ... .val |
| main.rs:129:30:129:33 | pin1 [MyStruct] | semmle.label | pin1 [MyStruct] | | main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | semmle.label | pin1 [Pin, &ref, MyStruct] |
| main.rs:136:13:136:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] | | main.rs:136:13:136:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] |
| main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] | | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] |
| main.rs:136:38:136:47 | source(...) | semmle.label | source(...) | | main.rs:136:38:136:47 | source(...) | semmle.label | source(...) |
| main.rs:137:13:137:20 | mut pin5 [MyStruct] | semmle.label | mut pin5 [MyStruct] | | main.rs:137:13:137:20 | mut pin5 [Pin, &ref, MyStruct] | semmle.label | mut pin5 [Pin, &ref, MyStruct] |
| main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | semmle.label | ...::new_unchecked(...) [MyStruct] | | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | semmle.label | ...::new_unchecked(...) [Pin, &ref, MyStruct] |
| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] | | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] |
| main.rs:137:44:137:45 | ms [MyStruct] | semmle.label | ms [MyStruct] | | main.rs:137:44:137:45 | ms [MyStruct] | semmle.label | ms [MyStruct] |
| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | semmle.label | ...::into_inner_unchecked(...) [MyStruct] | | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | semmle.label | ...::into_inner_unchecked(...) [&ref, MyStruct] |
| main.rs:139:14:139:48 | ... .val | semmle.label | ... .val | | main.rs:139:14:139:48 | ... .val | semmle.label | ... .val |
| main.rs:139:40:139:43 | pin5 [MyStruct] | semmle.label | pin5 [MyStruct] | | main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | semmle.label | pin5 [Pin, &ref, MyStruct] |
subpaths subpaths
| main.rs:50:15:50:15 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | | main.rs:53:17:53:17 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] |
testFailures testFailures
#select #select
| main.rs:13:10:13:19 | a.unwrap() | main.rs:12:18:12:27 | source(...) | main.rs:13:10:13:19 | a.unwrap() | $@ | main.rs:12:18:12:27 | source(...) | source(...) | | main.rs:13:10:13:19 | a.unwrap() | main.rs:12:18:12:27 | source(...) | main.rs:13:10:13:19 | a.unwrap() | $@ | main.rs:12:18:12:27 | source(...) | source(...) |
@@ -223,12 +259,14 @@ testFailures
| main.rs:51:38:51:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:51:38:51:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) | | main.rs:51:38:51:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:51:38:51:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) |
| main.rs:55:38:55:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:55:38:55:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) | | main.rs:55:38:55:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:55:38:55:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) |
| main.rs:71:22:71:22 | m | main.rs:66:22:66:31 | source(...) | main.rs:71:22:71:22 | m | $@ | main.rs:66:22:66:31 | source(...) | source(...) | | main.rs:71:22:71:22 | m | main.rs:66:22:66:31 | source(...) | main.rs:71:22:71:22 | m | $@ | main.rs:66:22:66:31 | source(...) | source(...) |
| main.rs:80:14:80:14 | b | main.rs:79:37:79:46 | source(...) | main.rs:80:14:80:14 | b | $@ | main.rs:79:37:79:46 | source(...) | source(...) |
| main.rs:93:18:93:34 | ...::read(...) | main.rs:92:32:92:41 | source(...) | main.rs:93:18:93:34 | ...::read(...) | $@ | main.rs:92:32:92:41 | source(...) | source(...) | | main.rs:93:18:93:34 | ...::read(...) | main.rs:92:32:92:41 | source(...) | main.rs:93:18:93:34 | ...::read(...) | $@ | main.rs:92:32:92:41 | source(...) | source(...) |
| main.rs:113:14:113:14 | i | main.rs:108:21:108:30 | source(...) | main.rs:113:14:113:14 | i | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:113:14:113:14 | i | main.rs:108:21:108:30 | source(...) | main.rs:113:14:113:14 | i | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:114:14:114:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:114:14:114:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:114:14:114:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:114:14:114:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:115:14:115:35 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:115:14:115:35 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:115:14:115:35 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:115:14:115:35 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:116:14:116:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:116:14:116:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:116:14:116:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:116:14:116:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:117:14:117:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:117:14:117:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:117:14:117:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:117:14:117:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:118:14:118:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:118:14:118:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) |
| main.rs:127:14:127:19 | ms.val | main.rs:122:38:122:47 | source(...) | main.rs:127:14:127:19 | ms.val | $@ | main.rs:122:38:122:47 | source(...) | source(...) | | main.rs:127:14:127:19 | ms.val | main.rs:122:38:122:47 | source(...) | main.rs:127:14:127:19 | ms.val | $@ | main.rs:122:38:122:47 | source(...) | source(...) |
| main.rs:129:14:129:38 | ... .val | main.rs:122:38:122:47 | source(...) | main.rs:129:14:129:38 | ... .val | $@ | main.rs:122:38:122:47 | source(...) | source(...) | | main.rs:129:14:129:38 | ... .val | main.rs:122:38:122:47 | source(...) | main.rs:129:14:129:38 | ... .val | $@ | main.rs:122:38:122:47 | source(...) | source(...) |
| main.rs:139:14:139:48 | ... .val | main.rs:136:38:136:47 | source(...) | main.rs:139:14:139:48 | ... .val | $@ | main.rs:136:38:136:47 | source(...) | source(...) | | main.rs:139:14:139:48 | ... .val | main.rs:136:38:136:47 | source(...) | main.rs:139:14:139:48 | ... .val | $@ | main.rs:136:38:136:47 | source(...) | source(...) |

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -115,7 +115,7 @@ fn test_pin() {
sink(*Pin::into_inner(pin1)); // $ hasValueFlow=40 sink(*Pin::into_inner(pin1)); // $ hasValueFlow=40
sink(*pin2); // $ hasValueFlow=40 sink(*pin2); // $ hasValueFlow=40
sink(*pin3); // $ hasValueFlow=40 sink(*pin3); // $ hasValueFlow=40
sink(*pin4); // $ hasTaintFlow=40 sink(*pin4); // $ hasValueFlow=40
} }
{ {

View File

@@ -1,4 +1,5 @@
models models
| 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value |
edges edges
| main.rs:17:13:17:13 | a | main.rs:18:18:18:18 | a | provenance | | | main.rs:17:13:17:13 | a | main.rs:18:18:18:18 | a | provenance | |
| main.rs:17:17:17:26 | source(...) | main.rs:17:13:17:13 | a | provenance | | | main.rs:17:17:17:26 | source(...) | main.rs:17:13:17:13 | a | provenance | |
@@ -7,7 +8,7 @@ edges
| main.rs:18:18:18:18 | a | main.rs:18:17:18:18 | &a [&ref] | provenance | | | main.rs:18:18:18:18 | a | main.rs:18:17:18:18 | &a [&ref] | provenance | |
| main.rs:19:13:19:13 | c | main.rs:20:14:20:14 | c | provenance | | | main.rs:19:13:19:13 | c | main.rs:20:14:20:14 | c | provenance | |
| main.rs:19:17:19:18 | * ... | main.rs:19:13:19:13 | c | provenance | | | main.rs:19:17:19:18 | * ... | main.rs:19:13:19:13 | c | provenance | |
| main.rs:19:18:19:18 | b [&ref] | main.rs:19:17:19:18 | * ... | provenance | | | main.rs:19:18:19:18 | b [&ref] | main.rs:19:17:19:18 | * ... | provenance | MaD:1 |
| main.rs:23:29:23:30 | &... [&ref] | main.rs:23:30:23:30 | n | provenance | | | main.rs:23:29:23:30 | &... [&ref] | main.rs:23:30:23:30 | n | provenance | |
| main.rs:23:29:23:36 | ...: ... [&ref] | main.rs:23:29:23:30 | &... [&ref] | provenance | | | main.rs:23:29:23:36 | ...: ... [&ref] | main.rs:23:29:23:30 | &... [&ref] | provenance | |
| main.rs:23:30:23:30 | n | main.rs:24:14:24:14 | n | provenance | | | main.rs:23:30:23:30 | n | main.rs:24:14:24:14 | n | provenance | |
@@ -28,7 +29,7 @@ edges
| main.rs:51:17:51:26 | source(...) | main.rs:51:13:51:13 | a | provenance | | | main.rs:51:17:51:26 | source(...) | main.rs:51:13:51:13 | a | provenance | |
| main.rs:52:13:52:17 | ref p | main.rs:52:17:52:17 | p [&ref] | provenance | | | main.rs:52:13:52:17 | ref p | main.rs:52:17:52:17 | p [&ref] | provenance | |
| main.rs:52:17:52:17 | p [&ref] | main.rs:53:15:53:15 | p [&ref] | provenance | | | main.rs:52:17:52:17 | p [&ref] | main.rs:53:15:53:15 | p [&ref] | provenance | |
| main.rs:53:15:53:15 | p [&ref] | main.rs:53:14:53:15 | * ... | provenance | | | main.rs:53:15:53:15 | p [&ref] | main.rs:53:14:53:15 | * ... | provenance | MaD:1 |
| main.rs:57:13:57:13 | a [Some] | main.rs:58:15:58:15 | a [Some] | provenance | | | main.rs:57:13:57:13 | a [Some] | main.rs:58:15:58:15 | a [Some] | provenance | |
| main.rs:57:17:57:32 | Some(...) [Some] | main.rs:57:13:57:13 | a [Some] | provenance | | | main.rs:57:17:57:32 | Some(...) [Some] | main.rs:57:13:57:13 | a [Some] | provenance | |
| main.rs:57:22:57:31 | source(...) | main.rs:57:17:57:32 | Some(...) [Some] | provenance | | | main.rs:57:22:57:31 | source(...) | main.rs:57:17:57:32 | Some(...) [Some] | provenance | |
@@ -36,17 +37,17 @@ edges
| main.rs:59:13:59:23 | Some(...) [Some] | main.rs:59:18:59:22 | ref p | provenance | | | main.rs:59:13:59:23 | Some(...) [Some] | main.rs:59:18:59:22 | ref p | provenance | |
| main.rs:59:18:59:22 | ref p | main.rs:59:22:59:22 | p [&ref] | provenance | | | main.rs:59:18:59:22 | ref p | main.rs:59:22:59:22 | p [&ref] | provenance | |
| main.rs:59:22:59:22 | p [&ref] | main.rs:59:34:59:34 | p [&ref] | provenance | | | main.rs:59:22:59:22 | p [&ref] | main.rs:59:34:59:34 | p [&ref] | provenance | |
| main.rs:59:34:59:34 | p [&ref] | main.rs:59:33:59:34 | * ... | provenance | | | main.rs:59:34:59:34 | p [&ref] | main.rs:59:33:59:34 | * ... | provenance | MaD:1 |
| main.rs:73:10:73:10 | [post] b [&ref] | main.rs:74:15:74:15 | b [&ref] | provenance | | | main.rs:73:10:73:10 | [post] b [&ref] | main.rs:74:15:74:15 | b [&ref] | provenance | |
| main.rs:73:14:73:23 | source(...) | main.rs:73:10:73:10 | [post] b [&ref] | provenance | | | main.rs:73:14:73:23 | source(...) | main.rs:73:10:73:10 | [post] b [&ref] | provenance | |
| main.rs:74:15:74:15 | b [&ref] | main.rs:74:14:74:15 | * ... | provenance | | | main.rs:74:15:74:15 | b [&ref] | main.rs:74:14:74:15 | * ... | provenance | MaD:1 |
| main.rs:105:10:105:10 | [post] c [&ref] | main.rs:106:15:106:15 | c [&ref] | provenance | | | main.rs:105:10:105:10 | [post] c [&ref] | main.rs:106:15:106:15 | c [&ref] | provenance | |
| main.rs:105:14:105:23 | source(...) | main.rs:105:10:105:10 | [post] c [&ref] | provenance | | | main.rs:105:14:105:23 | source(...) | main.rs:105:10:105:10 | [post] c [&ref] | provenance | |
| main.rs:106:15:106:15 | c [&ref] | main.rs:106:14:106:15 | * ... | provenance | | | main.rs:106:15:106:15 | c [&ref] | main.rs:106:14:106:15 | * ... | provenance | MaD:1 |
| main.rs:112:13:112:21 | ref mut a | main.rs:112:21:112:21 | a [&ref] | provenance | | | main.rs:112:13:112:21 | ref mut a | main.rs:112:21:112:21 | a [&ref] | provenance | |
| main.rs:112:21:112:21 | a [&ref] | main.rs:113:15:113:15 | a [&ref] | provenance | | | main.rs:112:21:112:21 | a [&ref] | main.rs:113:15:113:15 | a [&ref] | provenance | |
| main.rs:112:25:112:34 | source(...) | main.rs:112:13:112:21 | ref mut a | provenance | | | main.rs:112:25:112:34 | source(...) | main.rs:112:13:112:21 | ref mut a | provenance | |
| main.rs:113:15:113:15 | a [&ref] | main.rs:113:14:113:15 | * ... | provenance | | | main.rs:113:15:113:15 | a [&ref] | main.rs:113:14:113:15 | * ... | provenance | MaD:1 |
| main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:150:11:150:11 | m [MyNumber] | provenance | | | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:150:11:150:11 | m [MyNumber] | provenance | |
| main.rs:150:11:150:11 | m [MyNumber] | main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:150:11:150:11 | m [MyNumber] | main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | main.rs:151:28:151:33 | number | provenance | | | main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | main.rs:151:28:151:33 | number | provenance | |
@@ -60,10 +61,11 @@ edges
| main.rs:164:13:164:39 | &... [&ref, MyNumber] | main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:164:13:164:39 | &... [&ref, MyNumber] | main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | main.rs:164:33:164:38 | number | provenance | | | main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | main.rs:164:33:164:38 | number | provenance | |
| main.rs:164:33:164:38 | number | main.rs:162:26:166:5 | { ... } | provenance | | | main.rs:164:33:164:38 | number | main.rs:162:26:166:5 | { ... } | provenance | |
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | | | main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:175:14:175:22 | my_number [MyNumber] | provenance | |
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:175:14:175:34 | my_number.to_number() | provenance | |
| main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | main.rs:174:13:174:21 | my_number [MyNumber] | provenance | | | main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | main.rs:174:13:174:21 | my_number [MyNumber] | provenance | |
| main.rs:174:44:174:53 | source(...) | main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:174:44:174:53 | source(...) | main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | provenance | |
| main.rs:175:14:175:22 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | |
| main.rs:175:14:175:22 | my_number [MyNumber] | main.rs:175:14:175:34 | my_number.to_number() | provenance | |
| main.rs:179:13:179:21 | my_number [MyNumber] | main.rs:180:16:180:24 | my_number [MyNumber] | provenance | | | main.rs:179:13:179:21 | my_number [MyNumber] | main.rs:180:16:180:24 | my_number [MyNumber] | provenance | |
| main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | main.rs:179:13:179:21 | my_number [MyNumber] | provenance | | | main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | main.rs:179:13:179:21 | my_number [MyNumber] | provenance | |
| main.rs:179:44:179:53 | source(...) | main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:179:44:179:53 | source(...) | main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | provenance | |
@@ -87,7 +89,7 @@ edges
| main.rs:210:17:210:17 | [post] p [&ref] | main.rs:211:15:211:15 | p [&ref] | provenance | | | main.rs:210:17:210:17 | [post] p [&ref] | main.rs:211:15:211:15 | p [&ref] | provenance | |
| main.rs:210:20:210:29 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | | | main.rs:210:20:210:29 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | |
| main.rs:210:20:210:29 | source(...) | main.rs:210:17:210:17 | [post] p [&ref] | provenance | | | main.rs:210:20:210:29 | source(...) | main.rs:210:17:210:17 | [post] p [&ref] | provenance | |
| main.rs:211:15:211:15 | p [&ref] | main.rs:211:14:211:15 | * ... | provenance | | | main.rs:211:15:211:15 | p [&ref] | main.rs:211:14:211:15 | * ... | provenance | MaD:1 |
| main.rs:218:17:218:22 | [post] &mut n [&ref] | main.rs:218:22:218:22 | [post] n | provenance | | | main.rs:218:17:218:22 | [post] &mut n [&ref] | main.rs:218:22:218:22 | [post] n | provenance | |
| main.rs:218:22:218:22 | [post] n | main.rs:219:14:219:14 | n | provenance | | | main.rs:218:22:218:22 | [post] n | main.rs:219:14:219:14 | n | provenance | |
| main.rs:218:25:218:34 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | | | main.rs:218:25:218:34 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | |
@@ -201,6 +203,7 @@ nodes
| main.rs:174:13:174:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] | | main.rs:174:13:174:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] | | main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
| main.rs:174:44:174:53 | source(...) | semmle.label | source(...) | | main.rs:174:44:174:53 | source(...) | semmle.label | source(...) |
| main.rs:175:14:175:22 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:175:14:175:34 | my_number.to_number() | semmle.label | my_number.to_number() | | main.rs:175:14:175:34 | my_number.to_number() | semmle.label | my_number.to_number() |
| main.rs:179:13:179:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] | | main.rs:179:13:179:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
| main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] | | main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
@@ -262,7 +265,7 @@ nodes
| main.rs:255:14:255:33 | to_number(...) | semmle.label | to_number(...) | | main.rs:255:14:255:33 | to_number(...) | semmle.label | to_number(...) |
| main.rs:255:24:255:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] | | main.rs:255:24:255:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
subpaths subpaths
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:175:14:175:34 | my_number.to_number() | | main.rs:175:14:175:22 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:175:14:175:34 | my_number.to_number() |
| main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:180:14:180:31 | ... .get() | | main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:180:14:180:31 | ... .get() |
| main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:186:14:186:28 | my_number.get() | | main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:186:14:186:28 | my_number.get() |
| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:192:14:192:34 | my_number.to_number() | | main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:192:14:192:34 | my_number.to_number() |

View File

@@ -5,8 +5,8 @@
import rust import rust
import utils.test.InlineFlowTest import utils.test.InlineFlowTest
import DefaultFlowTest import DefaultFlowTest
import ValueFlow::PathGraph import TaintFlow::PathGraph
from ValueFlow::PathNode source, ValueFlow::PathNode sink from TaintFlow::PathNode source, TaintFlow::PathNode sink
where ValueFlow::flowPath(source, sink) where TaintFlow::flowPath(source, sink)
select sink, source, sink, "$@", source, source.toString() select sink, source, sink, "$@", source, source.toString()

View File

@@ -7,7 +7,7 @@ models
| 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment |
| 7 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | | 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 | | 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].Element; ReturnValue.Field[core::option::Option::Some(0)]; 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 | | 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 | | 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 | | 12 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |

View File

@@ -18,30 +18,26 @@ models
| 17 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 17 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 18 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 18 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file |
| 19 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | | 19 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 20 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 20 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 21 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 21 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint |
| 22 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | | 22 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint |
| 23 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | | 23 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint |
| 24 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | | 24 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 25 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | | 25 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 26 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | | 26 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 27 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | | 27 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 28 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | | 28 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 29 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | | 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | | 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint |
| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | | 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | | 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | | 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 38 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 38 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 39 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 39 | Summary: <std::path::PathBuf>::as_path; Argument[self]; ReturnValue; value |
| 40 | Summary: <std::fs::File as std::io::Read>::read; Argument[self]; Argument[0]; taint |
| 41 | Summary: <std::fs::File as std::io::Read>::read_to_end; Argument[self]; Argument[0]; taint |
| 42 | Summary: <std::fs::File as std::io::Read>::read_to_string; Argument[self]; Argument[0]; taint |
| 43 | Summary: <std::path::PathBuf>::as_path; Argument[self]; ReturnValue; value |
edges edges
| test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | |
| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:43 | ...::read [Ok] | provenance | Src:MaD:11 | | test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:43 | ...::read [Ok] | provenance | Src:MaD:11 |
@@ -62,21 +58,18 @@ edges
| test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | | | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | |
| test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | | | test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | |
| test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | | | test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | |
| test.rs:29:13:29:16 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:21 |
| test.rs:29:13:29:16 | path | test.rs:31:14:31:17 | path | provenance | | | test.rs:29:13:29:16 | path | test.rs:31:14:31:17 | path | provenance | |
| test.rs:29:13:29:16 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:21 |
| test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | | | test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | |
| test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | | | test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | |
| test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | | test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 |
| test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:21 | | test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:20 |
| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:21 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:20 |
| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:43 | | test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:39 |
| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | |
| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:21 |
| test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | |
| test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | | test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | |
| test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | | test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 |
| test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:21 | | test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:20 |
| test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | | | test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | |
| test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:13 | | test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:13 |
| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | | | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | |
@@ -109,61 +102,57 @@ edges
| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | | | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | |
| test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | | | test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | |
| test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | | | test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer | provenance | MaD:40 | | test.rs:107:9:107:16 | mut file | test.rs:111:22:111:25 | file | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:107:9:107:16 | mut file | test.rs:117:22:117:25 | file | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer | provenance | MaD:41 | | test.rs:107:9:107:16 | mut file | test.rs:123:22:123:25 | file | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:27 | | test.rs:107:9:107:16 | mut file | test.rs:129:9:129:12 | file | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer | provenance | MaD:42 | | test.rs:107:9:107:16 | mut file | test.rs:133:17:133:20 | file | provenance | |
| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:28 |
| test.rs:107:9:107:16 | mut file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:107:9:107:16 | mut file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:22 |
| test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | | | test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | |
| test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | | | test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | |
| test.rs:111:32:111:42 | [post] &mut buffer | test.rs:112:15:112:20 | buffer | provenance | | | test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | | | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | |
| test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | | test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | |
| test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | | test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | |
| test.rs:117:39:117:49 | [post] &mut buffer | test.rs:118:15:118:20 | buffer | provenance | | | test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:26 |
| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | | | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | |
| test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | | | test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | |
| test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | | | test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | |
| test.rs:123:42:123:52 | [post] &mut buffer | test.rs:124:15:124:20 | buffer | provenance | | | test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | | | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | |
| test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | | | test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | |
| test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | | | test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | |
| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:25 |
| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | | | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | |
| test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | | | test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | |
| test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | | | test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | |
| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:21 |
| test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | | | test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | |
| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer | provenance | MaD:40 | | test.rs:140:13:140:18 | mut f1 | test.rs:142:22:142:23 | f1 | provenance | |
| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:38 |
| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:39 |
| test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | | | test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | |
| test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:142:30:142:40 | [post] &mut buffer | test.rs:143:15:143:20 | buffer | provenance | | | test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | | | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | |
| test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | | | test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | |
| test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | | | test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | |
| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer | provenance | MaD:40 | | test.rs:147:13:147:18 | mut f2 | test.rs:149:22:149:23 | f2 | provenance | |
| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:38 |
| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:39 |
| test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | | | test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | |
| test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:149:30:149:40 | [post] &mut buffer | test.rs:150:15:150:20 | buffer | provenance | | | test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | | | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | |
| test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | | | test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | |
| test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | | | test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | |
| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer | provenance | MaD:40 | | test.rs:154:13:154:18 | mut f3 | test.rs:156:22:156:23 | f3 | provenance | |
| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:38 |
| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:39 |
| test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | | | test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | |
| test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 |
| test.rs:156:30:156:40 | [post] &mut buffer | test.rs:157:15:157:20 | buffer | provenance | | | test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:24 |
| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | | | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | |
| test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | | | test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | |
| test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | | | test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | |
| test.rs:164:13:164:17 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:24 | | test.rs:164:13:164:17 | file1 | test.rs:166:26:166:30 | file1 | provenance | |
| test.rs:164:21:164:39 | ...::open | test.rs:164:21:164:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:164:21:164:39 | ...::open | test.rs:164:21:164:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:164:21:164:51 | ...::open(...) [Ok] | test.rs:164:21:164:52 | TryExpr | provenance | | | test.rs:164:21:164:51 | ...::open(...) [Ok] | test.rs:164:21:164:52 | TryExpr | provenance | |
| test.rs:164:21:164:52 | TryExpr | test.rs:164:13:164:17 | file1 | provenance | | | test.rs:164:21:164:52 | TryExpr | test.rs:164:13:164:17 | file1 | provenance | |
@@ -171,76 +160,88 @@ edges
| test.rs:165:21:165:39 | ...::open | test.rs:165:21:165:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:165:21:165:39 | ...::open | test.rs:165:21:165:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | | | test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | |
| test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | | | test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | |
| test.rs:166:13:166:22 | mut reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:166:13:166:22 | mut reader | test.rs:167:9:167:14 | reader | provenance | |
| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:23 |
| test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | | | test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | |
| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:23 | | test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:22 |
| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | | | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | |
| test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | | | test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | |
| test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | | | test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | |
| test.rs:173:13:173:17 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:29 | | test.rs:173:13:173:17 | file1 | test.rs:174:26:174:30 | file1 | provenance | |
| test.rs:173:21:173:39 | ...::open | test.rs:173:21:173:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:173:21:173:39 | ...::open | test.rs:173:21:173:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 |
| test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | | | test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | |
| test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | | | test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | |
| test.rs:174:13:174:22 | mut reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:174:13:174:22 | mut reader | test.rs:175:9:175:14 | reader | provenance | |
| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:28 |
| test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | | | test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | |
| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:27 |
| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | | | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | |
| test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | | | test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | |
| test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | | | test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:30 | | test.rs:185:9:185:16 | mut file | test.rs:189:22:189:25 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:36 | | test.rs:185:9:185:16 | mut file | test.rs:195:22:195:25 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:185:9:185:16 | mut file | test.rs:201:22:201:25 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:32 | | test.rs:185:9:185:16 | mut file | test.rs:207:9:207:12 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:38 | | test.rs:185:9:185:16 | mut file | test.rs:212:18:212:21 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:34 | | test.rs:185:9:185:16 | mut file | test.rs:213:18:213:21 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:33 | | test.rs:185:9:185:16 | mut file | test.rs:214:18:214:21 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:35 | | test.rs:185:9:185:16 | mut file | test.rs:215:18:215:21 | file | provenance | |
| test.rs:185:9:185:16 | mut file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:31 | | test.rs:185:9:185:16 | mut file | test.rs:224:9:224:12 | file | provenance | |
| test.rs:185:20:185:40 | ...::open | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:185:20:185:40 | ...::open | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 |
| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | | | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | |
| test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | | | test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | |
| test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | | | test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | |
| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | | | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | |
| test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | | | test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | |
| test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | | | test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | |
| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:35 |
| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | | | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | |
| test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | | | test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | |
| test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | | | test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | |
| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:36 |
| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | | | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | |
| test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | | | test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | |
| test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | | | test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | |
| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:31 |
| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | | | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | |
| test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | | | test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | |
| test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | | | test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | |
| test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | | | test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | |
| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:37 |
| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | | | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | |
| test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | | | test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | |
| test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | | | test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | |
| test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | | | test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | |
| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:33 |
| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | | | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | |
| test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | | | test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | |
| test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | | | test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | |
| test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | | | test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | |
| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:32 |
| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | | | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | |
| test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | | | test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | |
| test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | | | test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | |
| test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | | | test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | |
| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:34 |
| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | | | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | |
| test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | | | test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | |
| test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | | | test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | |
| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:30 |
| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | | | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | |
| test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | | | test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | |
| test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | | | test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | |
| test.rs:231:13:231:18 | mut f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:30 | | test.rs:231:13:231:18 | mut f1 | test.rs:233:22:233:23 | f1 | provenance | |
| test.rs:231:22:231:65 | ... .open(...) [future, Ok] | test.rs:231:22:231:71 | await ... [Ok] | provenance | | | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | test.rs:231:22:231:71 | await ... [Ok] | provenance | |
| test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | | | test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | |
| test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | | | test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | |
| test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 |
| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:29 |
| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | | | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | |
| test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | | | test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | |
| test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | | | test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | |
| test.rs:262:9:262:16 | mut file | test.rs:266:22:266:25 | file | provenance | | | test.rs:262:9:262:16 | mut file | test.rs:266:22:266:25 | file | provenance | |
| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 |
| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:20 |
| test.rs:262:20:262:44 | ...::open | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | | test.rs:262:20:262:44 | ...::open | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 |
| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | | | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | |
| test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | | | test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | |
@@ -250,8 +251,6 @@ edges
| test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | | | test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | |
| test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | | | test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | |
| test.rs:273:13:273:18 | mut f1 | test.rs:275:22:275:23 | f1 | provenance | | | test.rs:273:13:273:18 | mut f1 | test.rs:275:22:275:23 | f1 | provenance | |
| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 |
| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:20 |
| test.rs:273:22:273:69 | ... .open(...) [future, Ok] | test.rs:273:22:273:75 | await ... [Ok] | provenance | | | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | test.rs:273:22:273:75 | await ... [Ok] | provenance | |
| test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | | | test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | |
| test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | | | test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | |
@@ -337,32 +336,34 @@ nodes
| test.rs:107:20:107:38 | ...::open | semmle.label | ...::open | | test.rs:107:20:107:38 | ...::open | semmle.label | ...::open |
| test.rs:107:20:107:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:107:20:107:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
| test.rs:107:20:107:51 | TryExpr | semmle.label | TryExpr | | test.rs:107:20:107:51 | TryExpr | semmle.label | TryExpr |
| test.rs:111:32:111:42 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:111:22:111:25 | file | semmle.label | file |
| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:111:37:111:42 | [post] buffer | semmle.label | [post] buffer | | test.rs:111:37:111:42 | [post] buffer | semmle.label | [post] buffer |
| test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | | test.rs:112:14:112:20 | &buffer | semmle.label | &buffer |
| test.rs:112:15:112:20 | buffer | semmle.label | buffer | | test.rs:112:15:112:20 | buffer | semmle.label | buffer |
| test.rs:117:39:117:49 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:117:22:117:25 | file | semmle.label | file |
| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:117:44:117:49 | [post] buffer | semmle.label | [post] buffer | | test.rs:117:44:117:49 | [post] buffer | semmle.label | [post] buffer |
| test.rs:118:14:118:20 | &buffer | semmle.label | &buffer | | test.rs:118:14:118:20 | &buffer | semmle.label | &buffer |
| test.rs:118:15:118:20 | buffer | semmle.label | buffer | | test.rs:118:15:118:20 | buffer | semmle.label | buffer |
| test.rs:123:42:123:52 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:123:22:123:25 | file | semmle.label | file |
| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:123:47:123:52 | [post] buffer | semmle.label | [post] buffer | | test.rs:123:47:123:52 | [post] buffer | semmle.label | [post] buffer |
| test.rs:124:14:124:20 | &buffer | semmle.label | &buffer | | test.rs:124:14:124:20 | &buffer | semmle.label | &buffer |
| test.rs:124:15:124:20 | buffer | semmle.label | buffer | | test.rs:124:15:124:20 | buffer | semmle.label | buffer |
| test.rs:129:9:129:12 | file | semmle.label | file |
| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:129:30:129:35 | [post] buffer | semmle.label | [post] buffer | | test.rs:129:30:129:35 | [post] buffer | semmle.label | [post] buffer |
| test.rs:130:14:130:20 | &buffer | semmle.label | &buffer | | test.rs:130:14:130:20 | &buffer | semmle.label | &buffer |
| test.rs:130:15:130:20 | buffer | semmle.label | buffer | | test.rs:130:15:130:20 | buffer | semmle.label | buffer |
| test.rs:133:17:133:20 | file | semmle.label | file |
| test.rs:133:17:133:28 | file.bytes() | semmle.label | file.bytes() | | test.rs:133:17:133:28 | file.bytes() | semmle.label | file.bytes() |
| test.rs:134:14:134:17 | byte | semmle.label | byte | | test.rs:134:14:134:17 | byte | semmle.label | byte |
| test.rs:140:13:140:18 | mut f1 | semmle.label | mut f1 | | test.rs:140:13:140:18 | mut f1 | semmle.label | mut f1 |
| test.rs:140:22:140:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:140:22:140:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
| test.rs:140:22:140:72 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:140:22:140:72 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:140:50:140:53 | open | semmle.label | open | | test.rs:140:50:140:53 | open | semmle.label | open |
| test.rs:142:30:142:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:142:22:142:23 | f1 | semmle.label | f1 |
| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:142:35:142:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:142:35:142:40 | [post] buffer | semmle.label | [post] buffer |
| test.rs:143:14:143:20 | &buffer | semmle.label | &buffer | | test.rs:143:14:143:20 | &buffer | semmle.label | &buffer |
@@ -371,7 +372,7 @@ nodes
| test.rs:147:22:147:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:147:22:147:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
| test.rs:147:22:147:89 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:147:22:147:89 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:147:67:147:70 | open | semmle.label | open | | test.rs:147:67:147:70 | open | semmle.label | open |
| test.rs:149:30:149:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:149:22:149:23 | f2 | semmle.label | f2 |
| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:149:35:149:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:149:35:149:40 | [post] buffer | semmle.label | [post] buffer |
| test.rs:150:14:150:20 | &buffer | semmle.label | &buffer | | test.rs:150:14:150:20 | &buffer | semmle.label | &buffer |
@@ -380,7 +381,7 @@ nodes
| test.rs:154:22:154:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | | test.rs:154:22:154:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] |
| test.rs:154:22:154:123 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:154:22:154:123 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:154:101:154:104 | open | semmle.label | open | | test.rs:154:101:154:104 | open | semmle.label | open |
| test.rs:156:30:156:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | | test.rs:156:22:156:23 | f3 | semmle.label | f3 |
| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:156:35:156:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:156:35:156:40 | [post] buffer | semmle.label | [post] buffer |
| test.rs:157:14:157:20 | &buffer | semmle.label | &buffer | | test.rs:157:14:157:20 | &buffer | semmle.label | &buffer |
@@ -394,8 +395,10 @@ nodes
| test.rs:165:21:165:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:165:21:165:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
| test.rs:165:21:165:60 | TryExpr | semmle.label | TryExpr | | test.rs:165:21:165:60 | TryExpr | semmle.label | TryExpr |
| test.rs:166:13:166:22 | mut reader | semmle.label | mut reader | | test.rs:166:13:166:22 | mut reader | semmle.label | mut reader |
| test.rs:166:26:166:30 | file1 | semmle.label | file1 |
| test.rs:166:26:166:43 | file1.chain(...) | semmle.label | file1.chain(...) | | test.rs:166:26:166:43 | file1.chain(...) | semmle.label | file1.chain(...) |
| test.rs:166:38:166:42 | file2 | semmle.label | file2 | | test.rs:166:38:166:42 | file2 | semmle.label | file2 |
| test.rs:167:9:167:14 | reader | semmle.label | reader |
| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:167:36:167:41 | [post] buffer | semmle.label | [post] buffer | | test.rs:167:36:167:41 | [post] buffer | semmle.label | [post] buffer |
| test.rs:168:14:168:20 | &buffer | semmle.label | &buffer | | test.rs:168:14:168:20 | &buffer | semmle.label | &buffer |
@@ -405,7 +408,9 @@ nodes
| test.rs:173:21:173:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | | test.rs:173:21:173:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] |
| test.rs:173:21:173:52 | TryExpr | semmle.label | TryExpr | | test.rs:173:21:173:52 | TryExpr | semmle.label | TryExpr |
| test.rs:174:13:174:22 | mut reader | semmle.label | mut reader | | test.rs:174:13:174:22 | mut reader | semmle.label | mut reader |
| test.rs:174:26:174:30 | file1 | semmle.label | file1 |
| test.rs:174:26:174:40 | file1.take(...) | semmle.label | file1.take(...) | | test.rs:174:26:174:40 | file1.take(...) | semmle.label | file1.take(...) |
| test.rs:175:9:175:14 | reader | semmle.label | reader |
| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:175:36:175:41 | [post] buffer | semmle.label | [post] buffer | | test.rs:175:36:175:41 | [post] buffer | semmle.label | [post] buffer |
| test.rs:176:14:176:20 | &buffer | semmle.label | &buffer | | test.rs:176:14:176:20 | &buffer | semmle.label | &buffer |
@@ -415,35 +420,43 @@ nodes
| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] |
| test.rs:185:20:185:58 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:185:20:185:58 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:185:20:185:59 | TryExpr | semmle.label | TryExpr | | test.rs:185:20:185:59 | TryExpr | semmle.label | TryExpr |
| test.rs:189:22:189:25 | file | semmle.label | file |
| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:189:37:189:42 | [post] buffer | semmle.label | [post] buffer | | test.rs:189:37:189:42 | [post] buffer | semmle.label | [post] buffer |
| test.rs:190:14:190:20 | &buffer | semmle.label | &buffer | | test.rs:190:14:190:20 | &buffer | semmle.label | &buffer |
| test.rs:190:15:190:20 | buffer | semmle.label | buffer | | test.rs:190:15:190:20 | buffer | semmle.label | buffer |
| test.rs:195:22:195:25 | file | semmle.label | file |
| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:195:44:195:49 | [post] buffer | semmle.label | [post] buffer | | test.rs:195:44:195:49 | [post] buffer | semmle.label | [post] buffer |
| test.rs:196:14:196:20 | &buffer | semmle.label | &buffer | | test.rs:196:14:196:20 | &buffer | semmle.label | &buffer |
| test.rs:196:15:196:20 | buffer | semmle.label | buffer | | test.rs:196:15:196:20 | buffer | semmle.label | buffer |
| test.rs:201:22:201:25 | file | semmle.label | file |
| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:201:47:201:52 | [post] buffer | semmle.label | [post] buffer | | test.rs:201:47:201:52 | [post] buffer | semmle.label | [post] buffer |
| test.rs:202:14:202:20 | &buffer | semmle.label | &buffer | | test.rs:202:14:202:20 | &buffer | semmle.label | &buffer |
| test.rs:202:15:202:20 | buffer | semmle.label | buffer | | test.rs:202:15:202:20 | buffer | semmle.label | buffer |
| test.rs:207:9:207:12 | file | semmle.label | file |
| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:207:30:207:35 | [post] buffer | semmle.label | [post] buffer | | test.rs:207:30:207:35 | [post] buffer | semmle.label | [post] buffer |
| test.rs:208:14:208:20 | &buffer | semmle.label | &buffer | | test.rs:208:14:208:20 | &buffer | semmle.label | &buffer |
| test.rs:208:15:208:20 | buffer | semmle.label | buffer | | test.rs:208:15:208:20 | buffer | semmle.label | buffer |
| test.rs:212:13:212:14 | v1 | semmle.label | v1 | | test.rs:212:13:212:14 | v1 | semmle.label | v1 |
| test.rs:212:18:212:21 | file | semmle.label | file |
| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] | | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] |
| test.rs:212:18:212:37 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:212:18:212:37 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:212:18:212:38 | TryExpr | semmle.label | TryExpr | | test.rs:212:18:212:38 | TryExpr | semmle.label | TryExpr |
| test.rs:213:13:213:14 | v2 | semmle.label | v2 | | test.rs:213:13:213:14 | v2 | semmle.label | v2 |
| test.rs:213:18:213:21 | file | semmle.label | file |
| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] | | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] |
| test.rs:213:18:213:38 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:213:18:213:38 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:213:18:213:39 | TryExpr | semmle.label | TryExpr | | test.rs:213:18:213:39 | TryExpr | semmle.label | TryExpr |
| test.rs:214:13:214:14 | v3 | semmle.label | v3 | | test.rs:214:13:214:14 | v3 | semmle.label | v3 |
| test.rs:214:18:214:21 | file | semmle.label | file |
| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] | | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] |
| test.rs:214:18:214:38 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:214:18:214:38 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:214:18:214:39 | TryExpr | semmle.label | TryExpr | | test.rs:214:18:214:39 | TryExpr | semmle.label | TryExpr |
| test.rs:215:13:215:14 | v4 | semmle.label | v4 | | test.rs:215:13:215:14 | v4 | semmle.label | v4 |
| test.rs:215:18:215:21 | file | semmle.label | file |
| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] | | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] |
| test.rs:215:18:215:41 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:215:18:215:41 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:215:18:215:42 | TryExpr | semmle.label | TryExpr | | test.rs:215:18:215:42 | TryExpr | semmle.label | TryExpr |
@@ -451,6 +464,7 @@ nodes
| test.rs:217:14:217:15 | v2 | semmle.label | v2 | | test.rs:217:14:217:15 | v2 | semmle.label | v2 |
| test.rs:218:14:218:15 | v3 | semmle.label | v3 | | test.rs:218:14:218:15 | v3 | semmle.label | v3 |
| test.rs:219:14:219:15 | v4 | semmle.label | v4 | | test.rs:219:14:219:15 | v4 | semmle.label | v4 |
| test.rs:224:9:224:12 | file | semmle.label | file |
| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:224:28:224:33 | [post] buffer | semmle.label | [post] buffer | | test.rs:224:28:224:33 | [post] buffer | semmle.label | [post] buffer |
| test.rs:225:14:225:20 | &buffer | semmle.label | &buffer | | test.rs:225:14:225:20 | &buffer | semmle.label | &buffer |
@@ -460,6 +474,7 @@ nodes
| test.rs:231:22:231:71 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:231:22:231:71 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:231:22:231:72 | TryExpr | semmle.label | TryExpr | | test.rs:231:22:231:72 | TryExpr | semmle.label | TryExpr |
| test.rs:231:52:231:55 | open | semmle.label | open | | test.rs:231:52:231:55 | open | semmle.label | open |
| test.rs:233:22:233:23 | f1 | semmle.label | f1 |
| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:233:35:233:40 | [post] buffer | semmle.label | [post] buffer | | test.rs:233:35:233:40 | [post] buffer | semmle.label | [post] buffer |
| test.rs:234:14:234:20 | &buffer | semmle.label | &buffer | | test.rs:234:14:234:20 | &buffer | semmle.label | &buffer |

View File

@@ -8,65 +8,61 @@ models
| 7 | Source: reqwest::get; ReturnValue.Future.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 | | 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 | | 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]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; 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 | | 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint |
| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; 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::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::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | | 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint |
| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; 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 futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 16 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | | 17 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint |
| 18 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | | 18 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint |
| 19 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | | 19 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 20 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | | 20 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value |
| 21 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | | 21 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value |
| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 22 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 23 | Summary: <core::option::Option>::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 23 | Summary: <futures_rustls::TlsConnector>::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 24 | Summary: <core::pin::Pin>::new; Argument[0].Reference; ReturnValue; value | | 24 | Summary: <futures_util::io::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 25 | Summary: <core::pin::Pin>::new; Argument[0]; ReturnValue; value | | 25 | Summary: <reqwest::async_impl::response::Response>::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 26 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 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: <futures_rustls::TlsConnector>::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 27 | Summary: <reqwest::async_impl::response::Response>::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint |
| 28 | Summary: <futures_util::io::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint | | 28 | Summary: <reqwest::blocking::response::Response>::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 29 | Summary: <reqwest::async_impl::response::Response>::bytes; Argument[self]; ReturnValue.Future.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::async_impl::response::Response>::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | | 30 | Summary: <reqwest::blocking::response::Response>::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint |
| 31 | Summary: <reqwest::async_impl::response::Response>::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 31 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 32 | Summary: <reqwest::blocking::response::Response>::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 32 | Summary: <tokio::net::tcp::stream::TcpStream>::peek; Argument[self].Reference; Argument[0].Reference; taint |
| 33 | Summary: <reqwest::blocking::response::Response>::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 33 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read; Argument[self].Reference; Argument[0].Reference; taint |
| 34 | Summary: <reqwest::blocking::response::Response>::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 34 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint |
| 35 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 36 | Summary: <tokio::net::tcp::stream::TcpStream>::peek; Argument[self]; Argument[0].Reference; taint |
| 37 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read; Argument[self]; Argument[0].Reference; taint |
| 38 | Summary: <tokio::net::tcp::stream::TcpStream>::try_read_buf; Argument[self]; Argument[0].Reference; taint |
edges edges
| test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | 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: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: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:33 | | test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:29 |
| test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | 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: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: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: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:26 | | 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:33 | | 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:26 | | test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:22 |
| test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | 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: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: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:26 | | 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:34 | | 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:26 | | 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:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | 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: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: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:26 | | 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:32 | | 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:26 | | test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:22 |
| test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | 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: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: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: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: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:31 | | test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:27 |
| test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | 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: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 | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | |
@@ -74,21 +70,23 @@ 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: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: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: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:29 | | test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:25 |
| test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | 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: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 | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | |
| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:17 | request1 | provenance | |
| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:36 | request1 | provenance | |
| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 |
| test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | 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: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: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:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | 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: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:23 | | test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:19 |
| test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | 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: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:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | 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: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 | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | |
@@ -105,10 +103,11 @@ edges
| test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | |
| test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 |
| test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | |
| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:20 | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | |
| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | | 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: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: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:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | | 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: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:22 | buffer[0] | provenance | |
@@ -117,32 +116,37 @@ edges
| 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: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: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: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:44:185:52 | [post] &mut line [&ref] | provenance | MaD:19 | | 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:21 | | test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:17 |
| test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | | 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:35 | | 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:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | 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: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 | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | |
| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:36 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:17:232:28 | tokio_stream | provenance | |
| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:22 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:18:236:29 | tokio_stream | provenance | |
| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:19:252:30 | tokio_stream | provenance | |
| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:19:275:30 | tokio_stream | provenance | |
| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | | test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 |
| test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | 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: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: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:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | 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: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: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:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | | 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: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:23 | buffer2[0] | provenance | |
| test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | | | test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | |
| test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | | 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:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | 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: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: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:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | 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: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 | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | |
@@ -157,75 +161,65 @@ edges
| test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | |
| test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | |
| test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | |
| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 |
| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:16 |
| test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | |
| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | | 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: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: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:27 | | test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:23 |
| test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | | 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:387:19:387:24 | pinned | provenance | |
| test.rs:386:17:386:26 | mut pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | |
| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:387:19:387:24 | pinned [&ref] | provenance | | | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | |
| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:9 |
| test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | | test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | |
| test.rs:386:30:386:50 | ...::new(...) [&ref] | test.rs:386:17:386:26 | mut pinned [&ref] | 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:24 | | 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(...) [&ref] | provenance | MaD:25 | | test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
| test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | | 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 | test.rs:387:18:387:24 | &pinned | provenance | |
| test.rs:387:19:387:24 | pinned [&ref] | 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:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | | 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:391:23:391:28 | buffer | provenance | |
| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | 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:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | |
| test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | | 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:15 | | 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:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | | 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: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:40 | buffer1[...] | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | |
| test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | | 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:15 | | test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:13 |
| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | | 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:40 | buffer2[...] | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | |
| test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | | 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:409:15:409:21 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 | | test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:32 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 | | test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:32 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 |
| 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:493:31:493:37 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:11 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | |
| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 |
| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 |
| test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut 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:28 | | test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:24 |
| test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | | 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:414:19:414:24 | pinned | provenance | |
| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | |
| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:414:19:414:24 | pinned [&ref] | provenance | | | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | |
| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
| test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | | test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | |
| test.rs:413:30:413:51 | ...::new(...) [&ref] | test.rs:413:17:413:26 | mut pinned [&ref] | 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:24 | | 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(...) [&ref] | provenance | MaD:25 | | test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
| test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | | 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 | test.rs:414:18:414:24 | &pinned | provenance | |
| test.rs:414:19:414:24 | pinned [&ref] | 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: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: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:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | | 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: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:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | |
@@ -233,10 +227,8 @@ edges
| test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | 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: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:8 |
| test.rs:423:27:423:48 | ...::new(...) [&ref] | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | | 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:24 | | 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(...) [&ref] | provenance | MaD:25 |
| test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | | 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: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 | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | |
@@ -245,57 +237,59 @@ edges
| test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | | 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: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: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:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | | 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: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 | | | test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | |
| test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | | | test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | |
| test.rs:444:17:444:26 | mut pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:444:17:444:26 | mut pinned | test.rs:447:30:447:35 | pinned | provenance | |
| test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:445:19:445:24 | pinned [&ref] | provenance | | | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | |
| test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:9 |
| test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | | test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | |
| test.rs:444:30:444:51 | ...::new(...) [&ref] | test.rs:444:17:444:26 | mut pinned [&ref] | 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:24 | | 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(...) [&ref] | provenance | MaD:25 | | test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
| test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | | 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 | test.rs:445:18:445:24 | &pinned | provenance | |
| test.rs:445:19:445:24 | pinned [&ref] | 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:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | | 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:448:19:448:24 | buffer | provenance | |
| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | 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:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | |
| test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | | 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:15 | | 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:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | | 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: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:40 | buffer1[...] | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | |
| test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | | 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:15 | | test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:13 |
| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | | 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:40 | buffer2[...] | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | |
| test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | | 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:468:19:468:24 | pinned | provenance | |
| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | |
| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:468:19:468:24 | pinned [&ref] | provenance | | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | |
| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 |
| test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | |
| test.rs:467:30:467:51 | ...::new(...) [&ref] | test.rs:467:17:467:26 | mut pinned [&ref] | 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:24 | | 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(...) [&ref] | provenance | MaD:25 | | test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:21 |
| test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | 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 | test.rs:468:18:468:24 | &pinned | provenance | |
| test.rs:468:19:468:24 | pinned [&ref] | 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: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: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:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | | 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: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: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: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: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: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:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | | 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: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: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:13 | | test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 |
| test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | | 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: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:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | |
@@ -303,7 +297,7 @@ edges
| test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | | 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: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: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:17 | | test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:14 |
| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | | 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: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 | | | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | |
@@ -359,12 +353,14 @@ nodes
| test.rs:29:24:29:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] |
| test.rs:29:24:29:56 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:29:24:29:56 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:29:24:29:57 | TryExpr | semmle.label | TryExpr | | test.rs:29:24:29:57 | TryExpr | semmle.label | TryExpr |
| test.rs:30:10:30:17 | request1 | semmle.label | request1 |
| test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] |
| test.rs:30:10:30:31 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:30:10:30:31 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:30:10:30:32 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:30:10:30:32 | TryExpr [Some] | semmle.label | TryExpr [Some] |
| test.rs:30:10:30:41 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:30:10:30:41 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:31:15:31:25 | Some(...) [Some] | semmle.label | Some(...) [Some] | | test.rs:31:15:31:25 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| test.rs:31:20:31:24 | chunk | semmle.label | chunk | | test.rs:31:20:31:24 | chunk | semmle.label | chunk |
| test.rs:31:29:31:36 | request1 | semmle.label | request1 |
| test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] |
| test.rs:31:29:31:50 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:31:29:31:50 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:31:29:31:51 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:31:29:31:51 | TryExpr [Some] | semmle.label | TryExpr [Some] |
@@ -388,6 +384,7 @@ nodes
| test.rs:155:26:155:53 | ...::connect | semmle.label | ...::connect | | test.rs:155:26:155:53 | ...::connect | semmle.label | ...::connect |
| test.rs:155:26:155:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] |
| test.rs:155:26:155:63 | TryExpr | semmle.label | TryExpr | | test.rs:155:26:155:63 | TryExpr | semmle.label | TryExpr |
| test.rs:162:17:162:22 | stream | semmle.label | stream |
| test.rs:162:29:162:39 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:162:34:162:39 | [post] buffer | semmle.label | [post] buffer | | 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:14:165:20 | &buffer | semmle.label | &buffer |
@@ -401,6 +398,7 @@ nodes
| test.rs:182:34:182:64 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:182:34:182:64 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:182:34:182:74 | ... .take(...) | semmle.label | ... .take(...) | | test.rs:182:34:182:74 | ... .take(...) | semmle.label | ... .take(...) |
| test.rs:182:58:182:63 | stream | semmle.label | stream | | test.rs:182:58:182:63 | stream | semmle.label | stream |
| test.rs:185:27:185:32 | reader | semmle.label | reader |
| test.rs:185:44:185:52 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | | test.rs:185:44:185:52 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] |
| test.rs:185:49:185:52 | [post] line | semmle.label | [post] line | | test.rs:185:49:185:52 | [post] line | semmle.label | [post] line |
| test.rs:192:34:192:38 | &line | semmle.label | &line | | test.rs:192:34:192:38 | &line | semmle.label | &line |
@@ -410,8 +408,10 @@ nodes
| test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] |
| test.rs:224:28:224:72 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:224:28:224:72 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:224:28:224:73 | TryExpr | semmle.label | TryExpr | | test.rs:224:28:224:73 | TryExpr | semmle.label | TryExpr |
| test.rs:232:17:232:28 | tokio_stream | semmle.label | tokio_stream |
| test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] |
| test.rs:232:40:232:46 | [post] buffer1 | semmle.label | [post] buffer1 | | test.rs:232:40:232:46 | [post] buffer1 | semmle.label | [post] buffer1 |
| test.rs:236:18:236:29 | tokio_stream | semmle.label | tokio_stream |
| test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] |
| test.rs:236:41:236:47 | [post] buffer2 | semmle.label | [post] buffer2 | | 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:14:239:21 | &buffer1 | semmle.label | &buffer1 |
@@ -420,10 +420,12 @@ nodes
| test.rs:243:14:243:21 | &buffer2 | semmle.label | &buffer2 | | test.rs:243:14:243:21 | &buffer2 | semmle.label | &buffer2 |
| test.rs:243:15:243:21 | buffer2 | semmle.label | buffer2 | | test.rs:243:15:243:21 | buffer2 | semmle.label | buffer2 |
| test.rs:244:14:244:23 | buffer2[0] | semmle.label | buffer2[0] | | 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] | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:252:46:252:51 | [post] buffer | semmle.label | [post] buffer | | test.rs:252:46:252:51 | [post] buffer | semmle.label | [post] buffer |
| test.rs:259:26:259:32 | &buffer | semmle.label | &buffer | | test.rs:259:26:259:32 | &buffer | semmle.label | &buffer |
| test.rs:259:27:259:32 | buffer | semmle.label | buffer | | test.rs:259:27:259:32 | buffer | semmle.label | buffer |
| test.rs:275:19:275:30 | tokio_stream | semmle.label | tokio_stream |
| test.rs:275:45:275:55 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:275:50:275:55 | [post] buffer | semmle.label | [post] buffer | | test.rs:275:50:275:55 | [post] buffer | semmle.label | [post] buffer |
| test.rs:282:26:282:32 | &buffer | semmle.label | &buffer | | test.rs:282:26:282:32 | &buffer | semmle.label | &buffer |
@@ -443,14 +445,15 @@ nodes
| test.rs:381:14:381:20 | &reader | semmle.label | &reader | | test.rs:381:14:381:20 | &reader | semmle.label | &reader |
| test.rs:381:15:381:20 | reader | semmle.label | reader | | test.rs:381:15:381:20 | reader | semmle.label | reader |
| test.rs:386:17:386:26 | mut pinned | semmle.label | mut pinned | | test.rs:386:17:386:26 | mut pinned | semmle.label | mut pinned |
| test.rs:386:17:386:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
| test.rs:386:30:386:50 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:386:30:386:50 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:386:30:386:50 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
| test.rs:386:39:386:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | | test.rs:386:39:386:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] |
| test.rs:386:44:386:49 | reader | semmle.label | reader | | test.rs:386:44:386:49 | reader | semmle.label | reader |
| test.rs:387:18:387:24 | &pinned | semmle.label | &pinned | | test.rs:387:18:387:24 | &pinned | semmle.label | &pinned |
| test.rs:387:19:387:24 | pinned | semmle.label | pinned | | test.rs:387:19:387:24 | pinned | semmle.label | pinned |
| test.rs:387:19:387:24 | pinned [&ref] | semmle.label | pinned [&ref] | | test.rs:387:19:387:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
| test.rs:389:30:389:35 | pinned | semmle.label | pinned |
| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:389:61:389:66 | [post] buffer | semmle.label | [post] buffer | | test.rs:389:61:389:66 | [post] buffer | semmle.label | [post] buffer |
| test.rs:391:22:391:28 | &buffer | semmle.label | &buffer | | test.rs:391:22:391:28 | &buffer | semmle.label | &buffer |
@@ -474,15 +477,16 @@ nodes
| test.rs:409:14:409:21 | &reader2 | semmle.label | &reader2 | | test.rs:409:14:409:21 | &reader2 | semmle.label | &reader2 |
| test.rs:409:15:409:21 | reader2 | semmle.label | reader2 | | test.rs:409:15:409:21 | reader2 | semmle.label | reader2 |
| test.rs:413:17:413:26 | mut pinned | semmle.label | mut pinned | | test.rs:413:17:413:26 | mut pinned | semmle.label | mut pinned |
| test.rs:413:17:413:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
| test.rs:413:30:413:51 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:413:30:413:51 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:413:30:413:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
| test.rs:413:39:413:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | | test.rs:413:39:413:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
| test.rs:413:44:413:50 | reader2 | semmle.label | reader2 | | test.rs:413:44:413:50 | reader2 | semmle.label | reader2 |
| test.rs:414:18:414:24 | &pinned | semmle.label | &pinned | | test.rs:414:18:414:24 | &pinned | semmle.label | &pinned |
| test.rs:414:19:414:24 | pinned | semmle.label | pinned | | test.rs:414:19:414:24 | pinned | semmle.label | pinned |
| test.rs:414:19:414:24 | pinned [&ref] | semmle.label | pinned [&ref] | | test.rs:414:19:414:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
| test.rs:416:17:416:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | | test.rs:416:17:416:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
| test.rs:416:26:416:31 | pinned | semmle.label | pinned |
| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] |
| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] |
| test.rs:417:32:417:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | | test.rs:417:32:417:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
@@ -492,7 +496,6 @@ nodes
| test.rs:419:22:419:24 | buf | semmle.label | buf | | test.rs:419:22:419:24 | buf | semmle.label | buf |
| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] |
| test.rs:423:27:423:48 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:423:27:423:48 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:423:27:423:48 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] |
| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] |
| test.rs:423:36:423:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | | test.rs:423:36:423:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
| test.rs:423:41:423:47 | reader2 | semmle.label | reader2 | | test.rs:423:41:423:47 | reader2 | semmle.label | reader2 |
@@ -504,19 +507,21 @@ nodes
| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] |
| test.rs:427:26:427:28 | buf | semmle.label | buf | | test.rs:427:26:427:28 | buf | semmle.label | buf |
| test.rs:437:17:437:22 | buffer | semmle.label | buffer | | test.rs:437:17:437:22 | buffer | semmle.label | buffer |
| test.rs:437:26:437:32 | reader2 | semmle.label | reader2 |
| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] |
| test.rs:437:26:437:49 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:437:26:437:49 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:437:26:437:50 | TryExpr | semmle.label | TryExpr | | test.rs:437:26:437:50 | TryExpr | semmle.label | TryExpr |
| test.rs:438:18:438:23 | buffer | semmle.label | buffer | | test.rs:438:18:438:23 | buffer | semmle.label | buffer |
| test.rs:444:17:444:26 | mut pinned | semmle.label | mut pinned | | test.rs:444:17:444:26 | mut pinned | semmle.label | mut pinned |
| test.rs:444:17:444:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
| test.rs:444:30:444:51 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:444:30:444:51 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:444:30:444:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
| test.rs:444:39:444:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | | test.rs:444:39:444:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
| test.rs:444:44:444:50 | reader2 | semmle.label | reader2 | | test.rs:444:44:444:50 | reader2 | semmle.label | reader2 |
| test.rs:445:18:445:24 | &pinned | semmle.label | &pinned | | test.rs:445:18:445:24 | &pinned | semmle.label | &pinned |
| test.rs:445:19:445:24 | pinned | semmle.label | pinned | | test.rs:445:19:445:24 | pinned | semmle.label | pinned |
| test.rs:445:19:445:24 | pinned [&ref] | semmle.label | pinned [&ref] | | test.rs:445:19:445:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
| test.rs:447:30:447:35 | pinned | semmle.label | pinned |
| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:447:61:447:66 | [post] buffer | semmle.label | [post] buffer | | test.rs:447:61:447:66 | [post] buffer | semmle.label | [post] buffer |
| test.rs:448:18:448:24 | &buffer | semmle.label | &buffer | | test.rs:448:18:448:24 | &buffer | semmle.label | &buffer |
@@ -535,15 +540,16 @@ nodes
| test.rs:462:18:462:40 | &... | semmle.label | &... | | test.rs:462:18:462:40 | &... | semmle.label | &... |
| test.rs:462:19:462:40 | 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 | semmle.label | mut pinned |
| test.rs:467:17:467:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] |
| test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:467:30:467:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] |
| test.rs:467:39:467:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | | test.rs:467:39:467:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] |
| test.rs:467:44:467:50 | reader2 | semmle.label | reader2 | | test.rs:467:44:467:50 | reader2 | semmle.label | reader2 |
| test.rs:468:18:468:24 | &pinned | semmle.label | &pinned | | test.rs:468:18:468:24 | &pinned | semmle.label | &pinned |
| test.rs:468:19:468:24 | pinned | semmle.label | pinned | | test.rs:468:19:468:24 | pinned | semmle.label | pinned |
| test.rs:468:19:468:24 | pinned [&ref] | semmle.label | pinned [&ref] | | test.rs:468:19:468:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] |
| test.rs:470:17:470:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | | test.rs:470:17:470:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
| test.rs:470:26:470:31 | pinned | semmle.label | pinned |
| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] |
| test.rs:471:18:471:24 | &buffer | semmle.label | &buffer | | test.rs:471:18:471:24 | &buffer | semmle.label | &buffer |
| test.rs:471:19:471:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | | test.rs:471:19:471:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] |
@@ -552,6 +558,7 @@ nodes
| test.rs:472:35:472:37 | buf | semmle.label | buf | | test.rs:472:35:472:37 | buf | semmle.label | buf |
| test.rs:473:22:473:24 | buf | semmle.label | buf | | test.rs:473:22:473:24 | buf | semmle.label | buf |
| test.rs:479:17:479:22 | buffer | semmle.label | buffer | | test.rs:479:17:479:22 | buffer | semmle.label | buffer |
| test.rs:479:26:479:32 | reader2 | semmle.label | reader2 |
| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] |
| test.rs:479:26:479:49 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:479:26:479:49 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:479:26:479:50 | TryExpr | semmle.label | TryExpr | | test.rs:479:26:479:50 | TryExpr | semmle.label | TryExpr |

View File

@@ -1,241 +1,257 @@
models models
| 1 | Source: std::io::stdio::stdin; ReturnValue; stdin | | 1 | Source: std::io::stdio::stdin; ReturnValue; stdin |
| 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | | 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin |
| 3 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | | 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>::fill_buf; Argument[self]; 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>::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_line; Argument[self]; 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>::read_until; Argument[self]; Argument[1].Reference; taint | | 7 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint |
| 8 | 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>::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; Argument[self]; 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_exact; Argument[self]; 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_end; Argument[self]; Argument[0].Reference; taint | | 12 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint |
| 13 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; 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>::fill_buf; Argument[self]; 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>::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_line; Argument[self]; 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>::read_until; Argument[self]; 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_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; Argument[self]; 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_buf; Argument[self]; 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_exact; Argument[self]; 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_f32; Argument[self]; 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_i16; Argument[self]; 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_i64_le; Argument[self]; 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_end; Argument[self]; 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_to_string; Argument[self]; 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: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; 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::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: <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]; ReturnValue; taint | | 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 | | 31 | Summary: <std::io::buffered::bufreader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 32 | Summary: <std::io::stdio::Stdin as std::io::Read>::read; Argument[self]; Argument[0]; taint | | 32 | Summary: <std::io::stdio::Stdin>::lock; Argument[self].Reference; ReturnValue; taint |
| 33 | Summary: <std::io::stdio::Stdin as std::io::Read>::read_exact; Argument[self]; Argument[0]; taint | | 33 | Summary: <tokio::io::util::buf_reader::BufReader>::buffer; Argument[self].Reference; ReturnValue.Reference; taint |
| 34 | Summary: <std::io::stdio::Stdin as std::io::Read>::read_to_string; Argument[self]; Argument[0]; taint | | 34 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 35 | Summary: <std::io::stdio::Stdin>::lock; Argument[self]; 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::buf_reader::BufReader>::buffer; Argument[self]; ReturnValue; 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 |
| 37 | Summary: <tokio::io::util::buf_reader::BufReader>::new; Argument[0]; ReturnValue; taint |
| 38 | Summary: <tokio::io::util::lines::Lines>::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
| 39 | Summary: <tokio::io::util::split::Split>::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint |
edges 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: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 | provenance | MaD:32 | | 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 | test.rs:14:15:14:20 | buffer | provenance | |
| test.rs:13:44:13:54 | [post] &mut buffer [&ref] | test.rs:13:49:13:54 | [post] buffer | provenance | | | 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: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: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: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:12 | | test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:11 |
| test.rs:19:51:19:61 | [post] &mut buffer [&ref] | test.rs:19:56:19:61 | [post] buffer | provenance | | | 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: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: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: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 | provenance | MaD:34 | | 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 | test.rs:26:15:26:20 | buffer | provenance | |
| test.rs:25:54:25:64 | [post] &mut buffer [&ref] | test.rs:25:59:25:64 | [post] buffer | provenance | | | 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: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: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:35 | ...::stdin | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 |
| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:35 | | test.rs:31:22:31: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:13 | | test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:12 |
| test.rs:31:61:31:71 | [post] &mut buffer [&ref] | test.rs:31:66:31:71 | [post] buffer | provenance | | | 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: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: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: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 | provenance | MaD:33 | | 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 | test.rs:38:15:38:20 | buffer | provenance | |
| test.rs:37:37:37:47 | [post] &mut buffer [&ref] | test.rs:37:42:37:47 | [post] buffer | provenance | | | 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: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: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: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:9 | | test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:8 |
| test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | | | 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:36 | reader.fill_buf() [Ok] | provenance | MaD:4 | | 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: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: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:31 |
| test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | | | 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:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | | | 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: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: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:34 | reader.buffer() | provenance | MaD:30 | | 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: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: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:31 |
| test.rs:55:13:55:16 | data | test.rs:56:15:56:18 | data | provenance | | | test.rs:55:13:55:16 | data [&ref] | test.rs:56:15:56:18 | data [&ref] | provenance | |
| test.rs:55:20:55:34 | reader.buffer() | test.rs:55:13:55:16 | data | provenance | | | test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:30 |
| test.rs:56:15:56:18 | data | test.rs:56:14:56:18 | &data | provenance | | | test.rs:55:20:55:34 | reader.buffer() [&ref] | test.rs:55:13:55:16 | data [&ref] | provenance | |
| test.rs:61:13:61:22 | mut reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:6 | | 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: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: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: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:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | | | 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: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:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | |
| test.rs:68:13:68:22 | mut reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:7 | | 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: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: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: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:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | | | 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: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:22 | buffer[0] | provenance | |
| test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | | | test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | |
| test.rs:75:13:75:28 | mut reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | 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:51 | reader_split.next() [Some, Ok] | provenance | MaD:3 | | 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:8 | | test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:7 |
| test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | | | 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: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:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:31 |
| 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:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:29 |
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | 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:77:19:77:29 | Some(...) [Some, Ok] | test.rs:77:24:77:28 | chunk [Ok] | provenance | | | 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:31 | chunk.unwrap() | provenance | MaD:29 | | 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:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | | | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | |
| test.rs:83:13:83:18 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:5 | | test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:28 |
| 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: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: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: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:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | | | 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:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:19 | | 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: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: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:33:111:43 | [post] &mut buffer [&ref] | test.rs:111:38:111:43 | [post] buffer | provenance | | | 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: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:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | |
| test.rs:116:13:116:21 | mut stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:25 | | 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: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: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:40:118:50 | [post] &mut buffer [&ref] | test.rs:118:45:118:50 | [post] buffer | provenance | | | 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: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:119:15:119:20 | buffer | test.rs:119:14:119:20 | &buffer | provenance | |
| test.rs:123:13:123:21 | mut stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:26 | | 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: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: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:43:125:53 | [post] &mut buffer [&ref] | test.rs:125:48:125:53 | [post] buffer | provenance | | | 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: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:126:15:126:20 | buffer | test.rs:126:14:126:20 | &buffer | provenance | |
| test.rs:130:13:130:21 | mut stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:21 | | 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: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: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:26:132:36 | [post] &mut buffer [&ref] | test.rs:132:31:132:36 | [post] buffer | provenance | | | 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: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 | | | test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | |
| test.rs:137:13:137:21 | mut stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:27 | | test.rs:137:13:137:21 | mut stdin | test.rs:138:18:138:22 | stdin | provenance | |
| test.rs:137:13:137:21 | mut stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:23 | | test.rs:137:13:137:21 | mut stdin | test.rs:139:18:139:22 | stdin | provenance | |
| test.rs:137:13:137:21 | mut stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:22 | | test.rs:137:13:137:21 | mut stdin | test.rs:140:18:140:22 | stdin | provenance | |
| test.rs:137:13:137:21 | mut stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:24 | | test.rs:137:13:137:21 | mut stdin | test.rs:141:18:141:22 | stdin | provenance | |
| 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: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: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: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:32 | stdin.read_u8() [future, Ok] | test.rs:138:18:138:38 | await ... [Ok] | provenance | | | 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: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: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: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:33 | stdin.read_i16() [future, Ok] | test.rs:139:18:139:39 | await ... [Ok] | provenance | | | 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: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: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: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:33 | stdin.read_f32() [future, Ok] | test.rs:140:18:140:39 | await ... [Ok] | provenance | | | 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: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: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: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:36 | stdin.read_i64_le() [future, Ok] | test.rs:141:18:141:42 | await ... [Ok] | provenance | | | 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: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:141:18:141:43 | TryExpr | test.rs:141:13:141:14 | v4 | provenance | |
| test.rs:149:13:149:21 | mut stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:20 | | 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: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: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:24:151:34 | [post] &mut buffer [&ref] | test.rs:151:29:151:34 | [post] buffer | provenance | | | 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: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: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:36 | reader.fill_buf() [future, Ok] | provenance | MaD:14 | | 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: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:67 | ...::stdin | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:37 | | test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:34 |
| test.rs:159:13:159:16 | data | test.rs:160:15:160:18 | data | provenance | | | 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:36 | reader.fill_buf() [future, Ok] | test.rs:159:20:159:42 | await ... [Ok] | provenance | | | 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: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 | | | test.rs:159:20:159:43 | TryExpr | test.rs:159:13:159:16 | data | provenance | |
| test.rs:160:15:160:18 | data | test.rs:160:14:160:18 | &data | provenance | | | test.rs:160:15:160:18 | data | test.rs:160:14:160:18 | &data | provenance | |
| test.rs:164:13:164:18 | reader | test.rs:165:20:165:34 | reader.buffer() | provenance | MaD:36 | | 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: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:63 | ...::stdin | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:37 | | test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:34 |
| test.rs:165:13:165:16 | data | test.rs:166:15:166:18 | data | provenance | | | test.rs:165:13:165:16 | data [&ref] | test.rs:166:15:166:18 | data [&ref] | provenance | |
| test.rs:165:20:165:34 | reader.buffer() | test.rs:165:13:165:16 | data | provenance | | | test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:33 |
| test.rs:166:15:166:18 | data | test.rs:166:14:166:18 | &data | provenance | | | test.rs:165:20:165:34 | reader.buffer() [&ref] | test.rs:165:13:165:16 | data [&ref] | provenance | |
| test.rs:171:13:171:22 | mut reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:16 | | 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: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:67 | ...::stdin | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:37 | | test.rs: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:172:26:172:36 | [post] &mut buffer [&ref] | test.rs:172:31:172:36 | [post] buffer | provenance | | | 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: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:173:15:173:20 | buffer | test.rs:173:14:173:20 | &buffer | provenance | |
| test.rs:178:13:178:22 | mut reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:17 | | 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: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:67 | ...::stdin | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:37 | | test.rs: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:179:33:179:43 | [post] &mut buffer [&ref] | test.rs:179:38:179:43 | [post] buffer | provenance | | | 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: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:22 | buffer[0] | provenance | |
| test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | | test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | |
| test.rs:185:13:185:28 | mut reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | | 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:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | | 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:18 | | test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:17 |
| test.rs:185:32:185:88 | ... .split(...) | test.rs:185:13:185:28 | mut reader_split | provenance | | | 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:73 | ...::stdin | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:37 | | test.rs: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: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: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: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:28 | | test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:27 |
| test.rs:187:19:187:29 | Some(...) [Some] | test.rs:187:24:187:28 | chunk | provenance | | | 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: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:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:187:33:187:65 | await ... [Ok, Some] | provenance | | | 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: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: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:38 | reader.lines() | provenance | MaD:15 | | 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: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:63 | ...::stdin | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 |
| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:37 | | test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:34 |
| test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | | test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:18 | lines | provenance | |
| test.rs:194:13:194:21 | mut lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | | 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:38 | reader.lines() | test.rs:194:13:194:21 | mut lines | provenance | | | 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:30 | lines.next_line() [future, Ok, Some] | test.rs:195:14:195:36 | await ... [Ok, Some] | provenance | | | 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: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:28 | | test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:27 |
| test.rs:196:19:196:28 | Some(...) [Some] | test.rs:196:24:196:27 | line | provenance | | | 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: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:48 | lines.next_line() [future, Ok, Some] | test.rs:196:32:196:54 | await ... [Ok, Some] | provenance | | | 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: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 | | | test.rs:196:32:196:55 | TryExpr [Some] | test.rs:196:19:196:28 | Some(...) [Some] | provenance | |
nodes nodes
| test.rs:13:22:13:35 | ...::stdin | semmle.label | ...::stdin | | test.rs:13:22:13:35 | ...::stdin | semmle.label | ...::stdin |
| test.rs:13:22:13:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:13:22:13:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:13:44:13:54 | [post] &mut buffer | semmle.label | [post] &mut buffer |
| test.rs:13:44:13:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:13:49:13:54 | [post] buffer | semmle.label | [post] buffer | | test.rs:13:49:13:54 | [post] buffer | semmle.label | [post] buffer |
| test.rs:14:14:14:20 | &buffer | semmle.label | &buffer | | test.rs:14:14:14:20 | &buffer | semmle.label | &buffer |
@@ -248,7 +264,6 @@ nodes
| test.rs:20:15:20:20 | buffer | semmle.label | buffer | | test.rs:20:15:20:20 | buffer | semmle.label | buffer |
| test.rs:25:22:25:35 | ...::stdin | semmle.label | ...::stdin | | test.rs:25:22:25:35 | ...::stdin | semmle.label | ...::stdin |
| test.rs:25:22:25:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:25:22:25:37 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:25:54:25:64 | [post] &mut buffer | semmle.label | [post] &mut buffer |
| test.rs:25:54:25:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:25:59:25:64 | [post] buffer | semmle.label | [post] buffer | | test.rs:25:59:25:64 | [post] buffer | semmle.label | [post] buffer |
| test.rs:26:14:26:20 | &buffer | semmle.label | &buffer | | test.rs:26:14:26:20 | &buffer | semmle.label | &buffer |
@@ -262,7 +277,6 @@ nodes
| test.rs:32:15:32:20 | buffer | semmle.label | buffer | | test.rs:32:15:32:20 | buffer | semmle.label | buffer |
| test.rs:37:9:37:22 | ...::stdin | semmle.label | ...::stdin | | test.rs:37:9:37:22 | ...::stdin | semmle.label | ...::stdin |
| test.rs:37:9:37:24 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:37:9:37:24 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:37:37:37:47 | [post] &mut buffer | semmle.label | [post] &mut buffer |
| test.rs:37:37:37:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:37:42:37:47 | [post] buffer | semmle.label | [post] buffer | | test.rs:37:42:37:47 | [post] buffer | semmle.label | [post] buffer |
| test.rs:38:14:38:20 | &buffer | semmle.label | &buffer | | test.rs:38:14:38:20 | &buffer | semmle.label | &buffer |
@@ -276,6 +290,7 @@ nodes
| test.rs:48:50:48:63 | ...::stdin | semmle.label | ...::stdin | | test.rs:48:50:48:63 | ...::stdin | semmle.label | ...::stdin |
| test.rs:48:50:48:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:48:50:48:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:49:13:49:16 | data | semmle.label | data | | test.rs:49:13:49:16 | data | semmle.label | data |
| test.rs:49:20:49:25 | reader | semmle.label | reader |
| test.rs:49:20:49:36 | reader.fill_buf() [Ok] | semmle.label | reader.fill_buf() [Ok] | | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | semmle.label | reader.fill_buf() [Ok] |
| test.rs:49:20:49:37 | TryExpr | semmle.label | TryExpr | | test.rs:49:20:49:37 | TryExpr | semmle.label | TryExpr |
| test.rs:50:14:50:18 | &data | semmle.label | &data | | test.rs:50:14:50:18 | &data | semmle.label | &data |
@@ -284,14 +299,16 @@ nodes
| test.rs:54:22:54:62 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:54:22:54:62 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:54:46:54:59 | ...::stdin | semmle.label | ...::stdin | | test.rs:54:46:54:59 | ...::stdin | semmle.label | ...::stdin |
| test.rs:54:46:54:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:54:46:54:61 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:55:13:55:16 | data | semmle.label | data | | test.rs:55:13:55:16 | data [&ref] | semmle.label | data [&ref] |
| test.rs:55:20:55:34 | reader.buffer() | semmle.label | reader.buffer() | | test.rs:55:20:55:25 | reader | semmle.label | reader |
| test.rs:55:20:55:34 | reader.buffer() [&ref] | semmle.label | reader.buffer() [&ref] |
| test.rs:56:14:56:18 | &data | semmle.label | &data | | test.rs:56:14:56:18 | &data | semmle.label | &data |
| test.rs:56:15:56:18 | data | semmle.label | data | | test.rs:56:15:56:18 | data [&ref] | semmle.label | data [&ref] |
| test.rs:61:13:61:22 | mut reader | semmle.label | mut reader | | test.rs:61:13:61:22 | mut reader | semmle.label | mut reader |
| test.rs:61:26:61:66 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:61:26:61:66 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:61:50:61:63 | ...::stdin | semmle.label | ...::stdin | | test.rs:61:50:61:63 | ...::stdin | semmle.label | ...::stdin |
| test.rs:61:50:61:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:61:50:61:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:62:9:62:14 | reader | semmle.label | reader |
| test.rs:62:26:62:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:62:31:62:36 | [post] buffer | semmle.label | [post] buffer | | test.rs:62:31:62:36 | [post] buffer | semmle.label | [post] buffer |
| test.rs:63:14:63:20 | &buffer | semmle.label | &buffer | | test.rs:63:14:63:20 | &buffer | semmle.label | &buffer |
@@ -300,6 +317,7 @@ nodes
| test.rs:68:26:68:66 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:68:26:68:66 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:68:50:68:63 | ...::stdin | semmle.label | ...::stdin | | test.rs:68:50:68:63 | ...::stdin | semmle.label | ...::stdin |
| test.rs:68:50:68:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:68:50:68:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:69:9:69:14 | reader | semmle.label | reader |
| test.rs:69:33:69:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:69:38:69:43 | [post] buffer | semmle.label | [post] buffer | | 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:14:70:20 | &buffer | semmle.label | &buffer |
@@ -310,22 +328,27 @@ nodes
| test.rs:75:32:75:84 | ... .split(...) | semmle.label | ... .split(...) | | test.rs:75:32:75:84 | ... .split(...) | semmle.label | ... .split(...) |
| test.rs:75:56:75:69 | ...::stdin | semmle.label | ...::stdin | | test.rs:75:56:75:69 | ...::stdin | semmle.label | ...::stdin |
| test.rs:75:56:75:71 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:75:56:75:71 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:76:14:76:25 | reader_split | semmle.label | reader_split |
| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] |
| test.rs:76:14:76:41 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | | test.rs:76:14:76:41 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] |
| test.rs:76:14:76:50 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:76:14:76:50 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:77:19:77:29 | Some(...) [Some, Ok] | semmle.label | Some(...) [Some, Ok] | | test.rs:77:19:77:29 | Some(...) [Some, Ok] | semmle.label | Some(...) [Some, Ok] |
| test.rs:77:24:77:28 | chunk [Ok] | semmle.label | chunk [Ok] | | test.rs:77:24:77:28 | chunk [Ok] | semmle.label | chunk [Ok] |
| test.rs:77:33:77:44 | reader_split | semmle.label | reader_split |
| test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] |
| test.rs:78:18:78:22 | chunk [Ok] | semmle.label | chunk [Ok] |
| test.rs:78:18:78:31 | chunk.unwrap() | semmle.label | chunk.unwrap() | | test.rs:78:18:78:31 | chunk.unwrap() | semmle.label | chunk.unwrap() |
| test.rs:83:13:83:18 | reader | semmle.label | reader | | test.rs:83:13:83:18 | reader | semmle.label | reader |
| test.rs:83:22:83:62 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:83:22:83:62 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:83:46:83:59 | ...::stdin | semmle.label | ...::stdin | | test.rs:83:46:83:59 | ...::stdin | semmle.label | ...::stdin |
| test.rs:83:46:83:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:83:46:83:61 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:84:21:84:26 | reader | semmle.label | reader |
| test.rs:84:21:84:34 | reader.lines() | semmle.label | reader.lines() | | test.rs:84:21:84:34 | reader.lines() | semmle.label | reader.lines() |
| test.rs:85:18:85:21 | line | semmle.label | line | | test.rs:85:18:85:21 | line | semmle.label | line |
| test.rs:109:13:109:21 | mut stdin | semmle.label | mut stdin | | test.rs:109:13:109:21 | mut stdin | semmle.label | mut stdin |
| test.rs:109:25:109:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:109:25:109:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:109:25:109:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:109:25:109:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:111:22:111:26 | stdin | semmle.label | stdin |
| test.rs:111:33:111:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:111:38:111:43 | [post] buffer | semmle.label | [post] buffer | | test.rs:111:38:111:43 | [post] buffer | semmle.label | [post] buffer |
| test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | | test.rs:112:14:112:20 | &buffer | semmle.label | &buffer |
@@ -333,6 +356,7 @@ nodes
| test.rs:116:13:116:21 | mut stdin | semmle.label | mut stdin | | test.rs:116:13:116:21 | mut stdin | semmle.label | mut stdin |
| test.rs:116:25:116:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:116:25:116:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:116:25:116:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:116:25:116:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:118:22:118:26 | stdin | semmle.label | stdin |
| test.rs:118:40:118:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:118:45:118:50 | [post] buffer | semmle.label | [post] buffer | | test.rs:118:45:118:50 | [post] buffer | semmle.label | [post] buffer |
| test.rs:119:14:119:20 | &buffer | semmle.label | &buffer | | test.rs:119:14:119:20 | &buffer | semmle.label | &buffer |
@@ -340,6 +364,7 @@ nodes
| test.rs:123:13:123:21 | mut stdin | semmle.label | mut stdin | | test.rs:123:13:123:21 | mut stdin | semmle.label | mut stdin |
| test.rs:123:25:123:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:123:25:123:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:123:25:123:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:123:25:123:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:125:22:125:26 | stdin | semmle.label | stdin |
| test.rs:125:43:125:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:125:48:125:53 | [post] buffer | semmle.label | [post] buffer | | test.rs:125:48:125:53 | [post] buffer | semmle.label | [post] buffer |
| test.rs:126:14:126:20 | &buffer | semmle.label | &buffer | | test.rs:126:14:126:20 | &buffer | semmle.label | &buffer |
@@ -347,6 +372,7 @@ nodes
| test.rs:130:13:130:21 | mut stdin | semmle.label | mut stdin | | test.rs:130:13:130:21 | mut stdin | semmle.label | mut stdin |
| test.rs:130:25:130:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:130:25:130:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:130:25:130:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:130:25:130:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:132:9:132:13 | stdin | semmle.label | stdin |
| test.rs:132:26:132:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:132:31:132:36 | [post] buffer | semmle.label | [post] buffer | | test.rs:132:31:132:36 | [post] buffer | semmle.label | [post] buffer |
| test.rs:133:14:133:20 | &buffer | semmle.label | &buffer | | test.rs:133:14:133:20 | &buffer | semmle.label | &buffer |
@@ -355,18 +381,22 @@ nodes
| test.rs:137:25:137:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:137:25:137:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:137:25:137:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:137:25:137:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:138:13:138:14 | v1 | semmle.label | v1 | | test.rs:138:13:138:14 | v1 | semmle.label | v1 |
| test.rs:138:18:138:22 | stdin | semmle.label | stdin |
| test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | semmle.label | stdin.read_u8() [future, Ok] | | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | semmle.label | stdin.read_u8() [future, Ok] |
| test.rs:138:18:138:38 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:138:18:138:38 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:138:18:138:39 | TryExpr | semmle.label | TryExpr | | test.rs:138:18:138:39 | TryExpr | semmle.label | TryExpr |
| test.rs:139:13:139:14 | v2 | semmle.label | v2 | | test.rs:139:13:139:14 | v2 | semmle.label | v2 |
| test.rs:139:18:139:22 | stdin | semmle.label | stdin |
| test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | semmle.label | stdin.read_i16() [future, Ok] | | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | semmle.label | stdin.read_i16() [future, Ok] |
| test.rs:139:18:139:39 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:139:18:139:39 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:139:18:139:40 | TryExpr | semmle.label | TryExpr | | test.rs:139:18:139:40 | TryExpr | semmle.label | TryExpr |
| test.rs:140:13:140:14 | v3 | semmle.label | v3 | | test.rs:140:13:140:14 | v3 | semmle.label | v3 |
| test.rs:140:18:140:22 | stdin | semmle.label | stdin |
| test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | semmle.label | stdin.read_f32() [future, Ok] | | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | semmle.label | stdin.read_f32() [future, Ok] |
| test.rs:140:18:140:39 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:140:18:140:39 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:140:18:140:40 | TryExpr | semmle.label | TryExpr | | test.rs:140:18:140:40 | TryExpr | semmle.label | TryExpr |
| test.rs:141:13:141:14 | v4 | semmle.label | v4 | | test.rs:141:13:141:14 | v4 | semmle.label | v4 |
| test.rs:141:18:141:22 | stdin | semmle.label | stdin |
| test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | semmle.label | stdin.read_i64_le() [future, Ok] | | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | semmle.label | stdin.read_i64_le() [future, Ok] |
| test.rs:141:18:141:42 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:141:18:141:42 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:141:18:141:43 | TryExpr | semmle.label | TryExpr | | test.rs:141:18:141:43 | TryExpr | semmle.label | TryExpr |
@@ -377,6 +407,7 @@ nodes
| test.rs:149:13:149:21 | mut stdin | semmle.label | mut stdin | | test.rs:149:13:149:21 | mut stdin | semmle.label | mut stdin |
| test.rs:149:25:149:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:149:25:149:40 | ...::stdin | semmle.label | ...::stdin |
| test.rs:149:25:149:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:149:25:149:42 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:151:9:151:13 | stdin | semmle.label | stdin |
| test.rs:151:24:151:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:151:29:151:34 | [post] buffer | semmle.label | [post] buffer | | test.rs:151:29:151:34 | [post] buffer | semmle.label | [post] buffer |
| test.rs:152:14:152:20 | &buffer | semmle.label | &buffer | | test.rs:152:14:152:20 | &buffer | semmle.label | &buffer |
@@ -386,6 +417,7 @@ nodes
| test.rs:158:52:158:67 | ...::stdin | semmle.label | ...::stdin | | test.rs:158:52:158:67 | ...::stdin | semmle.label | ...::stdin |
| test.rs:158:52:158:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:158:52:158:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:159:13:159:16 | data | semmle.label | data | | test.rs:159:13:159:16 | data | semmle.label | data |
| test.rs:159:20:159:25 | reader | semmle.label | reader |
| test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | semmle.label | reader.fill_buf() [future, Ok] | | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | semmle.label | reader.fill_buf() [future, Ok] |
| test.rs:159:20:159:42 | await ... [Ok] | semmle.label | await ... [Ok] | | test.rs:159:20:159:42 | await ... [Ok] | semmle.label | await ... [Ok] |
| test.rs:159:20:159:43 | TryExpr | semmle.label | TryExpr | | test.rs:159:20:159:43 | TryExpr | semmle.label | TryExpr |
@@ -395,14 +427,16 @@ nodes
| test.rs:164:22:164:66 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:164:22:164:66 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:164:48:164:63 | ...::stdin | semmle.label | ...::stdin | | test.rs:164:48:164:63 | ...::stdin | semmle.label | ...::stdin |
| test.rs:164:48:164:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:164:48:164:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:165:13:165:16 | data | semmle.label | data | | test.rs:165:13:165:16 | data [&ref] | semmle.label | data [&ref] |
| test.rs:165:20:165:34 | reader.buffer() | semmle.label | reader.buffer() | | test.rs:165:20:165:25 | reader | semmle.label | reader |
| test.rs:165:20:165:34 | reader.buffer() [&ref] | semmle.label | reader.buffer() [&ref] |
| test.rs:166:14:166:18 | &data | semmle.label | &data | | test.rs:166:14:166:18 | &data | semmle.label | &data |
| test.rs:166:15:166:18 | data | semmle.label | data | | test.rs:166:15:166:18 | data [&ref] | semmle.label | data [&ref] |
| test.rs:171:13:171:22 | mut reader | semmle.label | mut reader | | test.rs:171:13:171:22 | mut reader | semmle.label | mut reader |
| test.rs:171:26:171:70 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:171:26:171:70 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:171:52:171:67 | ...::stdin | semmle.label | ...::stdin | | test.rs:171:52:171:67 | ...::stdin | semmle.label | ...::stdin |
| test.rs:171:52:171:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:171:52:171:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:172:9:172:14 | reader | semmle.label | reader |
| test.rs:172:26:172:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:172:31:172:36 | [post] buffer | semmle.label | [post] buffer | | test.rs:172:31:172:36 | [post] buffer | semmle.label | [post] buffer |
| test.rs:173:14:173:20 | &buffer | semmle.label | &buffer | | test.rs:173:14:173:20 | &buffer | semmle.label | &buffer |
@@ -411,6 +445,7 @@ nodes
| test.rs:178:26:178:70 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:178:26:178:70 | ...::new(...) | semmle.label | ...::new(...) |
| test.rs:178:52:178:67 | ...::stdin | semmle.label | ...::stdin | | test.rs:178:52:178:67 | ...::stdin | semmle.label | ...::stdin |
| test.rs:178:52:178:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:178:52:178:69 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:179:9:179:14 | reader | semmle.label | reader |
| test.rs:179:33:179:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] |
| test.rs:179:38:179:43 | [post] buffer | semmle.label | [post] buffer | | 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:14:180:20 | &buffer | semmle.label | &buffer |
@@ -421,12 +456,14 @@ nodes
| test.rs:185:32:185:88 | ... .split(...) | semmle.label | ... .split(...) | | test.rs:185:32:185:88 | ... .split(...) | semmle.label | ... .split(...) |
| test.rs:185:58:185:73 | ...::stdin | semmle.label | ...::stdin | | test.rs:185:58:185:73 | ...::stdin | semmle.label | ...::stdin |
| test.rs:185:58:185:75 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:185:58:185:75 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:186:14:186:25 | reader_split | semmle.label | reader_split |
| test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] |
| test.rs:186:14:186:46 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:186:14:186:46 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:186:14:186:47 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:186:14:186:47 | TryExpr [Some] | semmle.label | TryExpr [Some] |
| test.rs:186:14:186:56 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:186:14:186:56 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:187:19:187:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | | test.rs:187:19:187:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| test.rs:187:24:187:28 | chunk | semmle.label | chunk | | test.rs:187:24:187:28 | chunk | semmle.label | chunk |
| test.rs:187:33:187:44 | reader_split | semmle.label | reader_split |
| test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] |
| test.rs:187:33:187:65 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:187:33:187:65 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:187:33:187:66 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:187:33:187:66 | TryExpr [Some] | semmle.label | TryExpr [Some] |
@@ -436,13 +473,16 @@ nodes
| test.rs:193:48:193:63 | ...::stdin | semmle.label | ...::stdin | | test.rs:193:48:193:63 | ...::stdin | semmle.label | ...::stdin |
| test.rs:193:48:193:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | | test.rs:193:48:193:65 | ...::stdin(...) | semmle.label | ...::stdin(...) |
| test.rs:194:13:194:21 | mut lines | semmle.label | mut lines | | test.rs:194:13:194:21 | mut lines | semmle.label | mut lines |
| test.rs:194:25:194:30 | reader | semmle.label | reader |
| test.rs:194:25:194:38 | reader.lines() | semmle.label | reader.lines() | | test.rs:194:25:194:38 | reader.lines() | semmle.label | reader.lines() |
| test.rs:195:14:195:18 | lines | semmle.label | lines |
| test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] |
| test.rs:195:14:195:36 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:195:14:195:36 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:195:14:195:37 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:195:14:195:37 | TryExpr [Some] | semmle.label | TryExpr [Some] |
| test.rs:195:14:195:46 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:195:14:195:46 | ... .unwrap() | semmle.label | ... .unwrap() |
| test.rs:196:19:196:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | | test.rs:196:19:196:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
| test.rs:196:24:196:27 | line | semmle.label | line | | test.rs:196:24:196:27 | line | semmle.label | line |
| test.rs:196:32:196:36 | lines | semmle.label | lines |
| test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] |
| test.rs:196:32:196:54 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | | test.rs:196:32:196:54 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] |
| test.rs:196:32:196:55 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:196:32:196:55 | TryExpr [Some] | semmle.label | TryExpr [Some] |

View File

@@ -12,37 +12,28 @@ models
| 11 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value | | 11 | Summary: <alloc::string::String>::as_str; Argument[self]; ReturnValue; value |
edges edges
| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | |
| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 |
| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | |
| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | |
| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 |
| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | |
| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:20 | path | provenance | |
| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 |
| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:8 |
| test.rs:100:13:100:13 | a | test.rs:101:14:101:14 | a | provenance | | | test.rs:100:13:100:13 | a | test.rs:101:14:101:14 | a | provenance | |
| test.rs:100:13:100:13 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 |
| test.rs:100:13:100:13 | a | test.rs:102:14:102:14 | a | provenance | | | test.rs:100:13:100:13 | a | test.rs:102:14:102:14 | a | provenance | |
| test.rs:100:13:100:13 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:100:13:100:13 | a | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a | test.rs:103:14:103:14 | a | provenance | |
| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:14 | a [tuple.0] | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:14 | a [tuple.0] | provenance | |
| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 |
| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:14 | a [tuple.0] | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:14 | a [tuple.0] | provenance | |
| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:100:13:100:13 | a [tuple.0] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:103:14:103:14 | a | provenance | |
| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:14 | a [tuple.1] | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:14 | a [tuple.1] | provenance | |
| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 |
| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:14 | a [tuple.1] | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:14 | a [tuple.1] | provenance | |
| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:100:13:100:13 | a [tuple.1] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:103:14:103:14 | a | provenance | |
| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:14 | a [tuple.2] | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:14 | a [tuple.2] | provenance | |
| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 |
| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:14 | a [tuple.2] | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:14 | a [tuple.2] | provenance | |
| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:100:13:100:13 | a [tuple.2] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:103:14:103:14 | a | provenance | |
| test.rs:100:17:100:20 | path | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 |
| test.rs:100:17:100:20 | path | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 |
| test.rs:100:17:100:20 | path | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:100:17:100:20 | path | test.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:8 |
| test.rs:100:17:100:33 | path.into_inner() | test.rs:100:13:100:13 | a | provenance | | | test.rs:100:17:100:33 | path.into_inner() | test.rs:100:13:100:13 | a | provenance | |
| test.rs:100:17:100:33 | path.into_inner() [tuple.0] | test.rs:100:13:100:13 | a [tuple.0] | provenance | | | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | test.rs:100:13:100:13 | a [tuple.0] | provenance | |
| test.rs:100:17:100:33 | path.into_inner() [tuple.1] | test.rs:100:13:100:13 | a [tuple.1] | provenance | | | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | test.rs:100:13:100:13 | a [tuple.1] | provenance | |
@@ -55,23 +46,25 @@ edges
| test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 |
| test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:6 | | test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:25 | path | provenance | |
| test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:111:13:111:18 | TuplePat [tuple.0] | test.rs:111:14:111:14 | a | provenance | | | test.rs:111:13:111:18 | TuplePat [tuple.0] | test.rs:111:14:111:14 | a | provenance | |
| test.rs:111:13:111:18 | TuplePat [tuple.1] | test.rs:111:17:111:17 | b | provenance | | | test.rs:111:13:111:18 | TuplePat [tuple.1] | test.rs:111:17:111:17 | b | provenance | |
| test.rs:111:14:111:14 | a | test.rs:113:14:113:14 | a | provenance | | | test.rs:111:14:111:14 | a | test.rs:113:14:113:14 | a | provenance | |
| test.rs:111:17:111:17 | b | test.rs:114:14:114:14 | b | provenance | | | test.rs:111:17:111:17 | b | test.rs:114:14:114:14 | b | provenance | |
| test.rs:111:22:111:25 | path | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:6 |
| test.rs:111:22:111:25 | path | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:111:22:111:38 | path.into_inner() [tuple.0] | test.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | test.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | |
| test.rs:111:22:111:38 | path.into_inner() [tuple.1] | test.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | test.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | |
| test.rs:127:5:127:20 | to | test.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | | test.rs:127:5:127:20 | to | test.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 |
| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() | provenance | MaD:9 | | test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:20 | path | provenance | |
| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:6 |
| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:8 |
| test.rs:131:13:131:13 | a | test.rs:132:14:132:14 | a | provenance | | | test.rs:131:13:131:13 | a | test.rs:132:14:132:14 | a | provenance | |
| test.rs:131:13:131:13 | a [tuple.0] | test.rs:132:14:132:14 | a | provenance | | | test.rs:131:13:131:13 | a [tuple.0] | test.rs:132:14:132:14 | a | provenance | |
| test.rs:131:13:131:13 | a [tuple.1] | test.rs:132:14:132:14 | a | provenance | | | test.rs:131:13:131:13 | a [tuple.1] | test.rs:132:14:132:14 | a | provenance | |
| test.rs:131:13:131:13 | a [tuple.2] | test.rs:132:14:132:14 | a | provenance | | | test.rs:131:13:131:13 | a [tuple.2] | test.rs:132:14:132:14 | a | provenance | |
| test.rs:131:17:131:20 | path | test.rs:131:17:131:33 | path.into_inner() | provenance | MaD:9 |
| test.rs:131:17:131:20 | path | test.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:6 |
| test.rs:131:17:131:20 | path | test.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:7 |
| test.rs:131:17:131:20 | path | test.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:8 |
| test.rs:131:17:131:33 | path.into_inner() | test.rs:131:13:131:13 | a | provenance | | | test.rs:131:17:131:33 | path.into_inner() | test.rs:131:13:131:13 | a | provenance | |
| test.rs:131:17:131:33 | path.into_inner() [tuple.0] | test.rs:131:13:131:13 | a [tuple.0] | provenance | | | test.rs:131:17:131:33 | path.into_inner() [tuple.0] | test.rs:131:13:131:13 | a [tuple.0] | provenance | |
| test.rs:131:17:131:33 | path.into_inner() [tuple.1] | test.rs:131:13:131:13 | a [tuple.1] | provenance | | | test.rs:131:17:131:33 | path.into_inner() [tuple.1] | test.rs:131:13:131:13 | a [tuple.1] | provenance | |
@@ -100,6 +93,7 @@ nodes
| test.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] | | test.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] |
| test.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] | | test.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] |
| test.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] | | test.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] |
| test.rs:100:17:100:20 | path | semmle.label | path |
| test.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | | test.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() |
| test.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] |
| test.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] |
@@ -120,6 +114,7 @@ nodes
| test.rs:111:13:111:18 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | | test.rs:111:13:111:18 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
| test.rs:111:14:111:14 | a | semmle.label | a | | test.rs:111:14:111:14 | a | semmle.label | a |
| test.rs:111:17:111:17 | b | semmle.label | b | | test.rs:111:17:111:17 | b | semmle.label | b |
| test.rs:111:22:111:25 | path | semmle.label | path |
| test.rs:111:22:111:38 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] |
| test.rs:111:22:111:38 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] |
| test.rs:113:14:113:14 | a | semmle.label | a | | test.rs:113:14:113:14 | a | semmle.label | a |
@@ -130,6 +125,7 @@ nodes
| test.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] | | test.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] |
| test.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] | | test.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] |
| test.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] | | test.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] |
| test.rs:131:17:131:20 | path | semmle.label | path |
| test.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() | | test.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() |
| test.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | | test.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] |
| test.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | | test.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] |

View File

@@ -1,5 +1,5 @@
models models
| 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self]; ReturnValue; taint | | 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint |
| 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 3 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; 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 | | 4 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
@@ -31,12 +31,12 @@ edges
| main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | 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: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:5 |
| main.rs:57:9:57:10 | s1 | main.rs:58:14:58:27 | s1.to_string() | provenance | MaD:1 | | 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: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 | | | main.rs:58:9:58:10 | s2 | main.rs:59:10:59:11 | s2 | provenance | |
| main.rs:58:14:58:15 | s1 | main.rs:58:14:58:27 | s1.to_string() | provenance | MaD:1 |
| main.rs:58:14:58:27 | s1.to_string() | main.rs:58:9:58:10 | s2 | provenance | | | 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:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | |
| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 |
| main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | 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:7 |
| main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | |
@@ -91,6 +91,7 @@ nodes
| main.rs:57:9:57:10 | s1 | semmle.label | s1 | | main.rs:57:9:57:10 | s1 | semmle.label | s1 |
| main.rs:57:14:57:29 | source_slice(...) | semmle.label | source_slice(...) | | main.rs:57:14:57:29 | source_slice(...) | semmle.label | source_slice(...) |
| main.rs:58:9:58:10 | s2 | semmle.label | s2 | | main.rs:58:9:58:10 | s2 | semmle.label | s2 |
| main.rs:58:14:58:15 | s1 | semmle.label | s1 |
| main.rs:58:14:58:27 | s1.to_string() | semmle.label | s1.to_string() | | main.rs:58:14:58:27 | s1.to_string() | semmle.label | s1.to_string() |
| main.rs:59:10:59:11 | s2 | semmle.label | s2 | | main.rs:59:10:59:11 | s2 | semmle.label | s2 |
| main.rs:63:9:63:9 | s | semmle.label | s | | main.rs:63:9:63:9 | s | semmle.label | s |

View File

@@ -61,7 +61,7 @@ fn string_to_string() {
fn as_str() { fn as_str() {
let s = source(67); let s = source(67);
sink_slice(s.as_str()); // $ hasValueFlow=67 sink_slice(s.as_str()); // $ hasTaintFlow=67 -- `s.as_str()` has type `&str`, so an implicit deref is needed at the sink
} }
fn format_args_built_in() { fn format_args_built_in() {

View File

@@ -9,9 +9,13 @@
| main.rs:24:10:24:17 | [post] b as i64 | main.rs:24:10:24:10 | [post] b | | 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: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: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: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: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: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: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: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:69:9:69:12 | arr2 | main.rs:69:9:69:15 | arr2[1] |

View File

@@ -38,11 +38,11 @@ module ResolveTest implements TestSig {
not target.(Function).getName().getText() = ["panic_fmt", "_print", "format", "must_use"] and not target.(Function).getName().getText() = ["panic_fmt", "_print", "format", "must_use"] and
tag = "target" tag = "target"
or or
target = resolveStructFieldExpr(source) and target = resolveStructFieldExpr(source, _) and
any(Struct s | s.getStructField(_) = target).getName().getText() = value and any(Struct s | s.getStructField(_) = target).getName().getText() = value and
tag = "fieldof" tag = "fieldof"
or or
target = resolveTupleFieldExpr(source) and target = resolveTupleFieldExpr(source, _) and
any(Struct s | s.getTupleField(_) = target).getName().getText() = value and any(Struct s | s.getTupleField(_) = target).getName().getText() = value and
tag = "fieldof" tag = "fieldof"
) )

View File

@@ -22,11 +22,12 @@ edges
| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:14 | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:14 |
| src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:50:51:50:59 | file_path | src/main.rs:52:32:52:40 | file_path | provenance | | | src/main.rs:50:51:50:59 | file_path | src/main.rs:52:32:52:40 | file_path | provenance | |
| src/main.rs:52:9:52:17 | file_path [&ref] | src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | provenance | Config | | src/main.rs:52:9:52:17 | file_path [&ref] | src/main.rs:53:21:53:29 | file_path [&ref] | provenance | |
| src/main.rs:52:21:52:41 | ...::new(...) [&ref] | src/main.rs:52:9:52:17 | file_path [&ref] | provenance | | | src/main.rs:52:21:52:41 | ...::new(...) [&ref] | src/main.rs:52:9:52:17 | file_path [&ref] | provenance | |
| src/main.rs:52:31:52:40 | &file_path [&ref] | src/main.rs:52:21:52:41 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:52:31:52:40 | &file_path [&ref] | src/main.rs:52:21:52:41 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:52:32:52:40 | file_path | src/main.rs:52:31:52:40 | &file_path [&ref] | provenance | | | src/main.rs:52:32:52:40 | file_path | src/main.rs:52:31:52:40 | &file_path [&ref] | provenance | |
| src/main.rs:53:9:53:17 | file_path | src/main.rs:58:24:58:32 | file_path | provenance | | | src/main.rs:53:9:53:17 | file_path | src/main.rs:58:24:58:32 | file_path | provenance | |
| src/main.rs:53:21:53:29 | file_path [&ref] | src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | provenance | Config |
| src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | src/main.rs:53:21:53:53 | ... .unwrap() | provenance | MaD:12 | | src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | src/main.rs:53:21:53:53 | ... .unwrap() | provenance | MaD:12 |
| src/main.rs:53:21:53:53 | ... .unwrap() | src/main.rs:53:9:53:17 | file_path | provenance | | | src/main.rs:53:21:53:53 | ... .unwrap() | src/main.rs:53:9:53:17 | file_path | provenance | |
| src/main.rs:58:24:58:32 | file_path | src/main.rs:58:5:58:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:58:24:58:32 | file_path | src/main.rs:58:5:58:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
@@ -37,27 +38,22 @@ edges
| src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | | | src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | |
| src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | | | src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | |
| src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config | | src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:29 | file_path [&ref] | provenance | |
| src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | | | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | |
| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | | | src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | |
| src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | | | src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | |
| src/main.rs:98:21:98:29 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config |
| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:12 | | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:12 |
| src/main.rs:98:21:98:53 | ... .unwrap() | src/main.rs:98:9:98:17 | file_path | provenance | | | src/main.rs:98:21:98:53 | ... .unwrap() | src/main.rs:98:9:98:17 | file_path | provenance | |
| src/main.rs:99:24:99:32 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:99:24:99:32 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:37 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:37 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:45 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:106:39:106:43 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:106:39:106:43 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:106:39:106:51 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:109:41:109:45 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:109:41:109:45 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:109:41:109:53 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:112:45:112:49 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:112:45:112:49 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:112:45:112:57 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:115:39:115:43 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:115:39:115:43 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:122:27:122:31 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:122:27:122:31 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:122:27:122:39 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:41 | path1 | provenance | | | src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:41 | path1 | provenance | |
| src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:49 | path1.clone() | provenance | MaD:8 |
| src/main.rs:103:17:103:30 | ...::args | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 | | src/main.rs:103:17:103:30 | ...::args | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 |
| src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:10 | | src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:10 |
| src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:11 | | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:11 |
@@ -89,8 +85,9 @@ edges
| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:13 | | src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:13 |
| src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | | | src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | |
| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
| src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | provenance | Config | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | |
| src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | | | src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | |
| src/main.rs:118:17:118:21 | path5 [&ref] | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | provenance | Config |
| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:12 | | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:12 |
| src/main.rs:118:17:118:45 | ... .unwrap() | src/main.rs:118:9:118:13 | path6 | provenance | | | src/main.rs:118:17:118:45 | ... .unwrap() | src/main.rs:118:9:118:13 | path6 | provenance | |
| src/main.rs:119:33:119:37 | path6 | src/main.rs:119:13:119:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:119:33:119:37 | path6 | src/main.rs:119:13:119:31 | ...::open | provenance | MaD:2 Sink:MaD:2 |
@@ -124,7 +121,7 @@ models
| 7 | Source: std::env::args; ReturnValue.Element; commandargs | | 7 | Source: std::env::args; ReturnValue.Element; commandargs |
| 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value |
| 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint |
| 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 11 | Summary: <core::option::Option>::unwrap; 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>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 12 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 13 | Summary: <std::path::Path>::new; Argument[0].Reference; ReturnValue.Reference; value | | 13 | Summary: <std::path::Path>::new; Argument[0].Reference; ReturnValue.Reference; value |
@@ -142,6 +139,7 @@ nodes
| src/main.rs:52:31:52:40 | &file_path [&ref] | semmle.label | &file_path [&ref] | | src/main.rs:52:31:52:40 | &file_path [&ref] | semmle.label | &file_path [&ref] |
| src/main.rs:52:32:52:40 | file_path | semmle.label | file_path | | src/main.rs:52:32:52:40 | file_path | semmle.label | file_path |
| src/main.rs:53:9:53:17 | file_path | semmle.label | file_path | | src/main.rs:53:9:53:17 | file_path | semmle.label | file_path |
| src/main.rs:53:21:53:29 | file_path [&ref] | semmle.label | file_path [&ref] |
| src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | | src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] |
| src/main.rs:53:21:53:53 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:53:21:53:53 | ... .unwrap() | semmle.label | ... .unwrap() |
| src/main.rs:58:5:58:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:58:5:58:22 | ...::read_to_string | semmle.label | ...::read_to_string |
@@ -159,6 +157,7 @@ nodes
| src/main.rs:93:31:93:40 | &file_path [&ref] | semmle.label | &file_path [&ref] | | src/main.rs:93:31:93:40 | &file_path [&ref] | semmle.label | &file_path [&ref] |
| src/main.rs:93:32:93:40 | file_path | semmle.label | file_path | | src/main.rs:93:32:93:40 | file_path | semmle.label | file_path |
| src/main.rs:98:9:98:17 | file_path | semmle.label | file_path | | src/main.rs:98:9:98:17 | file_path | semmle.label | file_path |
| src/main.rs:98:21:98:29 | file_path [&ref] | semmle.label | file_path [&ref] |
| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] |
| src/main.rs:98:21:98:53 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:98:21:98:53 | ... .unwrap() | semmle.label | ... .unwrap() |
| src/main.rs:99:5:99:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:99:5:99:22 | ...::read_to_string | semmle.label | ...::read_to_string |
@@ -201,6 +200,7 @@ nodes
| src/main.rs:116:13:116:31 | ...::open | semmle.label | ...::open | | src/main.rs:116:13:116:31 | ...::open | semmle.label | ...::open |
| src/main.rs:116:33:116:37 | path5 [&ref] | semmle.label | path5 [&ref] | | src/main.rs:116:33:116:37 | path5 [&ref] | semmle.label | path5 [&ref] |
| src/main.rs:118:9:118:13 | path6 | semmle.label | path6 | | src/main.rs:118:9:118:13 | path6 | semmle.label | path6 |
| src/main.rs:118:17:118:21 | path5 [&ref] | semmle.label | path5 [&ref] |
| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | semmle.label | path5.canonicalize() [Ok] | | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | semmle.label | path5.canonicalize() [Ok] |
| src/main.rs:118:17:118:45 | ... .unwrap() | semmle.label | ... .unwrap() | | src/main.rs:118:17:118:45 | ... .unwrap() | semmle.label | ... .unwrap() |
| src/main.rs:119:13:119:31 | ...::open | semmle.label | ...::open | | src/main.rs:119:13:119:31 | ...::open | semmle.label | ...::open |

View File

@@ -2,8 +2,9 @@
| main.rs:25:5:25:13 | ...::new | main.rs:8:1:8:18 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:1:8:18 | to | user-provided value | | main.rs:25:5:25:13 | ...::new | main.rs:8:1:8:18 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:1:8:18 | to | user-provided value |
edges edges
| main.rs:8:1:8:18 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 | | main.rs:8:1:8:18 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 |
| main.rs:9:29:9:51 | ...: ...::Path::<...> | main.rs:10:22:10:38 | path.into_inner() | provenance | MaD:3 | | main.rs:9:29:9:51 | ...: ...::Path::<...> | main.rs:10:22:10:25 | path | provenance | |
| main.rs:10:9:10:18 | user_input | main.rs:13:9:22:18 | MacroExpr | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:13:9:22:18 | MacroExpr | provenance | |
| main.rs:10:22:10:25 | path | main.rs:10:22:10:38 | path.into_inner() | provenance | MaD:3 |
| main.rs:10:22:10:38 | path.into_inner() | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:10:22:10:38 | path.into_inner() | main.rs:10:9:10:18 | user_input | provenance | |
| main.rs:12:9:12:12 | html | main.rs:25:15:25:18 | html | provenance | | | main.rs:12:9:12:12 | html | main.rs:25:15:25:18 | html | provenance | |
| main.rs:13:9:22:18 | ...::format(...) | main.rs:13:9:22:18 | { ... } | provenance | | | main.rs:13:9:22:18 | ...::format(...) | main.rs:13:9:22:18 | { ... } | provenance | |
@@ -21,6 +22,7 @@ nodes
| main.rs:8:1:8:18 | to | semmle.label | to | | main.rs:8:1:8:18 | to | semmle.label | to |
| main.rs:9:29:9:51 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | main.rs:9:29:9:51 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> |
| main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:9:10:18 | user_input | semmle.label | user_input |
| main.rs:10:22:10:25 | path | semmle.label | path |
| main.rs:10:22:10:38 | path.into_inner() | semmle.label | path.into_inner() | | main.rs:10:22:10:38 | path.into_inner() | semmle.label | path.into_inner() |
| main.rs:12:9:12:12 | html | semmle.label | html | | main.rs:12:9:12:12 | html | semmle.label | html |
| main.rs:13:9:22:18 | ...::format(...) | semmle.label | ...::format(...) | | main.rs:13:9:22:18 | ...::format(...) | semmle.label | ...::format(...) |

View File

@@ -40,31 +40,18 @@ edges
| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 |
| mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:29 |
| 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:42:39:42:50 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:29 |
| 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:75:31:75:42 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | |
| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | 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:27 |
| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 |
@@ -72,43 +59,30 @@ edges
| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | | mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 |
| mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | | mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | |
| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 |
| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 |
| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 |
| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 |
| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 |
| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 |
| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 |
| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 |
| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 |
| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 |
| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 |
| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 |
| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 |
| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 |
| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 |
| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 |
| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 |
| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 |
| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 |
| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 |
| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 |
| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 |
| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 |
| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 |
| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 |
| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 |
| mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | |
| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 |
@@ -117,23 +91,14 @@ edges
| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 |
| mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:29 |
| 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:121:24:121:35 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:29 |
| 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:149:31:149:42 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | |
| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:29 |
| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | 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:27 |
| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 |
@@ -141,31 +106,22 @@ edges
| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | | mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 |
| mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | | mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | |
| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 |
| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 |
| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 |
| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 |
| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 |
| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 |
| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 |
| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 |
| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 |
| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 |
| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 |
| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 |
| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 |
| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 |
| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 |
| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 |
| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 |
| mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 |
| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 |
| sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | |
| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 |
@@ -180,14 +136,13 @@ edges
| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:33 |
| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 |
| sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | |
| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:38 | unsafe_query_1 [&ref] | provenance | |
| sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | |
| sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | |
| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:42 | unsafe_query_2 [&ref] | provenance | |
| sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | 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: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:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | |
| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:29 |
| 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: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:27 |
| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 |
@@ -195,18 +150,17 @@ edges
| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 |
| sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | |
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | |
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 |
| sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | |
| sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | |
| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:34 | | sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:34 |
| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:35 | | sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:35 |
| sqlx.rs:78:25:78:38 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:80:29:80:42 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | |
| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 |
@@ -215,17 +169,11 @@ edges
| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 |
| sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:29 |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:29 |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:29 |
| 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:136:55:136:68 | unsafe_query_1 | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:29 |
| 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:145:55:145:68 | unsafe_query_1 | provenance | |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:29 |
| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | 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:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:29 |
| 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: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:27 |
| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 |
@@ -233,22 +181,16 @@ edges
| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 |
| sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | |
| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 |
| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 |
| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 |
| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 |
| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 |
| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 |
| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | |
| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 |
@@ -257,7 +199,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: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: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:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | |
| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:29 |
| 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: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:27 |
| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 |
@@ -265,7 +206,6 @@ edges
| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 |
| sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | |
| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 |
| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 |
models models
| 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | | 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection |
@@ -292,7 +232,7 @@ models
| 22 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | | 22 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection |
| 23 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 23 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote |
| 24 | Source: std::env::args; ReturnValue.Element; commandargs | | 24 | Source: std::env::args; ReturnValue.Element; commandargs |
| 25 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 25 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 26 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | | 26 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
| 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | | 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint |
| 28 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; value | | 28 | Summary: <alloc::string::String as core::ops::arith::Add>::add; Argument[self]; ReturnValue; value |
@@ -317,55 +257,42 @@ nodes
| mysql.rs:18:71:18:83 | remote_string | semmle.label | remote_string | | mysql.rs:18:71:18:83 | remote_string | semmle.label | remote_string |
| mysql.rs:25:32:25:36 | query | semmle.label | query | | mysql.rs:25:32:25:36 | query | semmle.label | query |
| mysql.rs:25:38:25:49 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:25:38:25:49 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:25:38:25:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:26:54:26:62 | query_opt | semmle.label | query_opt | | mysql.rs:26:54:26:62 | query_opt | semmle.label | query_opt |
| mysql.rs:26:64:26:75 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:26:64:26:75 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:26:64:26:84 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:27:14:27:23 | query_drop | semmle.label | query_drop | | mysql.rs:27:14:27:23 | query_drop | semmle.label | query_drop |
| mysql.rs:27:25:27:36 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:27:25:27:36 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:27:25:27:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:28:27:28:37 | query_first | semmle.label | query_first | | mysql.rs:28:27:28:37 | query_first | semmle.label | query_first |
| mysql.rs:28:39:28:50 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:28:39:28:50 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:28:39:28:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:29:49:29:63 | query_first_opt | semmle.label | query_first_opt | | mysql.rs:29:49:29:63 | query_first_opt | semmle.label | query_first_opt |
| mysql.rs:29:65:29:76 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:29:65:29:76 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:29:65:29:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:30:22:30:31 | query_fold | semmle.label | query_fold | | mysql.rs:30:22:30:31 | query_fold | semmle.label | query_fold |
| mysql.rs:30:33:30:44 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:30:33:30:44 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:30:33:30:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:31:22:31:35 | query_fold_opt | semmle.label | query_fold_opt | | mysql.rs:31:22:31:35 | query_fold_opt | semmle.label | query_fold_opt |
| mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:32:13:32:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter | | mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter |
| mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:36:33:36:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:37:22:37:30 | query_map | semmle.label | query_map | | mysql.rs:37:22:37:30 | query_map | semmle.label | query_map |
| mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:37:32:37:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:38:22:38:34 | query_map_opt | semmle.label | query_map_opt | | mysql.rs:38:22:38:34 | query_map_opt | semmle.label | query_map_opt |
| mysql.rs:39:13:39:24 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:39:13:39:24 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:39:13:39:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:42:33:42:37 | query | semmle.label | query | | mysql.rs:42:33:42:37 | query | semmle.label | query |
| mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:42:39:42:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:75:26:75:29 | prep | semmle.label | prep | | mysql.rs:75:26:75:29 | prep | semmle.label | prep |
| mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:75:31:75:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop | | mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop |
| mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:80:26:80:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:97:13:97:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:97:13:97:29 | mut remote_string | semmle.label | mut remote_string |
| mysql.rs:97:33:97:54 | ...::get | semmle.label | ...::get | | mysql.rs:97:33:97:54 | ...::get | semmle.label | ...::get |
@@ -380,39 +307,30 @@ nodes
| mysql.rs:103:71:103:83 | remote_string | semmle.label | remote_string | | mysql.rs:103:71:103:83 | remote_string | semmle.label | remote_string |
| mysql.rs:110:32:110:36 | query | semmle.label | query | | mysql.rs:110:32:110:36 | query | semmle.label | query |
| mysql.rs:110:38:110:49 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:110:38:110:49 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:110:38:110:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:111:14:111:23 | query_drop | semmle.label | query_drop | | mysql.rs:111:14:111:23 | query_drop | semmle.label | query_drop |
| mysql.rs:111:25:111:36 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:111:25:111:36 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:111:25:111:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:112:35:112:45 | query_first | semmle.label | query_first | | mysql.rs:112:35:112:45 | query_first | semmle.label | query_first |
| mysql.rs:112:47:112:58 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:112:47:112:58 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:112:47:112:67 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:114:14:114:23 | query_fold | semmle.label | query_fold | | mysql.rs:114:14:114:23 | query_fold | semmle.label | query_fold |
| mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:114:25:114:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter | | mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter |
| mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:116:33:116:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream | | mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream |
| mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:118:40:118:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:121:14:121:22 | query_map | semmle.label | query_map | | mysql.rs:121:14:121:22 | query_map | semmle.label | query_map |
| mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:121:24:121:44 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:149:26:149:29 | prep | semmle.label | prep | | mysql.rs:149:26:149:29 | prep | semmle.label | prep |
| mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:149:31:149:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop | | mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop |
| mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query |
| mysql.rs:154:26:154:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() |
| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] |
| sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string |
| sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args |
@@ -442,16 +360,16 @@ nodes
| sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr |
| sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } |
| sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query | | sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query |
| sqlx.rs:78:25:78:38 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] |
| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query | | sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:80:29:80:42 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] |
| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | semmle.label | unsafe_query_2.as_str() [&ref] | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | semmle.label | unsafe_query_2.as_str() [&ref] |
| sqlx.rs:81:17:81:27 | ...::query | semmle.label | ...::query | | sqlx.rs:81:17:81:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:81:29:81:42 | unsafe_query_3 | semmle.label | unsafe_query_3 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | semmle.label | unsafe_query_3 |
| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | semmle.label | unsafe_query_3.as_str() |
| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | semmle.label | unsafe_query_3.as_str() [&ref] | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | semmle.label | unsafe_query_3.as_str() [&ref] |
| sqlx.rs:82:17:82:27 | ...::query | semmle.label | ...::query | | sqlx.rs:82:17:82:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:82:29:82:42 | unsafe_query_4 | semmle.label | unsafe_query_4 | | sqlx.rs:82:29:82:42 | unsafe_query_4 | semmle.label | unsafe_query_4 |
| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() |
| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | semmle.label | unsafe_query_4.as_str() [&ref] | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | semmle.label | unsafe_query_4.as_str() [&ref] |
| sqlx.rs:100:9:100:21 | remote_string | semmle.label | remote_string | | sqlx.rs:100:9:100:21 | remote_string | semmle.label | remote_string |
| sqlx.rs:100:25:100:46 | ...::get | semmle.label | ...::get | | sqlx.rs:100:25:100:46 | ...::get | semmle.label | ...::get |
@@ -466,27 +384,21 @@ nodes
| sqlx.rs:102:84:102:96 | remote_string | semmle.label | remote_string | | sqlx.rs:102:84:102:96 | remote_string | semmle.label | remote_string |
| sqlx.rs:113:17:113:29 | ...::raw_sql | semmle.label | ...::raw_sql | | sqlx.rs:113:17:113:29 | ...::raw_sql | semmle.label | ...::raw_sql |
| sqlx.rs:113:31:113:44 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:113:31:113:44 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:120:17:120:27 | ...::query | semmle.label | ...::query | | sqlx.rs:120:17:120:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:120:29:120:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:120:29:120:42 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:127:17:127:27 | ...::query | semmle.label | ...::query | | sqlx.rs:127:17:127:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:127:29:127:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:127:29:127:42 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:136:40:136:53 | ...::query_as | semmle.label | ...::query_as | | sqlx.rs:136:40:136:53 | ...::query_as | semmle.label | ...::query_as |
| sqlx.rs:136:55:136:68 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:136:55:136:68 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:145:40:145:53 | ...::query_as | semmle.label | ...::query_as | | sqlx.rs:145:40:145:53 | ...::query_as | semmle.label | ...::query_as |
| sqlx.rs:145:55:145:68 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:145:55:145:68 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:153:17:153:27 | ...::query | semmle.label | ...::query | | sqlx.rs:153:17:153:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:153:29:153:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:153:29:153:42 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
| sqlx.rs:173:9:173:21 | remote_string | semmle.label | remote_string | | sqlx.rs:173:9:173:21 | remote_string | semmle.label | remote_string |
| sqlx.rs:173:25:173:46 | ...::get | semmle.label | ...::get | | sqlx.rs:173:25:173:46 | ...::get | semmle.label | ...::get |
@@ -501,6 +413,5 @@ nodes
| sqlx.rs:175:84:175:96 | remote_string | semmle.label | remote_string | | sqlx.rs:175:84:175:96 | remote_string | semmle.label | remote_string |
| sqlx.rs:188:17:188:27 | ...::query | semmle.label | ...::query | | sqlx.rs:188:17:188:27 | ...::query | semmle.label | ...::query |
| sqlx.rs:188:29:188:42 | unsafe_query_1 | semmle.label | unsafe_query_1 | | sqlx.rs:188:29:188:42 | unsafe_query_1 | semmle.label | unsafe_query_1 |
| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() |
| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] |
subpaths subpaths

View File

@@ -58,7 +58,7 @@ models
| 4 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 4 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote |
| 5 | Source: std::env::args; ReturnValue.Element; commandargs | | 5 | Source: std::env::args; ReturnValue.Element; commandargs |
| 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment |
| 7 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 7 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value |
| 8 | Summary: <core::option::Option>::unwrap_or_default; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 8 | Summary: <core::option::Option>::unwrap_or_default; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 9 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 9 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 10 | Summary: <core::result::Result>::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 10 | Summary: <core::result::Result>::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |

View File

@@ -231,49 +231,38 @@ edges
| test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | |
| test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | |
| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:20 | | test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:20 |
| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 |
| test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | |
| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | |
| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:20 |
| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:21 | | test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | |
| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | |
| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | |
| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:19 |
| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:21 | | test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | |
| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 |
| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 |
| test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | |
| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | |
| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:19 |
| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:21 | | test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | |
| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 |
| test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | |
| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | |
| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:19 |
| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:21 | | test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | |
| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:19 |
| test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 |
| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 |
| test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | |
| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | |
| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:19 |
| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:21 | | test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:21 |
| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:22 |
| test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | |
@@ -511,7 +500,6 @@ nodes
| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | | test_logging.rs:229:23:229:28 | expect | semmle.label | expect |
| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | | test_logging.rs:229:23:229:28 | expect | semmle.label | expect |
| test_logging.rs:229:30:229:62 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:229:30:229:62 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:229:30:229:71 | ... .as_str() | semmle.label | ... .as_str() |
| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | semmle.label | ... .as_str() [&ref] | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | semmle.label | ... .as_str() [&ref] |
| test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) |
| test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) |
@@ -520,7 +508,6 @@ nodes
| test_logging.rs:229:54:229:61 | password | semmle.label | password | | test_logging.rs:229:54:229:61 | password | semmle.label | password |
| test_logging.rs:242:10:242:14 | write | semmle.label | write | | test_logging.rs:242:10:242:14 | write | semmle.label | write |
| test_logging.rs:242:16:242:50 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:242:16:242:50 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:242:16:242:61 | ... .as_bytes() | semmle.label | ... .as_bytes() |
| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] |
| test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) |
| test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) |
@@ -529,7 +516,6 @@ nodes
| test_logging.rs:242:42:242:49 | password | semmle.label | password | | test_logging.rs:242:42:242:49 | password | semmle.label | password |
| test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all | | test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all |
| test_logging.rs:245:20:245:54 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:245:20:245:54 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:245:20:245:65 | ... .as_bytes() | semmle.label | ... .as_bytes() |
| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] |
| test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) |
| test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) |
@@ -538,7 +524,6 @@ nodes
| test_logging.rs:245:46:245:53 | password | semmle.label | password | | test_logging.rs:245:46:245:53 | password | semmle.label | password |
| test_logging.rs:248:9:248:13 | write | semmle.label | write | | test_logging.rs:248:9:248:13 | write | semmle.label | write |
| test_logging.rs:248:15:248:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:248:15:248:49 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:248:15:248:60 | ... .as_bytes() | semmle.label | ... .as_bytes() |
| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] |
| test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) |
| test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) |
@@ -547,7 +532,6 @@ nodes
| test_logging.rs:248:41:248:48 | password | semmle.label | password | | test_logging.rs:248:41:248:48 | password | semmle.label | password |
| test_logging.rs:251:9:251:13 | write | semmle.label | write | | test_logging.rs:251:9:251:13 | write | semmle.label | write |
| test_logging.rs:251:15:251:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:251:15:251:49 | MacroExpr | semmle.label | MacroExpr |
| test_logging.rs:251:15:251:60 | ... .as_bytes() | semmle.label | ... .as_bytes() |
| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] |
| test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) |
| test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) |

View File

@@ -9,15 +9,10 @@
| test_storage.rs:204:31:204:37 | prepare | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:31:204:37 | prepare | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | | test_storage.rs:204:31:204:37 | prepare | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:31:204:37 | prepare | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) |
edges edges
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:37 | insert_query2 | provenance | | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:37 | insert_query2 | provenance | |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:10 |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:39 | insert_query2 | provenance | | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:39 | insert_query2 | provenance | |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:10 |
| 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:119:25:119:37 | insert_query2 | provenance | |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:10 |
| 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:125:25:125:37 | insert_query2 | provenance | |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:10 |
| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139: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:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:10 |
| 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: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:8 |
| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:9 | | test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:9 |
@@ -30,19 +25,14 @@ edges
| test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... | provenance | Config | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... | provenance | Config |
| test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... [&ref] | provenance | | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... [&ref] | provenance | |
| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | | test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 |
| test_storage.rs:100:25:100:46 | insert_query2.as_str() | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:10 | | test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:10 |
| test_storage.rs:115:27:115:48 | insert_query2.as_str() | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 |
| test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 |
| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | | test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 |
| test_storage.rs:119:25:119:46 | insert_query2.as_str() | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | | test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 |
| test_storage.rs:125:25:125:46 | insert_query2.as_str() | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| 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: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() | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 |
| 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: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: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:9:189:24 | insert_query_bad | provenance | |
@@ -101,23 +91,18 @@ nodes
| test_storage.rs:71:97:71:114 | get_phone_number(...) | semmle.label | get_phone_number(...) | | test_storage.rs:71:97:71:114 | get_phone_number(...) | semmle.label | get_phone_number(...) |
| test_storage.rs:100:13:100:23 | ...::query | semmle.label | ...::query | | test_storage.rs:100:13:100:23 | ...::query | semmle.label | ...::query |
| test_storage.rs:100:25:100:37 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:100:25:100:37 | insert_query2 | semmle.label | insert_query2 |
| test_storage.rs:100:25:100:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() |
| test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] |
| test_storage.rs:115:13:115:25 | ...::raw_sql | semmle.label | ...::raw_sql | | test_storage.rs:115:13:115:25 | ...::raw_sql | semmle.label | ...::raw_sql |
| test_storage.rs:115:27:115:39 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:115:27:115:39 | insert_query2 | semmle.label | insert_query2 |
| test_storage.rs:115:27:115:48 | insert_query2.as_str() | semmle.label | insert_query2.as_str() |
| test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] |
| test_storage.rs:119:13:119:23 | ...::query | semmle.label | ...::query | | test_storage.rs:119:13:119:23 | ...::query | semmle.label | ...::query |
| test_storage.rs:119:25:119:37 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:119:25:119:37 | insert_query2 | semmle.label | insert_query2 |
| test_storage.rs:119:25:119:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() |
| test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] |
| test_storage.rs:125:13:125:23 | ...::query | semmle.label | ...::query | | test_storage.rs:125:13:125:23 | ...::query | semmle.label | ...::query |
| test_storage.rs:125:25:125:37 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:125:25:125:37 | insert_query2 | semmle.label | insert_query2 |
| test_storage.rs:125:25:125:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() |
| test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] |
| test_storage.rs:139:13:139:23 | ...::query | semmle.label | ...::query | | test_storage.rs:139:13:139:23 | ...::query | semmle.label | ...::query |
| test_storage.rs:139:25:139:37 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:139:25:139:37 | insert_query2 | semmle.label | insert_query2 |
| test_storage.rs:139:25:139:46 | insert_query2.as_str() | semmle.label | insert_query2.as_str() |
| test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] | | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | semmle.label | insert_query2.as_str() [&ref] |
| test_storage.rs:189:9:189:24 | insert_query_bad | semmle.label | insert_query_bad | | test_storage.rs:189:9:189:24 | insert_query_bad | semmle.label | insert_query_bad |
| test_storage.rs:189:28:189:117 | ... + ... | semmle.label | ... + ... | | test_storage.rs:189:28:189:117 | ... + ... | semmle.label | ... + ... |

View File

@@ -125,9 +125,7 @@ edges
| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 |
| main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 |
| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | |
| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 |
| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | |
| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 |
| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 |
| main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | | main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | |
| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | | main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 |
@@ -135,21 +133,14 @@ edges
| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | | main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 |
| main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | | main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 |
| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | |
| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 |
| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | |
| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 |
| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | |
| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 |
| main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | | main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | |
| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 |
| main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | |
| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 |
| main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | |
| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 |
| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 |
| main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | |
| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 |
| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | | main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 |
| main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | | main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | |
| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | | main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 |
@@ -157,15 +148,11 @@ edges
| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 |
| main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | | main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 |
| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | |
| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 |
| main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | |
| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 |
| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | | main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 |
| main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | | main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 |
| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | |
| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 |
| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | |
| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 |
| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 |
| main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | | main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | |
| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | | main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 |
@@ -175,9 +162,7 @@ edges
| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | | main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 |
| main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | | main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 |
| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | |
| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 |
| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | |
| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 |
| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 |
| main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | | main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | |
| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | | main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 |
@@ -188,25 +173,22 @@ edges
| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | | main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 |
| main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 |
| main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | |
| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 |
| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 |
| main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | | main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | |
| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | | main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 |
| main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 |
| main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | |
| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | | main.rs:130:9:130:9 | c | main.rs:134:13:134:13 | c | provenance | |
| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 |
| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | | main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 |
| main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | |
| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | | main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 |
| main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 |
| main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | |
| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:134:13:134:13 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 |
| main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | |
| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 |
| main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 |
| main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | |
| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 |
| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | | main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 |
| main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | |
| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | | main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 |
@@ -216,29 +198,17 @@ edges
| main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | |
| main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 |
| main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | |
| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 |
| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 |
| main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | | main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | |
| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | | main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 |
@@ -285,31 +255,22 @@ edges
| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | | main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 |
| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 |
| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | |
| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | |
| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 |
| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 |
| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | | main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | |
| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 |
| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 |
| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | |
| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 |
| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | |
| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | |
| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | |
| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | | main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | |
| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | MaD:39 |
| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:39 |
| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | | main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 |
| main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | | main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | |
@@ -328,23 +289,18 @@ edges
| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | | main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 |
| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 |
| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | |
| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | |
| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 |
| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 |
| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 |
| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | | main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | |
| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 |
| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 |
| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | | main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | |
| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 |
| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 |
| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | |
| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | |
| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 |
| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 |
models models
@@ -386,7 +342,6 @@ models
| 36 | Summary: <poem::session::cookie_config::CookieConfig>::name; Argument[self]; ReturnValue; taint | | 36 | Summary: <poem::session::cookie_config::CookieConfig>::name; Argument[self]; ReturnValue; taint |
| 37 | Summary: <poem::session::cookie_config::CookieConfig>::path; Argument[self]; ReturnValue; taint | | 37 | Summary: <poem::session::cookie_config::CookieConfig>::path; Argument[self]; ReturnValue; taint |
| 38 | Summary: <poem::session::cookie_config::CookieConfig>::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | | 38 | Summary: <poem::session::cookie_config::CookieConfig>::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint |
| 39 | Summary: <poem::web::cookie::Cookie>::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; Argument[self]; taint |
nodes nodes
| main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) |
| main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) |
@@ -526,6 +481,7 @@ nodes
| main.rs:131:20:131:20 | c | semmle.label | c | | main.rs:131:20:131:20 | c | semmle.label | c |
| main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() | | main.rs:131:20:131:28 | c.clone() | semmle.label | c.clone() |
| main.rs:134:9:134:9 | d | semmle.label | d | | main.rs:134:9:134:9 | d | semmle.label | d |
| main.rs:134:13:134:13 | c | semmle.label | c |
| main.rs:134:13:134:35 | c.set_partitioned(...) | semmle.label | c.set_partitioned(...) | | main.rs:134:13:134:35 | c.set_partitioned(...) | semmle.label | c.set_partitioned(...) |
| main.rs:135:13:135:18 | insert | semmle.label | insert | | main.rs:135:13:135:18 | insert | semmle.label | insert |
| main.rs:135:20:135:20 | d | semmle.label | d | | main.rs:135:20:135:20 | d | semmle.label | d |

View File

@@ -61,43 +61,42 @@ edges
| 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:9:35:10 | s6 | provenance | |
| main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | |
| main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | | main.rs:20: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:40 | | 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:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | | 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:30 |
| 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:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:24 | | 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:44 | l2.align_to(...) [Ok] | provenance | MaD:24 | | 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:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | |
| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:40 | | 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:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:40 | | 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:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:33 | | 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:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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: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: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:32 | | main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:31 |
| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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: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:43 | | 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:32 | | main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:31 |
| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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: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:42 | | main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:40 |
| main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | |
| main.rs:36:9:36:10 | l6 [Layout.size] | main.rs:37:31:37:32 | l6 [Layout.size] | provenance | |
| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | |
| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | main.rs:36:9:36:10 | l6 [Layout.size] | 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:32 |
| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:31 |
| 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:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:37 | | main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | |
| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:36 |
| main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | 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:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | |
| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:32 | | 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:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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:45 | ... + ... | provenance | |
@@ -105,54 +104,56 @@ edges
| 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:53 | ... * ... | 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:58:34:58:34 | v | provenance | |
| main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | 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:40 | | 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:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | 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: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:34 | | 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:40 | | 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:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | 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: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:34 | | 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:40 | | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:38 |
| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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:35 | | 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:40 | | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:38 |
| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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:35 | | main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:34 |
| main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | 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: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:39 | | 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:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | | 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:34 | | main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:33 |
| 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: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:60:34:60:35 | k1 | provenance | |
| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:27 | | main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | |
| main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | | main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | |
| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:29 | | 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: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: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:40 | | 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:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | | 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:26 |
| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | |
| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:40 | | 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:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | 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: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:40 | | 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:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:28 |
| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:40 | | 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:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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:40 | | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:38 |
| main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | | 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:25 |
| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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: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:40 | | 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:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | | 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:30 |
| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
@@ -165,14 +166,14 @@ edges
| main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | 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:96:35:96:36 | l1 | provenance | |
| main.rs:92:9:92:10 | l1 | main.rs:102:35:102: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:40 | | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:38 |
| main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | | 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:25 |
| 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: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:109:35:109:36 | l1 | provenance | |
| main.rs:96:35:96:36 | l1 | main.rs:111:35:111: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: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:40 | | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:38 |
| main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | | 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:25 |
| 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:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
@@ -185,26 +186,26 @@ 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: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: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: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:40 | | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:38 |
| main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | | 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:25 |
| 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: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: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: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: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:40 | | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:38 |
| main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | | 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: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:45 | | main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:43 |
| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs: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: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:40 | | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:38 |
| main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | | 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: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:44 | | main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:42 |
| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs: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: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:40 | | 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:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | | 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:30 |
| 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:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 |
@@ -214,7 +215,7 @@ 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:192:46:192:46 | v | provenance | |
| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | 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: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:40 | | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:38 |
| main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | | 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:25 |
| 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:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 |
@@ -251,20 +252,21 @@ edges
| main.rs:230:46:230:46 | v | main.rs:230:13:230:44 | ...::try_with_capacity_in | provenance | MaD:3 Sink:MaD:3 | | main.rs:230:46:230:46 | v | main.rs:230:13:230:44 | ...::try_with_capacity_in | provenance | MaD:3 Sink:MaD:3 |
| main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | | main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | |
| main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | | 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:47 | user_input.parse() [Ok] | provenance | MaD:41 | | 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: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:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | 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:9:280:17 | num_bytes | provenance | |
| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:43 | | main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:41 |
| main.rs:280:21:280:77 | ... * ... | main.rs:280:9:280:17 | num_bytes | provenance | | | 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: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:40 | | 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:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | | 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:30 |
| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | 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: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: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:38 | | main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:36 |
| main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | 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:320:34:320:34 | v | provenance | |
| main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | |
@@ -274,9 +276,9 @@ edges
| main.rs:317:9:317:9 | v | main.rs:325:22:325:22 | v | provenance | | | 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: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: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:38 | | 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:41 | | 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:40 | | main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:38 |
| main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | 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: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 | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | |
@@ -307,29 +309,27 @@ models
| 20 | Sink: libc::unix::malloc; Argument[0]; alloc-size | | 20 | Sink: libc::unix::malloc; Argument[0]; alloc-size |
| 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size | | 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size |
| 22 | Source: std::env::args; ReturnValue.Element; commandargs | | 22 | Source: std::env::args; ReturnValue.Element; commandargs |
| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 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]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 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 | | 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 | | 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]; 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 | | 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]; 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 | | 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.Field[core::alloc::layout::Layout::size]; value | | 31 | Summary: <core::alloc::layout::Layout>::from_size_align_unchecked; Argument[0]; ReturnValue; taint |
| 32 | 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>::pad_to_align; Argument[self]; 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; 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>::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::alloc::layout::Layout>::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | | 36 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value |
| 37 | Summary: <core::alloc::layout::Layout>::size; Argument[self]; ReturnValue; taint | | 37 | Summary: <core::result::Result>::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 38 | Summary: <core::option::Option>::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 38 | Summary: <core::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value |
| 39 | Summary: <core::result::Result>::expect; 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::result::Result>::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 40 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint |
| 41 | Summary: <core::str>::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 41 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint |
| 42 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint | | 42 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
| 43 | Summary: <core::usize as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint | | 43 | Summary: core::cmp::min; Argument[0]; ReturnValue; value |
| 44 | Summary: core::cmp::max; Argument[0]; ReturnValue; value |
| 45 | Summary: core::cmp::min; Argument[0]; ReturnValue; value |
nodes nodes
| main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize |
| main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc |
@@ -341,9 +341,11 @@ nodes
| main.rs:21:13:21:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:21:13:21:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:21:31:21:32 | l2 | semmle.label | l2 | | main.rs:21:31:21:32 | l2 | semmle.label | l2 |
| main.rs:22:13:22:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:22:13:22:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:22:31:22:32 | l2 | semmle.label | l2 |
| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] | | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] |
| main.rs:22:31:22:53 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:22:31:22:53 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:23:13:23:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:23:13:23:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:23:31:23:32 | l2 | semmle.label | l2 |
| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] | | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | semmle.label | l2.align_to(...) [Ok] |
| main.rs:23:31:23:53 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:23:31:23:53 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:23:31:23:68 | ... .pad_to_align() | semmle.label | ... .pad_to_align() | | main.rs:23:31:23:68 | ... .pad_to_align() | semmle.label | ... .pad_to_align() |
@@ -364,15 +366,13 @@ nodes
| main.rs:35:15:35:49 | ... * ... | semmle.label | ... * ... | | main.rs:35:15:35:49 | ... * ... | semmle.label | ... * ... |
| main.rs:35:49:35:49 | v | semmle.label | v | | main.rs:35:49:35:49 | v | semmle.label | v |
| main.rs:36:9:36:10 | l6 | semmle.label | l6 | | main.rs:36:9:36:10 | l6 | semmle.label | l6 |
| main.rs:36:9:36:10 | l6 [Layout.size] | semmle.label | l6 [Layout.size] |
| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) |
| main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | semmle.label | ...::from_size_align_unchecked(...) [Layout.size] |
| main.rs:36:60:36:61 | s6 | semmle.label | s6 | | main.rs:36:60:36:61 | s6 | semmle.label | s6 |
| main.rs:37:13:37:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:37:13:37:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:37:31:37:32 | l6 | semmle.label | l6 | | main.rs:37:31:37:32 | l6 | semmle.label | l6 |
| main.rs:37:31:37:32 | l6 [Layout.size] | semmle.label | l6 [Layout.size] |
| main.rs:39:9:39:10 | l7 | semmle.label | l7 | | main.rs:39:9:39:10 | l7 | semmle.label | l7 |
| main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | semmle.label | ...::from_size_align_unchecked(...) |
| main.rs:39:60:39:61 | l6 | semmle.label | l6 |
| main.rs:39:60:39:68 | l6.size() | semmle.label | l6.size() | | main.rs:39:60:39:68 | l6.size() | semmle.label | l6.size() |
| main.rs:40:13:40:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:40:13:40:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:40:31:40:32 | l7 | semmle.label | l7 | | main.rs:40:31:40:32 | l7 | semmle.label | l7 |
@@ -411,6 +411,7 @@ nodes
| main.rs:61:31:61:32 | k2 | semmle.label | k2 | | main.rs:61:31:61:32 | k2 | semmle.label | k2 |
| main.rs:62:9:62:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | | main.rs:62:9:62:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
| main.rs:62:10:62:11 | k3 | semmle.label | k3 | | main.rs:62:10:62:11 | k3 | semmle.label | k3 |
| main.rs:62:24:62:25 | k1 | semmle.label | k1 |
| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | semmle.label | k1.extend(...) [Ok, tuple.0] | | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | semmle.label | k1.extend(...) [Ok, tuple.0] |
| main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] |
| main.rs:63:13:63:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:63:13:63:29 | ...::alloc | semmle.label | ...::alloc |
@@ -420,6 +421,7 @@ nodes
| main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:64:48:64:49 | k1 | semmle.label | k1 | | main.rs:64:48:64:49 | k1 | semmle.label | k1 |
| main.rs:65:13:65:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:65:13:65:29 | ...::alloc | semmle.label | ...::alloc |
| main.rs:65:31:65:32 | k1 | semmle.label | k1 |
| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | semmle.label | k1.extend_packed(...) [Ok] | | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | semmle.label | k1.extend_packed(...) [Ok] |
| main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() |
| main.rs:67:9:67:10 | l4 | semmle.label | l4 | | main.rs:67:9:67:10 | l4 | semmle.label | l4 |
@@ -532,6 +534,7 @@ nodes
| main.rs:231:42:231:42 | v | semmle.label | v | | main.rs:231:42:231:42 | v | semmle.label | v |
| main.rs:279:24:279:41 | ...: String | semmle.label | ...: String | | main.rs:279:24:279:41 | ...: String | semmle.label | ...: String |
| main.rs:280:9:280:17 | num_bytes | semmle.label | num_bytes | | main.rs:280:9:280:17 | num_bytes | semmle.label | num_bytes |
| main.rs:280:21:280:30 | user_input | semmle.label | user_input |
| main.rs:280:21:280:47 | user_input.parse() [Ok] | semmle.label | user_input.parse() [Ok] | | main.rs:280:21:280:47 | user_input.parse() [Ok] | semmle.label | user_input.parse() [Ok] |
| main.rs:280:21:280:48 | TryExpr | semmle.label | TryExpr | | main.rs:280:21:280:48 | TryExpr | semmle.label | TryExpr |
| main.rs:280:21:280:77 | ... * ... | semmle.label | ... * ... | | main.rs:280:21:280:77 | ... * ... | semmle.label | ... * ... |

View File

@@ -299,7 +299,8 @@ impl<T> MyOption<T> {
} }
// summary=<test::option::MyOption>::insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated // summary=<test::option::MyOption>::insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated
// summary=<test::option::MyOption>::insert;Argument[0];ReturnValue.Reference;value;dfc-generated // This summary is currently missing because of access path limit
// summary-MISSING=<test::option::MyOption>::insert;Argument[0];ReturnValue.Reference;value;dfc-generated
// The content of `self` is overwritten so it does not flow to the return value. // The content of `self` is overwritten so it does not flow to the return value.
// SPURIOUS-summary=<test::option::MyOption>::insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated // SPURIOUS-summary=<test::option::MyOption>::insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated
pub fn insert(&mut self, value: T) -> &mut T { pub fn insert(&mut self, value: T) -> &mut T {
@@ -310,7 +311,8 @@ impl<T> MyOption<T> {
} }
// summary=<test::option::MyOption>::get_or_insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated // summary=<test::option::MyOption>::get_or_insert;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated
// summary=<test::option::MyOption>::get_or_insert;Argument[0];ReturnValue.Reference;value;dfc-generated // This summary is currently missing because of access path limit
// summary-MISSING=<test::option::MyOption>::get_or_insert;Argument[0];ReturnValue.Reference;value;dfc-generated
// summary=<test::option::MyOption>::get_or_insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated // summary=<test::option::MyOption>::get_or_insert;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated
pub fn get_or_insert(&mut self, value: T) -> &mut T { pub fn get_or_insert(&mut self, value: T) -> &mut T {
self.get_or_insert_with(|| value) self.get_or_insert_with(|| value)
@@ -325,7 +327,8 @@ impl<T> MyOption<T> {
} }
// summary=<test::option::MyOption>::get_or_insert_with;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated // summary=<test::option::MyOption>::get_or_insert_with;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated
// MISSING: Mutating `self` parameter. // summary=<test::option::MyOption>::get_or_insert_with;Argument[0].ReturnValue;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated
// SPURIOUS-summary=<test::option::MyOption>::get_or_insert_with;Argument[0];Argument[self].Reference.Field[test::option::MyOption::MySome(0)];value;dfc-generated
pub fn get_or_insert_with<F>(&mut self, f: F) -> &mut T pub fn get_or_insert_with<F>(&mut self, f: F) -> &mut T
where where
F: FnOnce() -> T, F: FnOnce() -> T,