Merge pull request #19881 from hvitved/rust/dataflow-traits

Rust: Data flow through trait methods
This commit is contained in:
Tom Hvitved
2025-06-27 08:55:48 +02:00
committed by GitHub
15 changed files with 942 additions and 578 deletions

View File

@@ -226,7 +226,6 @@ lib/codeql/rust/elements/internal/AsmRegSpecConstructor.qll bf3e0783645622691183
lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll 7ad0a5b86922e321da9f8c7ea8aefa88068b27bcea3890f981b061a204ab576d 65f13c423ef42209bd514523f21dd1e43cc4f5c191bdb85ba7128c76241f78a8
lib/codeql/rust/elements/internal/AsmSymConstructor.qll 9c7e8471081b9173f01592d4b9d22584a0d1cee6b4851050d642ddaa4017659e adc5b4b2a8cd7164da4867d83aa08c6e54c45614c1f4fc9aa1cbbedd3c20a1b3
lib/codeql/rust/elements/internal/AsmSymImpl.qll e173807c5b6cf856f5f4eaedb2be41d48db95dd8a973e1dc857a883383feec50 ab19c9f479c0272a5257ab45977c9f9dd60380fe33b4ade14f3dddf2970112de
lib/codeql/rust/elements/internal/AssocItemImpl.qll 33be2a25b94eb32c44b973351f0babf6d46d35d5a0a06f1064418c94c40b01e9 5e42adb18b5c2f9246573d7965ce91013370f16d92d8f7bda31232cef7a549c6
lib/codeql/rust/elements/internal/AssocItemListConstructor.qll 1977164a68d52707ddee2f16e4d5a3de07280864510648750016010baec61637 bb750f1a016b42a32583b423655279e967be5def66f6b68c5018ec1e022e25e1
lib/codeql/rust/elements/internal/AssocItemListImpl.qll 70e82744464827326bfc394dab417f39905db155fb631f804bf1f27e23892698 760c7b42137d010e15920f9623e461daaf16518ab44a36a15259e549ecd4fa7a
lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll 58b4ac5a532e55d71f77a5af8eadaf7ba53a8715c398f48285dac1db3a6c87a3 f0d889f32d9ea7bd633b495df014e39af24454608253200c05721022948bd856

1
rust/ql/.gitattributes generated vendored
View File

@@ -228,7 +228,6 @@
/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AsmSymConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AsmSymImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll linguist-generated

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Implemented support for data flow through trait functions. For the purpose of data flow, calls to trait functions dispatch to all possible implementations.

View File

@@ -404,10 +404,20 @@ module RustDataFlow implements InputSig<Location> {
/** Gets a viable implementation of the target of the given `Call`. */
DataFlowCallable viableCallable(DataFlowCall call) {
exists(Callable target | target = call.asCallCfgNode().getCall().getStaticTarget() |
target = result.asCfgScope()
exists(Call c | c = call.asCallCfgNode().getCall() |
result.asCfgScope() = c.getARuntimeTarget()
or
target = result.asSummarizedCallable()
exists(SummarizedCallable sc, Function staticTarget |
staticTarget = c.getStaticTarget() and
sc = result.asSummarizedCallable()
|
sc = staticTarget
or
// only apply trait models to concrete implementations when they are not
// defined in source code
staticTarget.implements(sc) and
not staticTarget.fromSource()
)
)
}

View File

@@ -32,6 +32,8 @@
* - `Field[t(i)]`: position `i` inside the variant/struct with canonical path `v`, for example
* `Field[core::option::Option::Some(0)]`.
* - `Field[i]`: the `i`th element of a tuple.
* - `Reference`: the referenced value.
* - `Future`: the value being computed asynchronously.
* 3. The `kind` column is a tag that can be referenced from QL to determine to
* which classes the interpreted elements should be added. For example, for
* sources `"remote"` indicates a default remote flow source, and for summaries
@@ -211,6 +213,10 @@ private class SummarizedCallableFromModel extends SummarizedCallable::Range {
this.getCanonicalPath() = path
}
override predicate hasProvenance(Provenance provenance) {
summaryModel(path, _, _, _, provenance, _)
}
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
) {

View File

@@ -1,4 +1,3 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `AssocItem`.
*
@@ -12,6 +11,10 @@ private import codeql.rust.elements.internal.generated.AssocItem
* be referenced directly.
*/
module Impl {
private import rust
private import codeql.rust.internal.PathResolution
// the following QLdoc is generated: if you need to edit it, do it in the schema file
/**
* An associated item in a `Trait` or `Impl`.
*
@@ -21,5 +24,15 @@ module Impl {
* // ^^^^^^^^^^^^^
* ```
*/
class AssocItem extends Generated::AssocItem { }
class AssocItem extends Generated::AssocItem {
/** Holds if this item implements trait item `other`. */
pragma[nomagic]
predicate implements(AssocItem other) {
exists(TraitItemNode t, ImplItemNode i, string name |
other = t.getAssocItem(pragma[only_bind_into](name)) and
t = i.resolveTraitTy() and
this = i.getAssocItem(pragma[only_bind_into](name))
)
}
}
}

View File

@@ -65,6 +65,17 @@ module Impl {
not exists(TypeInference::resolveMethodCallTarget(this)) and
result = this.(CallExpr).getStaticTarget()
}
/** Gets a runtime target of this call, if any. */
pragma[nomagic]
Function getARuntimeTarget() {
result.hasImplementation() and
(
result = this.getStaticTarget()
or
result.implements(this.getStaticTarget())
)
}
}
/** Holds if the call expression dispatches to a trait method. */

View File

@@ -540,6 +540,13 @@ abstract class ImplOrTraitItemNode extends ItemNode {
/** Gets an associated item belonging to this trait or `impl` block. */
abstract AssocItemNode getAnAssocItem();
/** Gets the associated item named `name` belonging to this trait or `impl` block. */
pragma[nomagic]
AssocItemNode getAssocItem(string name) {
result = this.getAnAssocItem() and
result.getName() = name
}
/** Holds if this trait or `impl` block declares an associated item named `name`. */
pragma[nomagic]
predicate hasAssocItem(string name) { name = this.getAnAssocItem().getName() }

View File

@@ -1,2 +1,2 @@
multipleCallTargets
| main.rs:225:14:225:29 | ...::deref(...) |
| main.rs:272:14:272:29 | ...::deref(...) |

View File

@@ -48,85 +48,125 @@ edges
| main.rs:86:13:86:27 | pass_through(...) | main.rs:86:9:86:9 | b | provenance | |
| main.rs:86:26:86:26 | a | main.rs:82:21:82:26 | ...: i64 | provenance | |
| main.rs:86:26:86:26 | a | main.rs:86:13:86:27 | pass_through(...) | provenance | |
| main.rs:98:22:98:27 | ...: i64 | main.rs:99:14:99:14 | n | provenance | |
| main.rs:102:30:108:5 | { ... } | main.rs:121:13:121:25 | mn.get_data() | provenance | |
| main.rs:106:13:106:21 | source(...) | main.rs:102:30:108:5 | { ... } | provenance | |
| main.rs:110:27:110:32 | ...: i64 | main.rs:110:42:116:5 | { ... } | provenance | |
| main.rs:121:9:121:9 | a | main.rs:122:10:122:10 | a | provenance | |
| main.rs:121:13:121:25 | mn.get_data() | main.rs:121:9:121:9 | a | provenance | |
| main.rs:127:9:127:9 | a | main.rs:128:16:128:16 | a | provenance | |
| main.rs:127:13:127:21 | source(...) | main.rs:127:9:127:9 | a | provenance | |
| main.rs:128:16:128:16 | a | main.rs:98:22:98:27 | ...: i64 | provenance | |
| main.rs:133:9:133:9 | a | main.rs:134:29:134:29 | a | provenance | |
| main.rs:133:13:133:21 | source(...) | main.rs:133:9:133:9 | a | provenance | |
| main.rs:134:9:134:9 | b | main.rs:135:10:135:10 | b | provenance | |
| main.rs:134:13:134:30 | mn.data_through(...) | main.rs:134:9:134:9 | b | provenance | |
| main.rs:134:29:134:29 | a | main.rs:110:27:110:32 | ...: i64 | provenance | |
| main.rs:134:29:134:29 | a | main.rs:134:13:134:30 | mn.data_through(...) | provenance | |
| main.rs:140:9:140:9 | a | main.rs:141:25:141:25 | a | provenance | |
| main.rs:140:13:140:21 | source(...) | main.rs:140:9:140:9 | a | provenance | |
| main.rs:141:25:141:25 | a | main.rs:98:22:98:27 | ...: i64 | provenance | |
| main.rs:146:9:146:9 | a | main.rs:147:38:147:38 | a | provenance | |
| main.rs:146:13:146:22 | source(...) | main.rs:146:9:146:9 | a | provenance | |
| main.rs:147:9:147:9 | b | main.rs:148:10:148:10 | b | provenance | |
| main.rs:147:13:147:39 | ...::data_through(...) | main.rs:147:9:147:9 | b | provenance | |
| main.rs:147:38:147:38 | a | main.rs:110:27:110:32 | ...: i64 | provenance | |
| main.rs:147:38:147:38 | a | main.rs:147:13:147:39 | ...::data_through(...) | provenance | |
| main.rs:159:12:159:17 | ...: i64 | main.rs:160:24:160:24 | n | provenance | |
| main.rs:160:9:160:26 | MyInt {...} [MyInt] | main.rs:159:28:161:5 | { ... } [MyInt] | provenance | |
| main.rs:160:24:160:24 | n | main.rs:160:9:160:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:165:9:165:9 | n [MyInt] | main.rs:166:9:166:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:165:13:165:34 | ...::new(...) [MyInt] | main.rs:165:9:165:9 | n [MyInt] | provenance | |
| main.rs:165:24:165:33 | source(...) | main.rs:159:12:159:17 | ...: i64 | provenance | |
| main.rs:165:24:165:33 | source(...) | main.rs:165:13:165:34 | ...::new(...) [MyInt] | provenance | |
| main.rs:166:9:166:26 | MyInt {...} [MyInt] | main.rs:166:24:166:24 | m | provenance | |
| main.rs:166:24:166:24 | m | main.rs:167:10:167:10 | m | provenance | |
| main.rs:173:12:173:15 | SelfParam [MyInt] | main.rs:175:24:175:27 | self [MyInt] | provenance | |
| main.rs:175:9:175:35 | MyInt {...} [MyInt] | main.rs:173:42:176:5 | { ... } [MyInt] | provenance | |
| main.rs:175:24:175:27 | self [MyInt] | main.rs:175:24:175:33 | self.value | provenance | |
| main.rs:175:24:175:33 | self.value | main.rs:175:9:175:35 | MyInt {...} [MyInt] | provenance | |
| main.rs:195:9:195:9 | a [MyInt] | main.rs:197:13:197:13 | a [MyInt] | provenance | |
| main.rs:195:13:195:38 | MyInt {...} [MyInt] | main.rs:195:9:195:9 | a [MyInt] | provenance | |
| main.rs:195:28:195:36 | source(...) | main.rs:195:13:195:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:197:9:197:9 | c [MyInt] | main.rs:198:10:198:10 | c [MyInt] | provenance | |
| main.rs:197:13:197:13 | a [MyInt] | main.rs:173:12:173:15 | SelfParam [MyInt] | provenance | |
| main.rs:197:13:197:13 | a [MyInt] | main.rs:197:13:197:17 | ... + ... [MyInt] | provenance | |
| main.rs:197:13:197:17 | ... + ... [MyInt] | main.rs:197:9:197:9 | c [MyInt] | provenance | |
| main.rs:198:10:198:10 | c [MyInt] | main.rs:198:10:198:16 | c.value | provenance | |
| main.rs:205:9:205:9 | a [MyInt] | main.rs:173:12:173:15 | SelfParam [MyInt] | provenance | |
| main.rs:205:9:205:9 | a [MyInt] | main.rs:207:13:207:20 | a.add(...) [MyInt] | provenance | |
| main.rs:205:13:205:38 | MyInt {...} [MyInt] | main.rs:205:9:205:9 | a [MyInt] | provenance | |
| main.rs:205:28:205:36 | source(...) | main.rs:205:13:205:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:207:9:207:9 | d [MyInt] | main.rs:208:10:208:10 | d [MyInt] | provenance | |
| main.rs:207:13:207:20 | a.add(...) [MyInt] | main.rs:207:9:207:9 | d [MyInt] | provenance | |
| main.rs:208:10:208:10 | d [MyInt] | main.rs:208:10:208:16 | d.value | provenance | |
| main.rs:242:18:242:21 | SelfParam [MyInt] | main.rs:242:48:244:5 | { ... } [MyInt] | provenance | |
| main.rs:246:26:246:37 | ...: MyInt [MyInt] | main.rs:246:49:248:5 | { ... } [MyInt] | provenance | |
| main.rs:252:9:252:9 | a [MyInt] | main.rs:254:49:254:49 | a [MyInt] | provenance | |
| main.rs:104:22:104:27 | ...: i64 | main.rs:105:14:105:14 | n | provenance | |
| main.rs:108:30:110:5 | { ... } | main.rs:138:13:138:25 | mn.get_data() | provenance | |
| main.rs:109:35:109:43 | source(...) | main.rs:108:30:110:5 | { ... } | provenance | |
| main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | provenance | |
| main.rs:118:28:118:33 | ...: i64 | main.rs:119:14:119:14 | n | provenance | |
| main.rs:122:36:124:5 | { ... } | main.rs:132:13:132:30 | x.get_data_trait() | provenance | |
| main.rs:122:36:124:5 | { ... } | main.rs:142:13:142:31 | mn.get_data_trait() | provenance | |
| main.rs:123:35:123:44 | source(...) | main.rs:122:36:124:5 | { ... } | provenance | |
| main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | provenance | |
| main.rs:132:9:132:9 | a | main.rs:133:10:133:10 | a | provenance | |
| main.rs:132:13:132:30 | x.get_data_trait() | main.rs:132:9:132:9 | a | provenance | |
| main.rs:138:9:138:9 | a | main.rs:139:10:139:10 | a | provenance | |
| main.rs:138:13:138:25 | mn.get_data() | main.rs:138:9:138:9 | a | provenance | |
| main.rs:142:9:142:9 | a | main.rs:143:10:143:10 | a | provenance | |
| main.rs:142:13:142:31 | mn.get_data_trait() | main.rs:142:9:142:9 | a | provenance | |
| main.rs:149:9:149:9 | a | main.rs:150:21:150:21 | a | provenance | |
| main.rs:149:13:149:22 | source(...) | main.rs:149:9:149:9 | a | provenance | |
| main.rs:150:21:150:21 | a | main.rs:118:28:118:33 | ...: i64 | provenance | |
| main.rs:155:9:155:9 | a | main.rs:156:16:156:16 | a | provenance | |
| main.rs:155:13:155:21 | source(...) | main.rs:155:9:155:9 | a | provenance | |
| main.rs:156:16:156:16 | a | main.rs:104:22:104:27 | ...: i64 | provenance | |
| main.rs:159:9:159:9 | a | main.rs:160:22:160:22 | a | provenance | |
| main.rs:159:13:159:22 | source(...) | main.rs:159:9:159:9 | a | provenance | |
| main.rs:160:22:160:22 | a | main.rs:118:28:118:33 | ...: i64 | provenance | |
| main.rs:166:9:166:9 | a | main.rs:167:34:167:34 | a | provenance | |
| main.rs:166:13:166:22 | source(...) | main.rs:166:9:166:9 | a | provenance | |
| main.rs:167:9:167:9 | b | main.rs:168:10:168:10 | b | provenance | |
| main.rs:167:13:167:35 | x.data_through_trait(...) | main.rs:167:9:167:9 | b | provenance | |
| main.rs:167:34:167:34 | a | main.rs:126:33:126:38 | ...: i64 | provenance | |
| main.rs:167:34:167:34 | a | main.rs:167:13:167:35 | x.data_through_trait(...) | provenance | |
| main.rs:173:9:173:9 | a | main.rs:174:29:174:29 | a | provenance | |
| main.rs:173:13:173:21 | source(...) | main.rs:173:9:173:9 | a | provenance | |
| main.rs:174:9:174:9 | b | main.rs:175:10:175:10 | b | provenance | |
| main.rs:174:13:174:30 | mn.data_through(...) | main.rs:174:9:174:9 | b | provenance | |
| main.rs:174:29:174:29 | a | main.rs:112:27:112:32 | ...: i64 | provenance | |
| main.rs:174:29:174:29 | a | main.rs:174:13:174:30 | mn.data_through(...) | provenance | |
| main.rs:178:9:178:9 | a | main.rs:179:35:179:35 | a | provenance | |
| main.rs:178:13:178:22 | source(...) | main.rs:178:9:178:9 | a | provenance | |
| main.rs:179:9:179:9 | b | main.rs:180:10:180:10 | b | provenance | |
| main.rs:179:13:179:36 | mn.data_through_trait(...) | main.rs:179:9:179:9 | b | provenance | |
| main.rs:179:35:179:35 | a | main.rs:126:33:126:38 | ...: i64 | provenance | |
| main.rs:179:35:179:35 | a | main.rs:179:13:179:36 | mn.data_through_trait(...) | provenance | |
| main.rs:187:9:187:9 | a | main.rs:188:25:188:25 | a | provenance | |
| main.rs:187:13:187:21 | source(...) | main.rs:187:9:187:9 | a | provenance | |
| main.rs:188:25:188:25 | a | main.rs:104:22:104:27 | ...: i64 | provenance | |
| main.rs:193:9:193:9 | a | main.rs:194:38:194:38 | a | provenance | |
| main.rs:193:13:193:22 | source(...) | main.rs:193:9:193:9 | a | provenance | |
| main.rs:194:9:194:9 | b | main.rs:195:10:195:10 | b | provenance | |
| main.rs:194:13:194:39 | ...::data_through(...) | main.rs:194:9:194:9 | b | provenance | |
| main.rs:194:38:194:38 | a | main.rs:112:27:112:32 | ...: i64 | provenance | |
| main.rs:194:38:194:38 | a | main.rs:194:13:194:39 | ...::data_through(...) | provenance | |
| main.rs:206:12:206:17 | ...: i64 | main.rs:207:24:207:24 | n | provenance | |
| main.rs:207:9:207:26 | MyInt {...} [MyInt] | main.rs:206:28:208:5 | { ... } [MyInt] | provenance | |
| main.rs:207:24:207:24 | n | main.rs:207:9:207:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:212:9:212:9 | n [MyInt] | main.rs:213:9:213:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:212:13:212:34 | ...::new(...) [MyInt] | main.rs:212:9:212:9 | n [MyInt] | provenance | |
| main.rs:212:24:212:33 | source(...) | main.rs:206:12:206:17 | ...: i64 | provenance | |
| main.rs:212:24:212:33 | source(...) | main.rs:212:13:212:34 | ...::new(...) [MyInt] | provenance | |
| main.rs:213:9:213:26 | MyInt {...} [MyInt] | main.rs:213:24:213:24 | m | provenance | |
| main.rs:213:24:213:24 | m | main.rs:214:10:214:10 | m | provenance | |
| main.rs:220:12:220:15 | SelfParam [MyInt] | main.rs:222:24:222:27 | self [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: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:228:10:228:14 | [post] * ... [MyInt] | main.rs:228:11:228:14 | [post] self [&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:25:228:27 | rhs [MyInt] | main.rs:228:25:228:33 | rhs.value | provenance | |
| main.rs:228:25:228:33 | rhs.value | main.rs:228:10:228:14 | [post] * ... [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:28:242:36 | source(...) | main.rs:242:13:242:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:244:9:244:9 | c [MyInt] | main.rs:245:10:245:10 | c [MyInt] | provenance | |
| main.rs:244:13:244:13 | a [MyInt] | main.rs:220:12:220:15 | SelfParam [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: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: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:28:252:36 | source(...) | main.rs:252:13:252:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:254:9:254:26 | MyInt {...} [MyInt] | main.rs:254:24:254:24 | c | provenance | |
| main.rs:254:24:254:24 | c | main.rs:255:10:255:10 | c | provenance | |
| main.rs:254:30:254:53 | ...::take_self(...) [MyInt] | main.rs:254:9:254:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:254:49:254:49 | a [MyInt] | main.rs:242:18:242:21 | SelfParam [MyInt] | provenance | |
| main.rs:254:49:254:49 | a [MyInt] | main.rs:254:30:254:53 | ...::take_self(...) [MyInt] | provenance | |
| main.rs:258:9:258:9 | b [MyInt] | main.rs:259:54:259:54 | b [MyInt] | provenance | |
| main.rs:258:13:258:39 | MyInt {...} [MyInt] | main.rs:258:9:258:9 | b [MyInt] | provenance | |
| main.rs:258:28:258:37 | source(...) | main.rs:258:13:258:39 | MyInt {...} [MyInt] | provenance | |
| main.rs:259:9:259:26 | MyInt {...} [MyInt] | main.rs:259:24:259:24 | c | provenance | |
| main.rs:259:24:259:24 | c | main.rs:260:10:260:10 | c | provenance | |
| main.rs:259:30:259:55 | ...::take_second(...) [MyInt] | main.rs:259:9:259:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:259:54:259:54 | b [MyInt] | main.rs:246:26:246:37 | ...: MyInt [MyInt] | provenance | |
| main.rs:259:54:259:54 | b [MyInt] | main.rs:259:30:259:55 | ...::take_second(...) [MyInt] | provenance | |
| main.rs:268:32:272:1 | { ... } | main.rs:287:41:287:54 | async_source(...) | provenance | |
| main.rs:269:9:269:9 | a | main.rs:268:32:272:1 | { ... } | provenance | |
| main.rs:269:9:269:9 | a | main.rs:270:10:270:10 | a | provenance | |
| main.rs:269:13:269:21 | source(...) | main.rs:269:9:269:9 | a | provenance | |
| main.rs:279:13:279:13 | c | main.rs:280:14:280:14 | c | provenance | |
| main.rs:279:17:279:25 | source(...) | main.rs:279:13:279:13 | c | provenance | |
| main.rs:287:9:287:9 | a | main.rs:288:10:288:10 | a | provenance | |
| main.rs:287:13:287:55 | ...::block_on(...) | main.rs:287:9:287:9 | a | provenance | |
| main.rs:287:41:287:54 | async_source(...) | main.rs:287:13:287:55 | ...::block_on(...) | provenance | MaD:1 |
| main.rs:254:9:254:9 | d [MyInt] | main.rs:255:10:255:10 | 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:259:9:259:9 | b [MyInt] | main.rs:261:35:261:35 | b [MyInt] | provenance | |
| main.rs:259:13:259:39 | MyInt {...} [MyInt] | main.rs:259:9:259:9 | b [MyInt] | provenance | |
| main.rs:259:28:259:37 | source(...) | main.rs:259:13:259:39 | MyInt {...} [MyInt] | provenance | |
| main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | main.rs:261:32:261:32 | [post] a [MyInt] | provenance | |
| main.rs:261:32:261:32 | [post] a [MyInt] | main.rs:262:10:262:10 | a [MyInt] | provenance | |
| main.rs:261:35:261:35 | b [MyInt] | main.rs:227:30:227:39 | ...: MyInt [MyInt] | provenance | |
| main.rs:261:35:261:35 | b [MyInt] | main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | provenance | |
| main.rs:262:10:262:10 | a [MyInt] | main.rs:262:10:262:16 | a.value | provenance | |
| main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | provenance | |
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | provenance | |
| main.rs:299:9:299:9 | a [MyInt] | main.rs:301:50:301:50 | a [MyInt] | provenance | |
| main.rs:299:13:299:38 | MyInt {...} [MyInt] | main.rs:299:9:299:9 | a [MyInt] | provenance | |
| main.rs:299:28:299:36 | source(...) | main.rs:299:13:299:38 | MyInt {...} [MyInt] | provenance | |
| main.rs:301:9:301:26 | MyInt {...} [MyInt] | main.rs:301:24:301:24 | c | provenance | |
| main.rs:301:24:301:24 | c | main.rs:302:10:302:10 | c | provenance | |
| main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | main.rs:301:9:301:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | provenance | |
| main.rs:301:50:301:50 | a [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | provenance | |
| main.rs:305:9:305:9 | b [MyInt] | main.rs:306:55:306:55 | b [MyInt] | provenance | |
| main.rs:305:13:305:39 | MyInt {...} [MyInt] | main.rs:305:9:305:9 | b [MyInt] | provenance | |
| main.rs:305:28:305:37 | source(...) | main.rs:305:13:305:39 | MyInt {...} [MyInt] | provenance | |
| main.rs:306:9:306:26 | MyInt {...} [MyInt] | main.rs:306:24:306:24 | c | provenance | |
| main.rs:306:24:306:24 | c | main.rs:307:10:307:10 | c | provenance | |
| main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | main.rs:306:9:306:26 | MyInt {...} [MyInt] | provenance | |
| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | provenance | |
| main.rs:306:55:306:55 | b [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | provenance | |
| main.rs:315:32:319:1 | { ... } | main.rs:334:41:334:54 | async_source(...) | provenance | |
| main.rs:316:9:316:9 | a | main.rs:315:32:319:1 | { ... } | provenance | |
| main.rs:316:9:316:9 | a | main.rs:317:10:317:10 | a | provenance | |
| main.rs:316:13:316:21 | source(...) | main.rs:316:9:316:9 | a | provenance | |
| main.rs:326:13:326:13 | c | main.rs:327:14:327:14 | 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: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 |
nodes
| main.rs:12:28:14:1 | { ... } | semmle.label | { ... } |
| main.rs:13:5:13:13 | source(...) | semmle.label | source(...) |
@@ -179,94 +219,138 @@ nodes
| main.rs:86:13:86:27 | pass_through(...) | semmle.label | pass_through(...) |
| main.rs:86:26:86:26 | a | semmle.label | a |
| main.rs:87:10:87:10 | b | semmle.label | b |
| main.rs:98:22:98:27 | ...: i64 | semmle.label | ...: i64 |
| main.rs:99:14:99:14 | n | semmle.label | n |
| main.rs:102:30:108:5 | { ... } | semmle.label | { ... } |
| main.rs:106:13:106:21 | source(...) | semmle.label | source(...) |
| main.rs:110:27:110:32 | ...: i64 | semmle.label | ...: i64 |
| main.rs:110:42:116:5 | { ... } | semmle.label | { ... } |
| main.rs:121:9:121:9 | a | semmle.label | a |
| main.rs:121:13:121:25 | mn.get_data() | semmle.label | mn.get_data() |
| main.rs:122:10:122:10 | a | semmle.label | a |
| main.rs:127:9:127:9 | a | semmle.label | a |
| main.rs:127:13:127:21 | source(...) | semmle.label | source(...) |
| main.rs:128:16:128:16 | a | semmle.label | a |
| main.rs:133:9:133:9 | a | semmle.label | a |
| main.rs:133:13:133:21 | source(...) | semmle.label | source(...) |
| main.rs:134:9:134:9 | b | semmle.label | b |
| main.rs:134:13:134:30 | mn.data_through(...) | semmle.label | mn.data_through(...) |
| main.rs:134:29:134:29 | a | semmle.label | a |
| main.rs:135:10:135:10 | b | semmle.label | b |
| main.rs:140:9:140:9 | a | semmle.label | a |
| main.rs:140:13:140:21 | source(...) | semmle.label | source(...) |
| main.rs:141:25:141:25 | a | semmle.label | a |
| main.rs:146:9:146:9 | a | semmle.label | a |
| main.rs:146:13:146:22 | source(...) | semmle.label | source(...) |
| main.rs:147:9:147:9 | b | semmle.label | b |
| main.rs:147:13:147:39 | ...::data_through(...) | semmle.label | ...::data_through(...) |
| main.rs:147:38:147:38 | a | semmle.label | a |
| main.rs:148:10:148:10 | b | semmle.label | b |
| main.rs:159:12:159:17 | ...: i64 | semmle.label | ...: i64 |
| main.rs:159:28:161:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:160:9:160:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:160:24:160:24 | n | semmle.label | n |
| main.rs:165:9:165:9 | n [MyInt] | semmle.label | n [MyInt] |
| main.rs:165:13:165:34 | ...::new(...) [MyInt] | semmle.label | ...::new(...) [MyInt] |
| main.rs:165:24:165:33 | source(...) | semmle.label | source(...) |
| main.rs:166:9:166:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:166:24:166:24 | m | semmle.label | m |
| main.rs:167:10:167:10 | m | semmle.label | m |
| main.rs:173:12:173:15 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
| main.rs:173:42:176:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:175:9:175:35 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:175:24:175:27 | self [MyInt] | semmle.label | self [MyInt] |
| main.rs:175:24:175:33 | self.value | semmle.label | self.value |
| main.rs:195:9:195:9 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:195:13:195:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:195:28:195:36 | source(...) | semmle.label | source(...) |
| main.rs:197:9:197:9 | c [MyInt] | semmle.label | c [MyInt] |
| main.rs:197:13:197:13 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:197:13:197:17 | ... + ... [MyInt] | semmle.label | ... + ... [MyInt] |
| main.rs:198:10:198:10 | c [MyInt] | semmle.label | c [MyInt] |
| main.rs:198:10:198:16 | c.value | semmle.label | c.value |
| main.rs:205:9:205:9 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:205:13:205:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:205:28:205:36 | source(...) | semmle.label | source(...) |
| main.rs:207:9:207:9 | d [MyInt] | semmle.label | d [MyInt] |
| main.rs:207:13:207:20 | a.add(...) [MyInt] | semmle.label | a.add(...) [MyInt] |
| main.rs:208:10:208:10 | d [MyInt] | semmle.label | d [MyInt] |
| main.rs:208:10:208:16 | d.value | semmle.label | d.value |
| main.rs:242:18:242:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
| main.rs:242:48:244:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:246:26:246:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
| main.rs:246:49:248:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:104:22:104:27 | ...: i64 | semmle.label | ...: i64 |
| main.rs:105:14:105:14 | n | semmle.label | n |
| main.rs:108:30:110:5 | { ... } | semmle.label | { ... } |
| main.rs:109:35:109:43 | source(...) | semmle.label | source(...) |
| main.rs:112:27:112:32 | ...: i64 | semmle.label | ...: i64 |
| main.rs:112:42:114:5 | { ... } | semmle.label | { ... } |
| main.rs:118:28:118:33 | ...: i64 | semmle.label | ...: i64 |
| main.rs:119:14:119:14 | n | semmle.label | n |
| main.rs:122:36:124:5 | { ... } | semmle.label | { ... } |
| main.rs:123:35:123:44 | source(...) | semmle.label | source(...) |
| main.rs:126:33:126:38 | ...: i64 | semmle.label | ...: i64 |
| main.rs:126:48:128:5 | { ... } | semmle.label | { ... } |
| main.rs:132:9:132:9 | a | semmle.label | a |
| main.rs:132:13:132:30 | x.get_data_trait() | semmle.label | x.get_data_trait() |
| main.rs:133:10:133:10 | a | semmle.label | a |
| main.rs:138:9:138:9 | a | semmle.label | a |
| main.rs:138:13:138:25 | mn.get_data() | semmle.label | mn.get_data() |
| main.rs:139:10:139:10 | a | semmle.label | a |
| main.rs:142:9:142:9 | a | semmle.label | a |
| main.rs:142:13:142:31 | mn.get_data_trait() | semmle.label | mn.get_data_trait() |
| main.rs:143:10:143:10 | a | semmle.label | a |
| main.rs:149:9:149:9 | a | semmle.label | a |
| main.rs:149:13:149:22 | source(...) | semmle.label | source(...) |
| main.rs:150:21:150:21 | a | semmle.label | a |
| main.rs:155:9:155:9 | a | semmle.label | a |
| main.rs:155:13:155:21 | source(...) | semmle.label | source(...) |
| main.rs:156:16:156:16 | a | semmle.label | a |
| main.rs:159:9:159:9 | a | semmle.label | a |
| main.rs:159:13:159:22 | source(...) | semmle.label | source(...) |
| main.rs:160:22:160:22 | a | semmle.label | a |
| main.rs:166:9:166:9 | a | semmle.label | a |
| main.rs:166:13:166:22 | source(...) | semmle.label | source(...) |
| main.rs:167:9:167:9 | b | semmle.label | b |
| main.rs:167:13:167:35 | x.data_through_trait(...) | semmle.label | x.data_through_trait(...) |
| main.rs:167:34:167:34 | a | semmle.label | a |
| main.rs:168:10:168:10 | b | semmle.label | b |
| main.rs:173:9:173:9 | a | semmle.label | a |
| main.rs:173:13:173:21 | source(...) | semmle.label | source(...) |
| main.rs:174:9:174:9 | b | semmle.label | b |
| main.rs:174:13:174:30 | mn.data_through(...) | semmle.label | mn.data_through(...) |
| main.rs:174:29:174:29 | a | semmle.label | a |
| main.rs:175:10:175:10 | b | semmle.label | b |
| main.rs:178:9:178:9 | a | semmle.label | a |
| main.rs:178:13:178:22 | source(...) | semmle.label | source(...) |
| main.rs:179:9:179:9 | b | semmle.label | b |
| main.rs:179:13:179:36 | mn.data_through_trait(...) | semmle.label | mn.data_through_trait(...) |
| main.rs:179:35:179:35 | a | semmle.label | a |
| main.rs:180:10:180:10 | b | semmle.label | b |
| main.rs:187:9:187:9 | a | semmle.label | a |
| main.rs:187:13:187:21 | source(...) | semmle.label | source(...) |
| main.rs:188:25:188:25 | a | semmle.label | a |
| main.rs:193:9:193:9 | a | semmle.label | a |
| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) |
| main.rs:194:9:194:9 | b | semmle.label | b |
| main.rs:194:13:194:39 | ...::data_through(...) | semmle.label | ...::data_through(...) |
| main.rs:194:38:194:38 | a | semmle.label | a |
| main.rs:195:10:195:10 | b | semmle.label | b |
| main.rs:206:12:206:17 | ...: i64 | semmle.label | ...: i64 |
| main.rs:206:28:208:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:207:9:207:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:207:24:207:24 | n | semmle.label | n |
| main.rs:212:9:212:9 | n [MyInt] | semmle.label | n [MyInt] |
| main.rs:212:13:212:34 | ...::new(...) [MyInt] | semmle.label | ...::new(...) [MyInt] |
| main.rs:212:24:212:33 | source(...) | semmle.label | source(...) |
| main.rs:213:9:213:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:213:24:213:24 | m | semmle.label | m |
| main.rs:214:10:214:10 | m | semmle.label | m |
| main.rs:220:12:220:15 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
| main.rs:220:42:223:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:222:9:222:35 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:222:24:222:27 | self [MyInt] | semmle.label | self [MyInt] |
| 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:30:227:39 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
| main.rs:228:10:228:14 | [post] * ... [MyInt] | semmle.label | [post] * ... [MyInt] |
| main.rs:228:11:228:14 | [post] self [&ref, MyInt] | semmle.label | [post] self [&ref, MyInt] |
| main.rs:228:25:228:27 | rhs [MyInt] | semmle.label | rhs [MyInt] |
| main.rs:228:25:228:33 | rhs.value | semmle.label | rhs.value |
| main.rs:242:9:242:9 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:242:13:242:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:242:28:242:36 | source(...) | semmle.label | source(...) |
| main.rs:244:9:244:9 | c [MyInt] | semmle.label | c [MyInt] |
| main.rs:244:13:244:13 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:244:13:244:17 | ... + ... [MyInt] | semmle.label | ... + ... [MyInt] |
| main.rs:245:10:245:10 | c [MyInt] | semmle.label | c [MyInt] |
| main.rs:245:10:245:16 | c.value | semmle.label | c.value |
| main.rs:252:9:252:9 | a [MyInt] | semmle.label | a [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:254:9:254:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:254:24:254:24 | c | semmle.label | c |
| main.rs:254:30:254:53 | ...::take_self(...) [MyInt] | semmle.label | ...::take_self(...) [MyInt] |
| main.rs:254:49:254:49 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:255:10:255:10 | c | semmle.label | c |
| main.rs:258:9:258:9 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:258:13:258:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:258:28:258:37 | source(...) | semmle.label | source(...) |
| main.rs:259:9:259:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:259:24:259:24 | c | semmle.label | c |
| main.rs:259:30:259:55 | ...::take_second(...) [MyInt] | semmle.label | ...::take_second(...) [MyInt] |
| main.rs:259:54:259:54 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:260:10:260:10 | c | semmle.label | c |
| main.rs:268:32:272:1 | { ... } | semmle.label | { ... } |
| main.rs:269:9:269:9 | a | semmle.label | a |
| main.rs:269:13:269:21 | source(...) | semmle.label | source(...) |
| main.rs:270:10:270:10 | a | semmle.label | a |
| main.rs:279:13:279:13 | c | semmle.label | c |
| main.rs:279:17:279:25 | source(...) | semmle.label | source(...) |
| main.rs:280:14:280:14 | c | semmle.label | c |
| main.rs:287:9:287:9 | a | semmle.label | a |
| main.rs:287:13:287:55 | ...::block_on(...) | semmle.label | ...::block_on(...) |
| main.rs:287:41:287:54 | async_source(...) | semmle.label | async_source(...) |
| main.rs:288:10:288:10 | a | semmle.label | a |
| main.rs:254:9:254:9 | d [MyInt] | semmle.label | d [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:16 | d.value | semmle.label | d.value |
| main.rs:259:9:259:9 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:259:13:259:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:259:28:259:37 | source(...) | semmle.label | source(...) |
| main.rs:261:27:261:32 | [post] &mut a [&ref, MyInt] | semmle.label | [post] &mut a [&ref, MyInt] |
| main.rs:261:32:261:32 | [post] a [MyInt] | semmle.label | [post] a [MyInt] |
| main.rs:261:35:261:35 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:262:10:262:10 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:262:10:262:16 | a.value | semmle.label | a.value |
| main.rs:289:18:289:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] |
| main.rs:289:48:291:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:293:26:293:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] |
| main.rs:293:49:295:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
| main.rs:299:9:299:9 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:299:13:299:38 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:299:28:299:36 | source(...) | semmle.label | source(...) |
| main.rs:301:9:301:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:301:24:301:24 | c | semmle.label | c |
| main.rs:301:30:301:54 | ...::take_self(...) [MyInt] | semmle.label | ...::take_self(...) [MyInt] |
| main.rs:301:50:301:50 | a [MyInt] | semmle.label | a [MyInt] |
| main.rs:302:10:302:10 | c | semmle.label | c |
| main.rs:305:9:305:9 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:305:13:305:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:305:28:305:37 | source(...) | semmle.label | source(...) |
| main.rs:306:9:306:26 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] |
| main.rs:306:24:306:24 | c | semmle.label | c |
| main.rs:306:30:306:56 | ...::take_second(...) [MyInt] | semmle.label | ...::take_second(...) [MyInt] |
| main.rs:306:55:306:55 | b [MyInt] | semmle.label | b [MyInt] |
| main.rs:307:10:307:10 | c | semmle.label | c |
| main.rs:315:32:319:1 | { ... } | semmle.label | { ... } |
| main.rs:316:9:316:9 | a | semmle.label | a |
| main.rs:316:13:316:21 | source(...) | semmle.label | source(...) |
| main.rs:317:10:317:10 | a | semmle.label | a |
| main.rs:326:13:326:13 | c | semmle.label | c |
| main.rs:326:17:326:25 | source(...) | semmle.label | source(...) |
| main.rs:327:14:327:14 | c | semmle.label | c |
| main.rs:334:9:334:9 | a | semmle.label | a |
| main.rs:334:13:334:55 | ...::block_on(...) | semmle.label | ...::block_on(...) |
| main.rs:334:41:334:54 | async_source(...) | semmle.label | async_source(...) |
| main.rs:335:10:335:10 | a | semmle.label | a |
subpaths
| main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] |
| main.rs:39:10:39:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:39:10:39:21 | a.get_data() |
@@ -275,13 +359,16 @@ subpaths
| main.rs:67:26:67:26 | a | main.rs:61:17:61:22 | ...: i64 | main.rs:61:32:63:1 | { ... } | main.rs:67:13:67:27 | pass_through(...) |
| main.rs:72:26:75:5 | { ... } | main.rs:61:17:61:22 | ...: i64 | main.rs:61:32:63:1 | { ... } | main.rs:72:13:75:6 | pass_through(...) |
| main.rs:86:26:86:26 | a | main.rs:82:21:82:26 | ...: i64 | main.rs:82:36:84:5 | { ... } | main.rs:86:13:86:27 | pass_through(...) |
| main.rs:134:29:134:29 | a | main.rs:110:27:110:32 | ...: i64 | main.rs:110:42:116:5 | { ... } | main.rs:134:13:134:30 | mn.data_through(...) |
| main.rs:147:38:147:38 | a | main.rs:110:27:110:32 | ...: i64 | main.rs:110:42:116:5 | { ... } | main.rs:147:13:147:39 | ...::data_through(...) |
| main.rs:165:24:165:33 | source(...) | main.rs:159:12:159:17 | ...: i64 | main.rs:159:28:161:5 | { ... } [MyInt] | main.rs:165:13:165:34 | ...::new(...) [MyInt] |
| main.rs:197:13:197:13 | a [MyInt] | main.rs:173:12:173:15 | SelfParam [MyInt] | main.rs:173:42:176:5 | { ... } [MyInt] | main.rs:197:13:197:17 | ... + ... [MyInt] |
| main.rs:205:9:205:9 | a [MyInt] | main.rs:173:12:173:15 | SelfParam [MyInt] | main.rs:173:42:176:5 | { ... } [MyInt] | main.rs:207:13:207:20 | a.add(...) [MyInt] |
| main.rs:254:49:254:49 | a [MyInt] | main.rs:242:18:242:21 | SelfParam [MyInt] | main.rs:242:48:244:5 | { ... } [MyInt] | main.rs:254:30:254:53 | ...::take_self(...) [MyInt] |
| main.rs:259:54:259:54 | b [MyInt] | main.rs:246:26:246:37 | ...: MyInt [MyInt] | main.rs:246:49:248:5 | { ... } [MyInt] | main.rs:259:30:259:55 | ...::take_second(...) [MyInt] |
| main.rs:167:34:167:34 | a | main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | main.rs:167:13:167:35 | x.data_through_trait(...) |
| main.rs:174:29:174:29 | a | main.rs:112:27:112:32 | ...: i64 | main.rs:112:42:114:5 | { ... } | main.rs:174:13:174:30 | mn.data_through(...) |
| main.rs:179:35:179:35 | a | main.rs:126:33:126:38 | ...: i64 | main.rs:126:48:128:5 | { ... } | main.rs:179:13:179:36 | mn.data_through_trait(...) |
| 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: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: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:301:50:301:50 | a [MyInt] | main.rs:289:18:289:21 | SelfParam [MyInt] | main.rs:289:48:291:5 | { ... } [MyInt] | main.rs:301:30:301:54 | ...::take_self(...) [MyInt] |
| main.rs:306:55:306:55 | b [MyInt] | main.rs:293:26:293:37 | ...: MyInt [MyInt] | main.rs:293:49:295:5 | { ... } [MyInt] | main.rs:306:30:306:56 | ...::take_second(...) [MyInt] |
testFailures
#select
| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) |
@@ -291,16 +378,23 @@ testFailures
| main.rs:68:10:68:10 | b | main.rs:66:13:66:21 | source(...) | main.rs:68:10:68:10 | b | $@ | main.rs:66:13:66:21 | source(...) | source(...) |
| main.rs:76:10:76:10 | a | main.rs:74:9:74:18 | source(...) | main.rs:76:10:76:10 | a | $@ | main.rs:74:9:74:18 | source(...) | source(...) |
| main.rs:87:10:87:10 | b | main.rs:80:13:80:22 | source(...) | main.rs:87:10:87:10 | b | $@ | main.rs:80:13:80:22 | source(...) | source(...) |
| main.rs:99:14:99:14 | n | main.rs:127:13:127:21 | source(...) | main.rs:99:14:99:14 | n | $@ | main.rs:127:13:127:21 | source(...) | source(...) |
| main.rs:99:14:99:14 | n | main.rs:140:13:140:21 | source(...) | main.rs:99:14:99:14 | n | $@ | main.rs:140:13:140:21 | source(...) | source(...) |
| main.rs:122:10:122:10 | a | main.rs:106:13:106:21 | source(...) | main.rs:122:10:122:10 | a | $@ | main.rs:106:13:106:21 | source(...) | source(...) |
| main.rs:135:10:135:10 | b | main.rs:133:13:133:21 | source(...) | main.rs:135:10:135:10 | b | $@ | main.rs:133:13:133:21 | source(...) | source(...) |
| main.rs:148:10:148:10 | b | main.rs:146:13:146:22 | source(...) | main.rs:148:10:148:10 | b | $@ | main.rs:146:13:146:22 | source(...) | source(...) |
| main.rs:167:10:167:10 | m | main.rs:165:24:165:33 | source(...) | main.rs:167:10:167:10 | m | $@ | main.rs:165:24:165:33 | source(...) | source(...) |
| main.rs:198:10:198:16 | c.value | main.rs:195:28:195:36 | source(...) | main.rs:198:10:198:16 | c.value | $@ | main.rs:195:28:195:36 | source(...) | source(...) |
| main.rs:208:10:208:16 | d.value | main.rs:205:28:205:36 | source(...) | main.rs:208:10:208:16 | d.value | $@ | main.rs:205:28:205:36 | source(...) | source(...) |
| main.rs:255:10:255:10 | c | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:10 | c | $@ | main.rs:252:28:252:36 | source(...) | source(...) |
| main.rs:260:10:260:10 | c | main.rs:258:28:258:37 | source(...) | main.rs:260:10:260:10 | c | $@ | main.rs:258:28:258:37 | source(...) | source(...) |
| main.rs:270:10:270:10 | a | main.rs:269:13:269:21 | source(...) | main.rs:270:10:270:10 | a | $@ | main.rs:269:13:269:21 | source(...) | source(...) |
| main.rs:280:14:280:14 | c | main.rs:279:17:279:25 | source(...) | main.rs:280:14:280:14 | c | $@ | main.rs:279:17:279:25 | source(...) | source(...) |
| main.rs:288:10:288:10 | a | main.rs:269:13:269:21 | source(...) | main.rs:288:10:288:10 | a | $@ | main.rs:269:13:269:21 | source(...) | source(...) |
| main.rs:105:14:105:14 | n | main.rs:155:13:155:21 | source(...) | main.rs:105:14:105:14 | n | $@ | main.rs:155:13:155:21 | source(...) | source(...) |
| main.rs:105:14:105:14 | n | main.rs:187:13:187:21 | source(...) | main.rs:105:14:105:14 | n | $@ | main.rs:187:13:187:21 | source(...) | source(...) |
| main.rs:119:14:119:14 | n | main.rs:149:13:149:22 | source(...) | main.rs:119:14:119:14 | n | $@ | main.rs:149:13:149:22 | source(...) | source(...) |
| main.rs:119:14:119:14 | n | main.rs:159:13:159:22 | source(...) | main.rs:119:14:119:14 | n | $@ | main.rs:159:13:159:22 | source(...) | source(...) |
| main.rs:133:10:133:10 | a | main.rs:123:35:123:44 | source(...) | main.rs:133:10:133:10 | a | $@ | main.rs:123:35:123:44 | source(...) | source(...) |
| main.rs:139:10:139:10 | a | main.rs:109:35:109:43 | source(...) | main.rs:139:10:139:10 | a | $@ | main.rs:109:35:109:43 | source(...) | source(...) |
| main.rs:143:10:143:10 | a | main.rs:123:35:123:44 | source(...) | main.rs:143:10:143:10 | a | $@ | main.rs:123:35:123:44 | source(...) | source(...) |
| main.rs:168:10:168:10 | b | main.rs:166:13:166:22 | source(...) | main.rs:168:10:168:10 | b | $@ | main.rs:166:13:166:22 | source(...) | source(...) |
| main.rs:175:10:175:10 | b | main.rs:173:13:173:21 | source(...) | main.rs:175:10:175:10 | b | $@ | main.rs:173:13:173:21 | source(...) | source(...) |
| main.rs:180:10:180:10 | b | main.rs:178:13:178:22 | source(...) | main.rs:180:10:180:10 | b | $@ | main.rs:178:13:178:22 | source(...) | source(...) |
| main.rs:195:10:195:10 | b | main.rs:193:13:193:22 | source(...) | main.rs:195:10:195:10 | b | $@ | main.rs:193:13:193:22 | source(...) | source(...) |
| main.rs:214:10:214:10 | m | main.rs:212:24:212:33 | source(...) | main.rs:214:10:214:10 | m | $@ | main.rs:212:24:212:33 | source(...) | source(...) |
| main.rs:245:10:245:16 | c.value | main.rs:242:28:242:36 | source(...) | main.rs:245:10:245:16 | c.value | $@ | main.rs:242:28:242:36 | source(...) | source(...) |
| main.rs:255:10:255:16 | d.value | main.rs:252:28:252:36 | source(...) | main.rs:255:10:255:16 | d.value | $@ | main.rs:252:28:252:36 | source(...) | source(...) |
| main.rs:262:10:262:16 | a.value | main.rs:259:28:259:37 | source(...) | main.rs:262:10:262:16 | a.value | $@ | main.rs:259:28:259:37 | source(...) | source(...) |
| main.rs:302:10:302:10 | c | main.rs:299:28:299:36 | source(...) | main.rs:302:10:302:10 | c | $@ | main.rs:299:28:299:36 | source(...) | source(...) |
| main.rs:307:10:307:10 | c | main.rs:305:28:305:37 | source(...) | main.rs:307:10:307:10 | c | $@ | main.rs:305:28:305:37 | source(...) | source(...) |
| main.rs:317:10:317:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:317:10:317:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) |
| main.rs:327:14:327:14 | c | main.rs:326:17:326:25 | source(...) | main.rs:327:14:327:14 | c | $@ | main.rs:326:17:326:25 | source(...) | source(...) |
| main.rs:335:10:335:10 | a | main.rs:316:13:316:21 | source(...) | main.rs:335:10:335:10 | a | $@ | main.rs:316:13:316:21 | source(...) | source(...) |

View File

@@ -94,38 +94,78 @@ struct MyFlag {
flag: bool,
}
trait MyTrait {
fn data_in_trait(self, n: i64);
fn get_data_trait(self) -> i64;
fn data_through_trait(self, n: i64) -> i64;
}
impl MyFlag {
fn data_in(self, n: i64) {
sink(n); // $ hasValueFlow=1 hasValueFlow=8
}
fn get_data(self) -> i64 {
if self.flag {
0
} else {
source(2)
}
if self.flag { 0 } else { source(2) }
}
fn data_through(self, n: i64) -> i64 {
if self.flag {
0
} else {
n
}
if self.flag { 0 } else { n }
}
}
impl MyTrait for MyFlag {
fn data_in_trait(self, n: i64) {
sink(n); // $ hasValueFlow=22 $ hasValueFlow=31
}
fn get_data_trait(self) -> i64 {
if self.flag { 0 } else { source(21) }
}
fn data_through_trait(self, n: i64) -> i64 {
if self.flag { 0 } else { n }
}
}
fn data_out_of_method_trait_dispatch<T: MyTrait>(x: T) {
let a = x.get_data_trait();
sink(a); // $ hasValueFlow=21
}
fn data_out_of_method() {
let mn = MyFlag { flag: true };
let a = mn.get_data();
sink(a); // $ hasValueFlow=2
let mn = MyFlag { flag: true };
let a = mn.get_data_trait();
sink(a); // $ hasValueFlow=21
data_out_of_method_trait_dispatch(MyFlag { flag: true });
}
fn data_in_to_method_call_trait_dispatch<T: MyTrait>(x: T) {
let a = source(31);
x.data_in_trait(a);
}
fn data_in_to_method_call() {
let mn = MyFlag { flag: true };
let a = source(1);
mn.data_in(a)
mn.data_in(a);
let mn = MyFlag { flag: true };
let a = source(22);
mn.data_in_trait(a);
data_in_to_method_call_trait_dispatch(MyFlag { flag: true });
}
fn data_through_method_trait_dispatch<T: MyTrait>(x: T) {
let a = source(34);
let b = x.data_through_trait(a);
sink(b); // $ hasValueFlow=34
}
fn data_through_method() {
@@ -133,6 +173,13 @@ fn data_through_method() {
let a = source(4);
let b = mn.data_through(a);
sink(b); // $ hasValueFlow=4
let mn = MyFlag { flag: true };
let a = source(24);
let b = mn.data_through_trait(a);
sink(b); // $ hasValueFlow=24
data_through_method_trait_dispatch(MyFlag { flag: true });
}
fn data_in_to_method_called_as_function() {
@@ -212,7 +259,7 @@ fn test_operator_overloading() {
let b = MyInt { value: source(34) };
// The line below is what `*=` desugars to.
MulAssign::mul_assign(&mut a, b);
sink(a.value); // $ MISSING: hasValueFlow=34
sink(a.value); // $ hasValueFlow=34
let mut a = MyInt { value: 0 };
let b = MyInt { value: source(35) };
@@ -230,13 +277,13 @@ fn test_operator_overloading() {
sink(c); // $ hasTaintFlow=28 MISSING: hasValueFlow=28
}
trait MyTrait {
trait MyTrait2 {
type Output;
fn take_self(self, _other: Self::Output) -> Self::Output;
fn take_second(self, other: Self::Output) -> Self::Output;
}
impl MyTrait for MyInt {
impl MyTrait2 for MyInt {
type Output = MyInt;
fn take_self(self, _other: MyInt) -> MyInt {
@@ -251,17 +298,17 @@ impl MyTrait for MyInt {
fn data_through_trait_method_called_as_function() {
let a = MyInt { value: source(8) };
let b = MyInt { value: 2 };
let MyInt { value: c } = MyTrait::take_self(a, b);
let MyInt { value: c } = MyTrait2::take_self(a, b);
sink(c); // $ hasValueFlow=8
let a = MyInt { value: 0 };
let b = MyInt { value: source(37) };
let MyInt { value: c } = MyTrait::take_second(a, b);
let MyInt { value: c } = MyTrait2::take_second(a, b);
sink(c); // $ hasValueFlow=37
let a = MyInt { value: 0 };
let b = MyInt { value: source(38) };
let MyInt { value: c } = MyTrait::take_self(a, b);
let MyInt { value: c } = MyTrait2::take_self(a, b);
sink(c);
}

View File

@@ -23,73 +23,93 @@
| main.rs:80:13:80:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:86:13:86:27 | pass_through(...) | main.rs:82:5:84:5 | fn pass_through |
| main.rs:87:5:87:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:99:9:99:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:106:13:106:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:121:13:121:25 | mn.get_data() | main.rs:102:5:108:5 | fn get_data |
| main.rs:122:5:122:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:127:13:127:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:128:5:128:17 | mn.data_in(...) | main.rs:98:5:100:5 | fn data_in |
| main.rs:133:13:133:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:134:13:134:30 | mn.data_through(...) | main.rs:110:5:116:5 | fn data_through |
| main.rs:135:5:135:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:140:13:140:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:141:5:141:26 | ...::data_in(...) | main.rs:98:5:100:5 | fn data_in |
| main.rs:146:13:146:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:147:13:147:39 | ...::data_through(...) | main.rs:110:5:116:5 | fn data_through |
| main.rs:148:5:148:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:165:13:165:34 | ...::new(...) | main.rs:158:5:161:5 | fn new |
| main.rs:165:24:165:33 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:167:5:167:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:181:10:181:14 | * ... | main.rs:188:5:190:5 | fn deref |
| main.rs:189:11:189:15 | * ... | main.rs:188:5:190:5 | fn deref |
| main.rs:195:28:195:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:197:13:197:17 | ... + ... | main.rs:173:5:176:5 | fn add |
| main.rs:198:5:198:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:201:28:201:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:202:13:202:17 | ... + ... | main.rs:173:5:176:5 | fn add |
| main.rs:203:5:203:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:205:28:205:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:207:13:207:20 | a.add(...) | main.rs:173:5:176:5 | fn add |
| main.rs:208:5:208:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:212:28:212:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:215:5:215:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:218:28:218:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:219:5:219:10 | ... *= ... | main.rs:180:5:182:5 | fn mul_assign |
| main.rs:220:5:220:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:223:28:223:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:226:5:226:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:228:28:228:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:229:13:229:14 | * ... | main.rs:188:5:190:5 | fn deref |
| main.rs:230:5:230:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:105:9:105:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:109:35:109:43 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:119:9:119:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:123:35:123:44 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:132:13:132:30 | x.get_data_trait() | main.rs:122:5:124:5 | fn get_data_trait |
| main.rs:133:5:133:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:138:13:138:25 | mn.get_data() | main.rs:108:5:110:5 | fn get_data |
| main.rs:139:5:139:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:142:13:142:31 | mn.get_data_trait() | main.rs:122:5:124:5 | fn get_data_trait |
| main.rs:143:5:143:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:145:5:145:60 | data_out_of_method_trait_dispatch(...) | main.rs:131:1:134:1 | fn data_out_of_method_trait_dispatch |
| main.rs:149:13:149:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:150:5:150:22 | x.data_in_trait(...) | main.rs:118:5:120:5 | fn data_in_trait |
| main.rs:155:13:155:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:156:5:156:17 | mn.data_in(...) | main.rs:104:5:106:5 | fn data_in |
| main.rs:159:13:159:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:160:5:160:23 | mn.data_in_trait(...) | main.rs:118:5:120:5 | fn data_in_trait |
| main.rs:162:5:162:64 | data_in_to_method_call_trait_dispatch(...) | main.rs:148:1:151:1 | fn data_in_to_method_call_trait_dispatch |
| main.rs:166:13:166:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:167:13:167:35 | x.data_through_trait(...) | main.rs:126:5:128:5 | fn data_through_trait |
| main.rs:168:5:168:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:173:13:173:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:174:13:174:30 | mn.data_through(...) | main.rs:112:5:114:5 | fn data_through |
| main.rs:175:5:175:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:178:13:178:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:179:13:179:36 | mn.data_through_trait(...) | main.rs:126:5:128:5 | fn data_through_trait |
| main.rs:180:5:180:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:182:5:182:61 | data_through_method_trait_dispatch(...) | main.rs:165:1:169:1 | fn data_through_method_trait_dispatch |
| main.rs:187:13:187:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:188:5:188:26 | ...::data_in(...) | main.rs:104:5:106:5 | fn data_in |
| main.rs:193:13:193:22 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:194:13:194:39 | ...::data_through(...) | main.rs:112:5:114:5 | fn data_through |
| main.rs:195:5:195:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| 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:214:5:214:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:228:10:228:14 | * ... | main.rs:235:5:237:5 | fn deref |
| main.rs:236:11:236:15 | * ... | main.rs:235:5:237:5 | fn deref |
| 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:245:5:245:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:248:28:248:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:249:13:249:17 | ... + ... | main.rs:220:5:223:5 | fn add |
| main.rs:250:5:250:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:252:28:252:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:254:30:254:53 | ...::take_self(...) | main.rs:242:5:244:5 | fn take_self |
| main.rs:255:5:255:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:258:28:258:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:259:30:259:55 | ...::take_second(...) | main.rs:246:5:248:5 | fn take_second |
| main.rs:260:5:260:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:263:28:263:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:264:30:264:53 | ...::take_self(...) | main.rs:242:5:244:5 | fn take_self |
| main.rs:265:5:265:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:269:13:269:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:270:5:270:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:275:13:275:26 | async_source(...) | main.rs:268:1:272:1 | fn async_source |
| main.rs:276:5:276:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:279:17:279:25 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:280:9:280:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:283:5:283:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:287:13:287:55 | ...::block_on(...) | file://:0:0:0:0 | fn block_on |
| main.rs:287:41:287:54 | async_source(...) | main.rs:268:1:272:1 | fn async_source |
| main.rs:288:5:288:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:290:5:290:62 | ...::block_on(...) | file://:0:0:0:0 | fn block_on |
| main.rs:290:33:290:61 | test_async_await_async_part(...) | main.rs:274:1:284:1 | fn test_async_await_async_part |
| main.rs:294:5:294:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
| main.rs:295:5:295:35 | data_out_of_call_side_effect1(...) | main.rs:35:1:40:1 | fn data_out_of_call_side_effect1 |
| main.rs:296:5:296:35 | data_out_of_call_side_effect2(...) | main.rs:42:1:50:1 | fn data_out_of_call_side_effect2 |
| main.rs:297:5:297:21 | data_in_to_call(...) | main.rs:56:1:59:1 | fn data_in_to_call |
| main.rs:298:5:298:23 | data_through_call(...) | main.rs:65:1:69:1 | fn data_through_call |
| main.rs:299:5:299:34 | data_through_nested_function(...) | main.rs:79:1:88:1 | fn data_through_nested_function |
| main.rs:301:5:301:24 | data_out_of_method(...) | main.rs:119:1:123:1 | fn data_out_of_method |
| main.rs:302:5:302:28 | data_in_to_method_call(...) | main.rs:125:1:129:1 | fn data_in_to_method_call |
| main.rs:303:5:303:25 | data_through_method(...) | main.rs:131:1:136:1 | fn data_through_method |
| main.rs:305:5:305:31 | test_operator_overloading(...) | main.rs:193:1:231:1 | fn test_operator_overloading |
| main.rs:306:5:306:22 | test_async_await(...) | main.rs:286:1:291:1 | fn test_async_await |
| main.rs:254:13:254:20 | a.add(...) | main.rs:220:5:223:5 | fn add |
| main.rs:255:5:255:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:259:28:259:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:261:5:261:36 | ...::mul_assign(...) | main.rs:227:5:229:5 | fn mul_assign |
| main.rs:262:5:262:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:265:28:265:37 | source(...) | main.rs:1:1:3:1 | fn source |
| 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:270:28:270:37 | source(...) | main.rs:1:1:3:1 | fn source |
| 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:276:13:276:14 | * ... | main.rs:235:5:237:5 | fn deref |
| main.rs:277:5:277:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:299:28:299:36 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:301:30:301:54 | ...::take_self(...) | main.rs:289:5:291:5 | fn take_self |
| main.rs:302:5:302:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:305:28:305:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:306:30:306:56 | ...::take_second(...) | main.rs:293:5:295:5 | fn take_second |
| main.rs:307:5:307:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:310:28:310:37 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:311:30:311:54 | ...::take_self(...) | main.rs:289:5:291:5 | fn take_self |
| main.rs:312:5:312:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:316:13:316:21 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:317:5:317:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:322:13:322:26 | async_source(...) | main.rs:315:1:319:1 | fn async_source |
| main.rs:323:5:323:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:326:17:326:25 | source(...) | main.rs:1:1:3:1 | fn source |
| main.rs:327:9:327:15 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:330:5:330:17 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:334:13:334:55 | ...::block_on(...) | file://:0:0:0:0 | fn block_on |
| main.rs:334:41:334:54 | async_source(...) | main.rs:315:1:319:1 | fn async_source |
| main.rs:335:5:335:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
| main.rs:337:5:337:62 | ...::block_on(...) | file://:0:0:0:0 | fn block_on |
| main.rs:337:33:337:61 | test_async_await_async_part(...) | main.rs:321:1:331:1 | fn test_async_await_async_part |
| main.rs:341:5:341:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
| main.rs:342:5:342:35 | data_out_of_call_side_effect1(...) | main.rs:35:1:40:1 | fn data_out_of_call_side_effect1 |
| main.rs:343:5:343:35 | data_out_of_call_side_effect2(...) | main.rs:42:1:50:1 | fn data_out_of_call_side_effect2 |
| main.rs:344:5:344:21 | data_in_to_call(...) | main.rs:56:1:59:1 | fn data_in_to_call |
| main.rs:345:5:345:23 | data_through_call(...) | main.rs:65:1:69:1 | fn data_through_call |
| main.rs:346:5:346:34 | data_through_nested_function(...) | main.rs:79:1:88:1 | fn data_through_nested_function |
| main.rs:348:5:348:24 | data_out_of_method(...) | main.rs:136:1:146:1 | fn data_out_of_method |
| main.rs:349:5:349:28 | data_in_to_method_call(...) | main.rs:153:1:163:1 | fn data_in_to_method_call |
| main.rs:350:5:350:25 | data_through_method(...) | main.rs:171:1:183:1 | fn data_through_method |
| main.rs:352:5:352:31 | test_operator_overloading(...) | main.rs:240:1:278:1 | fn test_operator_overloading |
| main.rs:353:5:353:22 | test_async_await(...) | main.rs:333:1:338:1 | fn test_async_await |

View File

@@ -2,8 +2,8 @@ fn source(i: i64) -> i64 {
1000 + i
}
fn sink(s: i64) {
println!("{}", s);
fn sink<T: std::fmt::Debug>(s: T) {
println!("{:?}", s);
}
// has a flow model
@@ -176,7 +176,10 @@ fn test_set_tuple_element() {
}
// has a flow model
pub fn apply<F>(n: i64, f: F) -> i64 where F : FnOnce(i64) -> i64 {
pub fn apply<F>(n: i64, f: F) -> i64
where
F: FnOnce(i64) -> i64,
{
0
}
@@ -288,6 +291,81 @@ fn test_arg_source() {
sink(i) // $ hasValueFlow=i
}
struct MyStruct2(i64);
impl PartialEq for MyStruct {
fn eq(&self, other: &Self) -> bool {
true
}
}
impl PartialEq for MyStruct2 {
fn eq(&self, other: &Self) -> bool {
self.0 == other.0
}
}
impl Eq for MyStruct {}
impl Eq for MyStruct2 {}
use std::cmp::Ordering;
impl PartialOrd for MyStruct {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(Ordering::Equal)
}
}
impl PartialOrd for MyStruct2 {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.0.cmp(&other.0))
}
}
impl Ord for MyStruct {
fn cmp(&self, other: &Self) -> Ordering {
Ordering::Equal
}
}
impl Ord for MyStruct2 {
fn cmp(&self, other: &Self) -> Ordering {
self.0.cmp(&other.0)
}
fn max(self, other: Self) -> Self {
other
}
}
fn test_trait_model<T: Ord>(x: T) {
let x1 = source(20).max(0);
sink(x1); // $ hasValueFlow=20
let x2 = (MyStruct {
field1: source(23),
field2: 0,
})
.max(MyStruct {
field1: 0,
field2: 0,
});
sink(x2.field1); // $ hasValueFlow=23
let x3 = MyStruct2(source(24)).max(MyStruct2(0));
sink(x3.0); // no flow, because the model does not apply when the target is in source code
let x4 = source(25).max(1);
sink(x4); // $ hasValueFlow=25
let x5 = source(26).lt(&1);
sink(x5); // $ hasTaintFlow=26
let x6 = source(27) < 1;
sink(x6); // $ hasTaintFlow=27
}
#[tokio::main]
async fn main() {
test_identify();

View File

@@ -6,20 +6,22 @@ models
| 5 | Source: main::arg_source; Argument[0]; test-source |
| 6 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source |
| 7 | Source: main::simple_source; ReturnValue; test-source |
| 8 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value |
| 9 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value |
| 10 | Summary: main::coerce; Argument[0]; ReturnValue; taint |
| 11 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
| 12 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
| 13 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
| 14 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
| 15 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
| 16 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
| 17 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
| 18 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
| 19 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
| 20 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
| 21 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
| 8 | Summary: <_ as core::cmp::Ord>::max; Argument[self]; ReturnValue; value |
| 9 | Summary: <_ as core::cmp::PartialOrd>::lt; Argument[self].Reference; ReturnValue; taint |
| 10 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value |
| 11 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value |
| 12 | Summary: main::coerce; Argument[0]; ReturnValue; taint |
| 13 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
| 14 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
| 15 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
| 16 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
| 17 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
| 18 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
| 19 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
| 20 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
| 21 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
| 22 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
| 23 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
edges
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
@@ -29,7 +31,7 @@ edges
| main.rs:16:19:16:19 | s | main.rs:16:10:16:20 | identity(...) | provenance | QL |
| main.rs:25:9:25:9 | s | main.rs:26:17:26:17 | s | provenance | |
| main.rs:25:13:25:22 | source(...) | main.rs:25:9:25:9 | s | provenance | |
| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:10 |
| main.rs:26:17:26:17 | s | main.rs:26:10:26:18 | coerce(...) | provenance | MaD:12 |
| main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | |
| main.rs:40:9:40:9 | s | main.rs:41:27:41:27 | s | provenance | |
| main.rs:40:13:40:21 | source(...) | main.rs:40:9:40:9 | s | provenance | |
@@ -40,8 +42,8 @@ edges
| main.rs:41:14:41:28 | ...::A(...) [A] | main.rs:41:9:41:10 | e1 [A] | provenance | |
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
| main.rs:41:27:41:27 | s | main.rs:41:14:41:28 | ...::A(...) [A] | provenance | |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:16 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:16 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 |
| main.rs:42:22:42:23 | e1 [A] | main.rs:42:10:42:24 | get_var_pos(...) | provenance | MaD:18 |
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
| main.rs:53:9:53:9 | s | main.rs:54:26:54:26 | s | provenance | |
| main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | s | provenance | |
@@ -50,8 +52,8 @@ edges
| main.rs:54:9:54:10 | e1 [B] | main.rs:55:11:55:12 | e1 [B] | provenance | |
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
| main.rs:54:14:54:27 | set_var_pos(...) [B] | main.rs:54:9:54:10 | e1 [B] | provenance | |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:21 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:21 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 |
| main.rs:54:26:54:26 | s | main.rs:54:14:54:27 | set_var_pos(...) [B] | provenance | MaD:23 |
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
| main.rs:55:11:55:12 | e1 [B] | main.rs:57:9:57:23 | ...::B(...) [B] | provenance | |
| main.rs:57:9:57:23 | ...::B(...) [B] | main.rs:57:22:57:22 | i | provenance | |
@@ -68,8 +70,8 @@ edges
| main.rs:73:14:73:42 | ...::C {...} [C] | main.rs:73:9:73:10 | e1 [C] | provenance | |
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
| main.rs:73:40:73:40 | s | main.rs:73:14:73:42 | ...::C {...} [C] | provenance | |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:15 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:15 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 |
| main.rs:74:24:74:25 | e1 [C] | main.rs:74:10:74:26 | get_var_field(...) | provenance | MaD:17 |
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
| main.rs:85:9:85:9 | s | main.rs:86:28:86:28 | s | provenance | |
| main.rs:85:13:85:21 | source(...) | main.rs:85:9:85:9 | s | provenance | |
@@ -78,8 +80,8 @@ edges
| main.rs:86:9:86:10 | e1 [D] | main.rs:87:11:87:12 | e1 [D] | provenance | |
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
| main.rs:86:14:86:29 | set_var_field(...) [D] | main.rs:86:9:86:10 | e1 [D] | provenance | |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:20 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:20 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 |
| main.rs:86:28:86:28 | s | main.rs:86:14:86:29 | set_var_field(...) [D] | provenance | MaD:22 |
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
| main.rs:87:11:87:12 | e1 [D] | main.rs:89:9:89:37 | ...::D {...} [D] | provenance | |
| main.rs:89:9:89:37 | ...::D {...} [D] | main.rs:89:35:89:35 | i | provenance | |
@@ -96,8 +98,8 @@ edges
| main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | main.rs:105:9:105:17 | my_struct [MyStruct.field1] | provenance | |
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:106:17:106:17 | s | main.rs:105:21:108:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:13 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:13 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 |
| main.rs:109:27:109:35 | my_struct [MyStruct.field1] | main.rs:109:10:109:36 | get_struct_field(...) | provenance | MaD:15 |
| main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | |
| main.rs:126:9:126:9 | s | main.rs:127:38:127:38 | s | provenance | |
| main.rs:126:13:126:21 | source(...) | main.rs:126:9:126:9 | s | provenance | |
@@ -106,16 +108,16 @@ edges
| main.rs:127:9:127:17 | my_struct [MyStruct.field2] | main.rs:129:10:129:18 | my_struct [MyStruct.field2] | provenance | |
| main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | |
| main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | main.rs:127:9:127:17 | my_struct [MyStruct.field2] | provenance | |
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:18 |
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:18 |
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 |
| main.rs:127:38:127:38 | s | main.rs:127:21:127:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:20 |
| main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | |
| main.rs:129:10:129:18 | my_struct [MyStruct.field2] | main.rs:129:10:129:25 | my_struct.field2 | provenance | |
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
| main.rs:138:9:138:9 | s | main.rs:139:29:139:29 | s | provenance | |
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | |
| main.rs:138:13:138:21 | source(...) | main.rs:138:9:138:9 | s | provenance | |
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:11 |
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:11 |
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 |
| main.rs:139:28:139:30 | [...] [element] | main.rs:139:10:139:31 | get_array_element(...) | provenance | MaD:13 |
| main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | |
| main.rs:139:29:139:29 | s | main.rs:139:28:139:30 | [...] [element] | provenance | |
| main.rs:148:9:148:9 | s | main.rs:149:33:149:33 | s | provenance | |
@@ -126,8 +128,8 @@ edges
| main.rs:149:9:149:11 | arr [element] | main.rs:150:10:150:12 | arr [element] | provenance | |
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
| main.rs:149:15:149:34 | set_array_element(...) [element] | main.rs:149:9:149:11 | arr [element] | provenance | |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:17 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:17 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 |
| main.rs:149:33:149:33 | s | main.rs:149:15:149:34 | set_array_element(...) [element] | provenance | MaD:19 |
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
| main.rs:150:10:150:12 | arr [element] | main.rs:150:10:150:15 | arr[0] | provenance | |
| main.rs:159:9:159:9 | s | main.rs:160:14:160:14 | s | provenance | |
@@ -140,8 +142,8 @@ edges
| main.rs:160:13:160:18 | TupleExpr [tuple.0] | main.rs:160:9:160:9 | t [tuple.0] | provenance | |
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
| main.rs:160:14:160:14 | s | main.rs:160:13:160:18 | TupleExpr [tuple.0] | provenance | |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:14 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:14 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 |
| main.rs:161:28:161:28 | t [tuple.0] | main.rs:161:10:161:29 | get_tuple_element(...) | provenance | MaD:16 |
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
| main.rs:172:9:172:9 | s | main.rs:173:31:173:31 | s | provenance | |
| main.rs:172:13:172:22 | source(...) | main.rs:172:9:172:9 | s | provenance | |
@@ -150,120 +152,148 @@ edges
| main.rs:173:9:173:9 | t [tuple.1] | main.rs:175:10:175:10 | t [tuple.1] | provenance | |
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
| main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | main.rs:173:9:173:9 | t [tuple.1] | provenance | |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:19 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:19 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 |
| main.rs:173:31:173:31 | s | main.rs:173:13:173:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:21 |
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
| main.rs:175:10:175:10 | t [tuple.1] | main.rs:175:10:175:12 | t.1 | provenance | |
| main.rs:184:9:184:9 | s | main.rs:189:11:189:11 | s | provenance | |
| main.rs:184:9:184:9 | s | main.rs:189:11:189:11 | s | provenance | |
| main.rs:184:13:184:22 | source(...) | main.rs:184:9:184:9 | s | provenance | |
| main.rs:184:13:184:22 | source(...) | main.rs:184:9:184:9 | s | provenance | |
| main.rs:185:14:185:14 | ... | main.rs:186:14:186:14 | n | provenance | |
| main.rs:185:14:185:14 | ... | main.rs:186:14:186:14 | n | provenance | |
| main.rs:189:11:189:11 | s | main.rs:185:14:185:14 | ... | provenance | MaD:8 |
| main.rs:189:11:189:11 | s | main.rs:185:14:185:14 | ... | provenance | MaD:8 |
| main.rs:193:13:193:22 | source(...) | main.rs:195:23:195:23 | f [captured s] | provenance | |
| main.rs:193:13:193:22 | source(...) | main.rs:195:23:195:23 | f [captured s] | provenance | |
| main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | provenance | |
| main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | provenance | |
| main.rs:195:9:195:9 | t | main.rs:196:10:196:10 | t | provenance | |
| main.rs:195:9:195:9 | t | main.rs:196:10:196:10 | t | provenance | |
| main.rs:195:13:195:24 | apply(...) | main.rs:195:9:195:9 | t | provenance | |
| main.rs:195:13:195:24 | apply(...) | main.rs:195:9:195:9 | t | provenance | |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:8 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:8 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:9 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | provenance | MaD:9 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:8 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:8 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:9 |
| main.rs:195:23:195:23 | f [captured s] | main.rs:195:13:195:24 | apply(...) | provenance | MaD:9 |
| main.rs:200:9:200:9 | s | main.rs:202:19:202:19 | s | provenance | |
| main.rs:200:9:200:9 | s | main.rs:202:19:202:19 | s | provenance | |
| main.rs:200:13:200:22 | source(...) | main.rs:200:9:200:9 | s | provenance | |
| main.rs:200:13:200:22 | source(...) | main.rs:200:9:200:9 | s | provenance | |
| main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | provenance | |
| main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | provenance | |
| main.rs:202:9:202:9 | t | main.rs:203:10:203:10 | t | provenance | |
| main.rs:202:9:202:9 | t | main.rs:203:10:203:10 | t | provenance | |
| main.rs:202:13:202:23 | apply(...) | main.rs:202:9:202:9 | t | provenance | |
| main.rs:202:13:202:23 | apply(...) | main.rs:202:9:202:9 | t | provenance | |
| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | provenance | MaD:8 |
| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | provenance | MaD:8 |
| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:8 |
| main.rs:202:19:202:19 | s | main.rs:202:13:202:23 | apply(...) | provenance | MaD:8 |
| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | |
| main.rs:212:9:212:9 | s | main.rs:213:30:213:30 | s | provenance | |
| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | |
| main.rs:212:13:212:22 | source(...) | main.rs:212:9:212:9 | s | provenance | |
| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | |
| main.rs:213:9:213:9 | t | main.rs:214:10:214:10 | t | provenance | |
| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | |
| main.rs:213:13:213:31 | get_async_number(...) [future] | main.rs:213:13:213:37 | await ... | provenance | |
| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | |
| main.rs:213:13:213:37 | await ... | main.rs:213:9:213:9 | t | provenance | |
| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:12 |
| main.rs:213:30:213:30 | s | main.rs:213:13:213:31 | get_async_number(...) [future] | provenance | MaD:12 |
| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | |
| main.rs:233:9:233:9 | s [D] | main.rs:234:11:234:11 | s [D] | provenance | |
| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:6 |
| main.rs:233:13:233:23 | enum_source | main.rs:233:13:233:27 | enum_source(...) [D] | provenance | Src:MaD:6 |
| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | |
| main.rs:233:13:233:27 | enum_source(...) [D] | main.rs:233:9:233:9 | s [D] | provenance | |
| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | |
| main.rs:234:11:234:11 | s [D] | main.rs:236:9:236:37 | ...::D {...} [D] | provenance | |
| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | |
| main.rs:236:9:236:37 | ...::D {...} [D] | main.rs:236:35:236:35 | i | provenance | |
| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | |
| main.rs:236:35:236:35 | i | main.rs:236:47:236:47 | i | provenance | |
| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | |
| main.rs:242:9:242:9 | s [C] | main.rs:243:11:243:11 | s [C] | provenance | |
| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | |
| main.rs:242:13:242:24 | e.source(...) [C] | main.rs:242:9:242:9 | s [C] | provenance | |
| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:242:15:242:20 | source | main.rs:242:13:242:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | |
| main.rs:243:11:243:11 | s [C] | main.rs:244:9:244:37 | ...::C {...} [C] | provenance | |
| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | |
| main.rs:244:9:244:37 | ...::C {...} [C] | main.rs:244:35:244:35 | i | provenance | |
| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | |
| main.rs:244:35:244:35 | i | main.rs:244:47:244:47 | i | provenance | |
| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | |
| main.rs:253:9:253:9 | s | main.rs:254:41:254:41 | s | provenance | |
| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | |
| main.rs:253:13:253:22 | source(...) | main.rs:253:9:253:9 | s | provenance | |
| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:254:15:254:43 | ...::C {...} [C] | main.rs:254:5:254:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | |
| main.rs:254:41:254:41 | s | main.rs:254:15:254:43 | ...::C {...} [C] | provenance | |
| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | |
| main.rs:259:9:259:9 | s | main.rs:260:39:260:39 | s | provenance | |
| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:259:13:259:22 | source(...) | main.rs:259:9:259:9 | s | provenance | |
| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | |
| main.rs:260:9:260:9 | e [D] | main.rs:261:5:261:5 | e [D] | provenance | |
| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | |
| main.rs:260:13:260:41 | ...::D {...} [D] | main.rs:260:9:260:9 | e [D] | provenance | |
| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | |
| main.rs:260:39:260:39 | s | main.rs:260:13:260:41 | ...::D {...} [D] | provenance | |
| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:261:5:261:5 | e [D] | main.rs:261:7:261:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | |
| main.rs:270:9:270:9 | s | main.rs:271:10:271:10 | s | provenance | |
| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 |
| main.rs:270:13:270:25 | simple_source | main.rs:270:13:270:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 |
| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | |
| main.rs:270:13:270:29 | simple_source(...) | main.rs:270:9:270:9 | s | provenance | |
| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | |
| main.rs:278:9:278:9 | s | main.rs:279:17:279:17 | s | provenance | |
| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | |
| main.rs:278:13:278:22 | source(...) | main.rs:278:9:278:9 | s | provenance | |
| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:279:17:279:17 | s | main.rs:279:5:279:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:287:5:287:14 | arg_source | main.rs:287:16:287:16 | [post] i | provenance | Src:MaD:5 MaD:5 |
| main.rs:287:5:287:14 | arg_source | main.rs:287:16:287:16 | [post] i | provenance | Src:MaD:5 MaD:5 |
| main.rs:287:16:287:16 | [post] i | main.rs:288:10:288:10 | i | provenance | |
| main.rs:287:16:287:16 | [post] i | main.rs:288:10:288:10 | i | provenance | |
| main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | |
| main.rs:187:9:187:9 | s | main.rs:192:11:192:11 | s | provenance | |
| main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | |
| main.rs:187:13:187:22 | source(...) | main.rs:187:9:187:9 | s | provenance | |
| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | |
| main.rs:188:14:188:14 | ... | main.rs:189:14:189:14 | n | provenance | |
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 |
| main.rs:192:11:192:11 | s | main.rs:188:14:188:14 | ... | provenance | MaD:10 |
| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | |
| main.rs:196:13:196:22 | source(...) | main.rs:198:23:198:23 | f [captured s] | provenance | |
| main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | |
| main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | provenance | |
| main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | |
| main.rs:198:9:198:9 | t | main.rs:199:10:199:10 | t | provenance | |
| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | |
| main.rs:198:13:198:24 | apply(...) | main.rs:198:9:198:9 | t | provenance | |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:10 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | provenance | MaD:11 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:10 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 |
| main.rs:198:23:198:23 | f [captured s] | main.rs:198:13:198:24 | apply(...) | provenance | MaD:11 |
| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | |
| main.rs:203:9:203:9 | s | main.rs:205:19:205:19 | s | provenance | |
| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | |
| main.rs:203:13:203:22 | source(...) | main.rs:203:9:203:9 | s | provenance | |
| main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | provenance | |
| main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | provenance | |
| main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | |
| main.rs:205:9:205:9 | t | main.rs:206:10:206:10 | t | provenance | |
| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | |
| main.rs:205:13:205:23 | apply(...) | main.rs:205:9:205:9 | t | provenance | |
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 |
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | provenance | MaD:10 |
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 |
| main.rs:205:19:205:19 | s | main.rs:205:13:205:23 | apply(...) | provenance | MaD:10 |
| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | |
| main.rs:215:9:215:9 | s | main.rs:216:30:216:30 | s | provenance | |
| main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | |
| main.rs:215:13:215:22 | source(...) | main.rs:215:9:215:9 | s | provenance | |
| main.rs:216:9:216:9 | t | main.rs:217:10:217:10 | t | provenance | |
| main.rs:216:9:216:9 | t | main.rs:217:10:217:10 | t | provenance | |
| main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | |
| main.rs:216:13:216:31 | get_async_number(...) [future] | main.rs:216:13:216:37 | await ... | provenance | |
| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | |
| main.rs:216:13:216:37 | await ... | main.rs:216:9:216:9 | t | provenance | |
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 |
| main.rs:216:30:216:30 | s | main.rs:216:13:216:31 | get_async_number(...) [future] | provenance | MaD:14 |
| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | |
| main.rs:236:9:236:9 | s [D] | main.rs:237:11:237:11 | s [D] | provenance | |
| main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 |
| main.rs:236:13:236:23 | enum_source | main.rs:236:13:236:27 | enum_source(...) [D] | provenance | Src:MaD:6 |
| main.rs:236:13:236:27 | enum_source(...) [D] | main.rs:236:9:236:9 | s [D] | provenance | |
| main.rs:236:13:236:27 | enum_source(...) [D] | main.rs:236:9:236:9 | s [D] | provenance | |
| main.rs:237:11:237:11 | s [D] | main.rs:239:9:239:37 | ...::D {...} [D] | provenance | |
| main.rs:237:11:237:11 | s [D] | main.rs:239:9:239:37 | ...::D {...} [D] | provenance | |
| main.rs:239:9:239:37 | ...::D {...} [D] | main.rs:239:35:239:35 | i | provenance | |
| main.rs:239:9:239:37 | ...::D {...} [D] | main.rs:239:35:239:35 | i | provenance | |
| main.rs:239:35:239:35 | i | main.rs:239:47:239:47 | i | provenance | |
| main.rs:239:35:239:35 | i | main.rs:239:47:239:47 | i | provenance | |
| main.rs:245:9:245:9 | s [C] | main.rs:246:11:246:11 | s [C] | provenance | |
| main.rs:245:9:245:9 | s [C] | main.rs:246:11:246:11 | s [C] | provenance | |
| main.rs:245:13:245:24 | e.source(...) [C] | main.rs:245:9:245:9 | s [C] | provenance | |
| main.rs:245:13:245:24 | e.source(...) [C] | main.rs:245:9:245:9 | s [C] | provenance | |
| main.rs:245:15:245:20 | source | main.rs:245:13:245:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:245:15:245:20 | source | main.rs:245:13:245:24 | e.source(...) [C] | provenance | Src:MaD:4 |
| main.rs:246:11:246:11 | s [C] | main.rs:247:9:247:37 | ...::C {...} [C] | provenance | |
| main.rs:246:11:246:11 | s [C] | main.rs:247:9:247:37 | ...::C {...} [C] | provenance | |
| main.rs:247:9:247:37 | ...::C {...} [C] | main.rs:247:35:247:35 | i | provenance | |
| main.rs:247:9:247:37 | ...::C {...} [C] | main.rs:247:35:247:35 | i | provenance | |
| main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | |
| main.rs:247:35:247:35 | i | main.rs:247:47:247:47 | i | provenance | |
| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | |
| main.rs:256:9:256:9 | s | main.rs:257:41:257:41 | s | provenance | |
| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | |
| main.rs:256:13:256:22 | source(...) | main.rs:256:9:256:9 | s | provenance | |
| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:257:15:257:43 | ...::C {...} [C] | main.rs:257:5:257:13 | enum_sink | provenance | MaD:2 Sink:MaD:2 |
| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | |
| main.rs:257:41:257:41 | s | main.rs:257:15:257:43 | ...::C {...} [C] | provenance | |
| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | |
| main.rs:262:9:262:9 | s | main.rs:263:39:263:39 | s | provenance | |
| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | |
| main.rs:262:13:262:22 | source(...) | main.rs:262:9:262:9 | s | provenance | |
| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | |
| main.rs:263:9:263:9 | e [D] | main.rs:264:5:264:5 | e [D] | provenance | |
| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | |
| main.rs:263:13:263:41 | ...::D {...} [D] | main.rs:263:9:263:9 | e [D] | provenance | |
| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | |
| main.rs:263:39:263:39 | s | main.rs:263:13:263:41 | ...::D {...} [D] | provenance | |
| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:264:5:264:5 | e [D] | main.rs:264:7:264:10 | sink | provenance | MaD:1 Sink:MaD:1 |
| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | |
| main.rs:273:9:273:9 | s | main.rs:274:10:274:10 | s | provenance | |
| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 |
| main.rs:273:13:273:25 | simple_source | main.rs:273:13:273:29 | simple_source(...) | provenance | Src:MaD:7 MaD:7 |
| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | |
| main.rs:273:13:273:29 | simple_source(...) | main.rs:273:9:273:9 | s | provenance | |
| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | |
| main.rs:281:9:281:9 | s | main.rs:282:17:282:17 | s | provenance | |
| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | |
| main.rs:281:13:281:22 | source(...) | main.rs:281:9:281:9 | s | provenance | |
| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:282:17:282:17 | s | main.rs:282:5:282:15 | simple_sink | provenance | MaD:3 Sink:MaD:3 |
| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 |
| main.rs:290:5:290:14 | arg_source | main.rs:290:16:290:16 | [post] i | provenance | Src:MaD:5 MaD:5 |
| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | |
| main.rs:290:16:290:16 | [post] i | main.rs:291:10:291:10 | i | provenance | |
| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | |
| main.rs:343:9:343:10 | x1 | main.rs:344:10:344:11 | x1 | provenance | |
| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 |
| main.rs:343:14:343:23 | source(...) | main.rs:343:14:343:30 | ... .max(...) | provenance | MaD:8 |
| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | |
| main.rs:343:14:343:30 | ... .max(...) | main.rs:343:9:343:10 | x1 | provenance | |
| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | |
| main.rs:346:9:346:10 | x2 [MyStruct.field1] | main.rs:354:10:354:11 | x2 [MyStruct.field1] | provenance | |
| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | |
| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | main.rs:346:9:346:10 | x2 [MyStruct.field1] | provenance | |
| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 |
| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | provenance | MaD:8 |
| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:347:17:347:26 | source(...) | main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | provenance | |
| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | |
| main.rs:354:10:354:11 | x2 [MyStruct.field1] | main.rs:354:10:354:18 | x2.field1 | provenance | |
| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | |
| main.rs:359:9:359:10 | x4 | main.rs:360:10:360:11 | x4 | provenance | |
| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 |
| main.rs:359:14:359:23 | source(...) | main.rs:359:14:359:30 | ... .max(...) | provenance | MaD:8 |
| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | |
| main.rs:359:14:359:30 | ... .max(...) | main.rs:359:9:359:10 | x4 | provenance | |
| main.rs:362:9:362:10 | x5 | main.rs:363:10:363:11 | x5 | provenance | |
| main.rs:362:14:362:23 | source(...) | main.rs:362:14:362:30 | ... .lt(...) | provenance | MaD:9 |
| main.rs:362:14:362:30 | ... .lt(...) | main.rs:362:9:362:10 | x5 | provenance | |
| main.rs:365:9:365:10 | x6 | main.rs:366:10:366:11 | x6 | provenance | |
| main.rs:365:14:365:23 | source(...) | main.rs:365:14:365:27 | ... < ... | provenance | MaD:9 |
| main.rs:365:14:365:27 | ... < ... | main.rs:365:9:365:10 | x6 | provenance | |
nodes
| main.rs:15:9:15:9 | s | semmle.label | s |
| main.rs:15:9:15:9 | s | semmle.label | s |
@@ -421,139 +451,175 @@ nodes
| main.rs:175:10:175:10 | t [tuple.1] | semmle.label | t [tuple.1] |
| main.rs:175:10:175:12 | t.1 | semmle.label | t.1 |
| main.rs:175:10:175:12 | t.1 | semmle.label | t.1 |
| main.rs:184:9:184:9 | s | semmle.label | s |
| main.rs:184:9:184:9 | s | semmle.label | s |
| main.rs:184:13:184:22 | source(...) | semmle.label | source(...) |
| main.rs:184:13:184:22 | source(...) | semmle.label | source(...) |
| main.rs:185:14:185:14 | ... | semmle.label | ... |
| main.rs:185:14:185:14 | ... | semmle.label | ... |
| main.rs:186:14:186:14 | n | semmle.label | n |
| main.rs:186:14:186:14 | n | semmle.label | n |
| main.rs:189:11:189:11 | s | semmle.label | s |
| main.rs:189:11:189:11 | s | semmle.label | s |
| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) |
| main.rs:193:13:193:22 | source(...) | semmle.label | source(...) |
| main.rs:194:17:194:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:194:17:194:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:194:40:194:40 | s | semmle.label | s |
| main.rs:194:40:194:40 | s | semmle.label | s |
| main.rs:195:9:195:9 | t | semmle.label | t |
| main.rs:195:9:195:9 | t | semmle.label | t |
| main.rs:195:13:195:24 | apply(...) | semmle.label | apply(...) |
| main.rs:195:13:195:24 | apply(...) | semmle.label | apply(...) |
| main.rs:195:23:195:23 | f [captured s] | semmle.label | f [captured s] |
| main.rs:195:23:195:23 | f [captured s] | semmle.label | f [captured s] |
| main.rs:196:10:196:10 | t | semmle.label | t |
| main.rs:196:10:196:10 | t | semmle.label | t |
| main.rs:200:9:200:9 | s | semmle.label | s |
| main.rs:200:9:200:9 | s | semmle.label | s |
| main.rs:200:13:200:22 | source(...) | semmle.label | source(...) |
| main.rs:200:13:200:22 | source(...) | semmle.label | source(...) |
| main.rs:201:14:201:14 | ... | semmle.label | ... |
| main.rs:201:14:201:14 | ... | semmle.label | ... |
| main.rs:201:17:201:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:201:17:201:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:202:9:202:9 | t | semmle.label | t |
| main.rs:202:9:202:9 | t | semmle.label | t |
| main.rs:202:13:202:23 | apply(...) | semmle.label | apply(...) |
| main.rs:202:13:202:23 | apply(...) | semmle.label | apply(...) |
| main.rs:202:19:202:19 | s | semmle.label | s |
| main.rs:202:19:202:19 | s | semmle.label | s |
| main.rs:203:10:203:10 | t | semmle.label | t |
| main.rs:203:10:203:10 | t | semmle.label | t |
| main.rs:212:9:212:9 | s | semmle.label | s |
| main.rs:212:9:212:9 | s | semmle.label | s |
| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) |
| main.rs:212:13:212:22 | source(...) | semmle.label | source(...) |
| main.rs:213:9:213:9 | t | semmle.label | t |
| main.rs:213:9:213:9 | t | semmle.label | t |
| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:213:13:213:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:213:13:213:37 | await ... | semmle.label | await ... |
| main.rs:213:13:213:37 | await ... | semmle.label | await ... |
| main.rs:213:30:213:30 | s | semmle.label | s |
| main.rs:213:30:213:30 | s | semmle.label | s |
| main.rs:214:10:214:10 | t | semmle.label | t |
| main.rs:214:10:214:10 | t | semmle.label | t |
| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] |
| main.rs:233:9:233:9 | s [D] | semmle.label | s [D] |
| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source |
| main.rs:233:13:233:23 | enum_source | semmle.label | enum_source |
| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:233:13:233:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] |
| main.rs:234:11:234:11 | s [D] | semmle.label | s [D] |
| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:236:9:236:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:236:35:236:35 | i | semmle.label | i |
| main.rs:236:35:236:35 | i | semmle.label | i |
| main.rs:236:47:236:47 | i | semmle.label | i |
| main.rs:236:47:236:47 | i | semmle.label | i |
| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] |
| main.rs:242:9:242:9 | s [C] | semmle.label | s [C] |
| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:242:13:242:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:242:15:242:20 | source | semmle.label | source |
| main.rs:242:15:242:20 | source | semmle.label | source |
| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] |
| main.rs:243:11:243:11 | s [C] | semmle.label | s [C] |
| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:244:9:244:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:244:35:244:35 | i | semmle.label | i |
| main.rs:244:35:244:35 | i | semmle.label | i |
| main.rs:244:47:244:47 | i | semmle.label | i |
| main.rs:244:47:244:47 | i | semmle.label | i |
| main.rs:253:9:253:9 | s | semmle.label | s |
| main.rs:253:9:253:9 | s | semmle.label | s |
| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) |
| main.rs:253:13:253:22 | source(...) | semmle.label | source(...) |
| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink |
| main.rs:254:5:254:13 | enum_sink | semmle.label | enum_sink |
| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:254:15:254:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:254:41:254:41 | s | semmle.label | s |
| main.rs:254:41:254:41 | s | semmle.label | s |
| main.rs:259:9:259:9 | s | semmle.label | s |
| main.rs:259:9:259:9 | s | semmle.label | s |
| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) |
| main.rs:259:13:259:22 | source(...) | semmle.label | source(...) |
| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] |
| main.rs:260:9:260:9 | e [D] | semmle.label | e [D] |
| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:260:13:260:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:260:39:260:39 | s | semmle.label | s |
| main.rs:260:39:260:39 | s | semmle.label | s |
| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] |
| main.rs:261:5:261:5 | e [D] | semmle.label | e [D] |
| main.rs:261:7:261:10 | sink | semmle.label | sink |
| main.rs:261:7:261:10 | sink | semmle.label | sink |
| main.rs:270:9:270:9 | s | semmle.label | s |
| main.rs:270:9:270:9 | s | semmle.label | s |
| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source |
| main.rs:270:13:270:25 | simple_source | semmle.label | simple_source |
| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:270:13:270:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:271:10:271:10 | s | semmle.label | s |
| main.rs:271:10:271:10 | s | semmle.label | s |
| main.rs:278:9:278:9 | s | semmle.label | s |
| main.rs:278:9:278:9 | s | semmle.label | s |
| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) |
| main.rs:278:13:278:22 | source(...) | semmle.label | source(...) |
| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink |
| main.rs:279:5:279:15 | simple_sink | semmle.label | simple_sink |
| main.rs:279:17:279:17 | s | semmle.label | s |
| main.rs:279:17:279:17 | s | semmle.label | s |
| main.rs:287:5:287:14 | arg_source | semmle.label | arg_source |
| main.rs:287:5:287:14 | arg_source | semmle.label | arg_source |
| main.rs:287:16:287:16 | [post] i | semmle.label | [post] i |
| main.rs:287:16:287:16 | [post] i | semmle.label | [post] i |
| main.rs:288:10:288:10 | i | semmle.label | i |
| main.rs:288:10:288:10 | i | semmle.label | i |
| main.rs:187:9:187:9 | s | semmle.label | s |
| main.rs:187:9:187:9 | s | semmle.label | s |
| main.rs:187:13:187:22 | source(...) | semmle.label | source(...) |
| main.rs:187:13:187:22 | source(...) | semmle.label | source(...) |
| main.rs:188:14:188:14 | ... | semmle.label | ... |
| main.rs:188:14:188:14 | ... | semmle.label | ... |
| main.rs:189:14:189:14 | n | semmle.label | n |
| main.rs:189:14:189:14 | n | semmle.label | n |
| main.rs:192:11:192:11 | s | semmle.label | s |
| main.rs:192:11:192:11 | s | semmle.label | s |
| main.rs:196:13:196:22 | source(...) | semmle.label | source(...) |
| main.rs:196:13:196:22 | source(...) | semmle.label | source(...) |
| main.rs:197:17:197:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:197:17:197:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:197:40:197:40 | s | semmle.label | s |
| main.rs:197:40:197:40 | s | semmle.label | s |
| main.rs:198:9:198:9 | t | semmle.label | t |
| main.rs:198:9:198:9 | t | semmle.label | t |
| main.rs:198:13:198:24 | apply(...) | semmle.label | apply(...) |
| main.rs:198:13:198:24 | apply(...) | semmle.label | apply(...) |
| main.rs:198:23:198:23 | f [captured s] | semmle.label | f [captured s] |
| main.rs:198:23:198:23 | f [captured s] | semmle.label | f [captured s] |
| main.rs:199:10:199:10 | t | semmle.label | t |
| main.rs:199:10:199:10 | t | semmle.label | t |
| main.rs:203:9:203:9 | s | semmle.label | s |
| main.rs:203:9:203:9 | s | semmle.label | s |
| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) |
| main.rs:203:13:203:22 | source(...) | semmle.label | source(...) |
| main.rs:204:14:204:14 | ... | semmle.label | ... |
| main.rs:204:14:204:14 | ... | semmle.label | ... |
| main.rs:204:17:204:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:204:17:204:42 | if ... {...} else {...} | semmle.label | if ... {...} else {...} |
| main.rs:205:9:205:9 | t | semmle.label | t |
| main.rs:205:9:205:9 | t | semmle.label | t |
| main.rs:205:13:205:23 | apply(...) | semmle.label | apply(...) |
| main.rs:205:13:205:23 | apply(...) | semmle.label | apply(...) |
| main.rs:205:19:205:19 | s | semmle.label | s |
| main.rs:205:19:205:19 | s | semmle.label | s |
| main.rs:206:10:206:10 | t | semmle.label | t |
| main.rs:206:10:206:10 | t | semmle.label | t |
| main.rs:215:9:215:9 | s | semmle.label | s |
| main.rs:215:9:215:9 | s | semmle.label | s |
| main.rs:215:13:215:22 | source(...) | semmle.label | source(...) |
| main.rs:215:13:215:22 | source(...) | semmle.label | source(...) |
| main.rs:216:9:216:9 | t | semmle.label | t |
| main.rs:216:9:216:9 | t | semmle.label | t |
| main.rs:216:13:216:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:216:13:216:31 | get_async_number(...) [future] | semmle.label | get_async_number(...) [future] |
| main.rs:216:13:216:37 | await ... | semmle.label | await ... |
| main.rs:216:13:216:37 | await ... | semmle.label | await ... |
| main.rs:216:30:216:30 | s | semmle.label | s |
| main.rs:216:30:216:30 | s | semmle.label | s |
| main.rs:217:10:217:10 | t | semmle.label | t |
| main.rs:217:10:217:10 | t | semmle.label | t |
| main.rs:236:9:236:9 | s [D] | semmle.label | s [D] |
| main.rs:236:9:236:9 | s [D] | semmle.label | s [D] |
| main.rs:236:13:236:23 | enum_source | semmle.label | enum_source |
| main.rs:236:13:236:23 | enum_source | semmle.label | enum_source |
| main.rs:236:13:236:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:236:13:236:27 | enum_source(...) [D] | semmle.label | enum_source(...) [D] |
| main.rs:237:11:237:11 | s [D] | semmle.label | s [D] |
| main.rs:237:11:237:11 | s [D] | semmle.label | s [D] |
| main.rs:239:9:239:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:239:9:239:37 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:239:35:239:35 | i | semmle.label | i |
| main.rs:239:35:239:35 | i | semmle.label | i |
| main.rs:239:47:239:47 | i | semmle.label | i |
| main.rs:239:47:239:47 | i | semmle.label | i |
| main.rs:245:9:245:9 | s [C] | semmle.label | s [C] |
| main.rs:245:9:245:9 | s [C] | semmle.label | s [C] |
| main.rs:245:13:245:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:245:13:245:24 | e.source(...) [C] | semmle.label | e.source(...) [C] |
| main.rs:245:15:245:20 | source | semmle.label | source |
| main.rs:245:15:245:20 | source | semmle.label | source |
| main.rs:246:11:246:11 | s [C] | semmle.label | s [C] |
| main.rs:246:11:246:11 | s [C] | semmle.label | s [C] |
| main.rs:247:9:247:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:247:9:247:37 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:247:35:247:35 | i | semmle.label | i |
| main.rs:247:35:247:35 | i | semmle.label | i |
| main.rs:247:47:247:47 | i | semmle.label | i |
| main.rs:247:47:247:47 | i | semmle.label | i |
| main.rs:256:9:256:9 | s | semmle.label | s |
| main.rs:256:9:256:9 | s | semmle.label | s |
| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) |
| main.rs:256:13:256:22 | source(...) | semmle.label | source(...) |
| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink |
| main.rs:257:5:257:13 | enum_sink | semmle.label | enum_sink |
| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:257:15:257:43 | ...::C {...} [C] | semmle.label | ...::C {...} [C] |
| main.rs:257:41:257:41 | s | semmle.label | s |
| main.rs:257:41:257:41 | s | semmle.label | s |
| main.rs:262:9:262:9 | s | semmle.label | s |
| main.rs:262:9:262:9 | s | semmle.label | s |
| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) |
| main.rs:262:13:262:22 | source(...) | semmle.label | source(...) |
| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] |
| main.rs:263:9:263:9 | e [D] | semmle.label | e [D] |
| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:263:13:263:41 | ...::D {...} [D] | semmle.label | ...::D {...} [D] |
| main.rs:263:39:263:39 | s | semmle.label | s |
| main.rs:263:39:263:39 | s | semmle.label | s |
| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] |
| main.rs:264:5:264:5 | e [D] | semmle.label | e [D] |
| main.rs:264:7:264:10 | sink | semmle.label | sink |
| main.rs:264:7:264:10 | sink | semmle.label | sink |
| main.rs:273:9:273:9 | s | semmle.label | s |
| main.rs:273:9:273:9 | s | semmle.label | s |
| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source |
| main.rs:273:13:273:25 | simple_source | semmle.label | simple_source |
| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:273:13:273:29 | simple_source(...) | semmle.label | simple_source(...) |
| main.rs:274:10:274:10 | s | semmle.label | s |
| main.rs:274:10:274:10 | s | semmle.label | s |
| main.rs:281:9:281:9 | s | semmle.label | s |
| main.rs:281:9:281:9 | s | semmle.label | s |
| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) |
| main.rs:281:13:281:22 | source(...) | semmle.label | source(...) |
| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink |
| main.rs:282:5:282:15 | simple_sink | semmle.label | simple_sink |
| main.rs:282:17:282:17 | s | semmle.label | s |
| main.rs:282:17:282:17 | s | semmle.label | s |
| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source |
| main.rs:290:5:290:14 | arg_source | semmle.label | arg_source |
| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i |
| main.rs:290:16:290:16 | [post] i | semmle.label | [post] i |
| main.rs:291:10:291:10 | i | semmle.label | i |
| main.rs:291:10:291:10 | i | semmle.label | i |
| main.rs:343:9:343:10 | x1 | semmle.label | x1 |
| main.rs:343:9:343:10 | x1 | semmle.label | x1 |
| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) |
| main.rs:343:14:343:23 | source(...) | semmle.label | source(...) |
| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) |
| main.rs:343:14:343:30 | ... .max(...) | semmle.label | ... .max(...) |
| main.rs:344:10:344:11 | x1 | semmle.label | x1 |
| main.rs:344:10:344:11 | x1 | semmle.label | x1 |
| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] |
| main.rs:346:9:346:10 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] |
| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] |
| main.rs:346:14:353:6 | ... .max(...) [MyStruct.field1] | semmle.label | ... .max(...) [MyStruct.field1] |
| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] |
| main.rs:346:15:349:5 | MyStruct {...} [MyStruct.field1] | semmle.label | MyStruct {...} [MyStruct.field1] |
| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) |
| main.rs:347:17:347:26 | source(...) | semmle.label | source(...) |
| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] |
| main.rs:354:10:354:11 | x2 [MyStruct.field1] | semmle.label | x2 [MyStruct.field1] |
| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 |
| main.rs:354:10:354:18 | x2.field1 | semmle.label | x2.field1 |
| main.rs:359:9:359:10 | x4 | semmle.label | x4 |
| main.rs:359:9:359:10 | x4 | semmle.label | x4 |
| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) |
| main.rs:359:14:359:23 | source(...) | semmle.label | source(...) |
| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) |
| main.rs:359:14:359:30 | ... .max(...) | semmle.label | ... .max(...) |
| main.rs:360:10:360:11 | x4 | semmle.label | x4 |
| main.rs:360:10:360:11 | x4 | semmle.label | x4 |
| main.rs:362:9:362:10 | x5 | semmle.label | x5 |
| main.rs:362:14:362:23 | source(...) | semmle.label | source(...) |
| main.rs:362:14:362:30 | ... .lt(...) | semmle.label | ... .lt(...) |
| main.rs:363:10:363:11 | x5 | semmle.label | x5 |
| main.rs:365:9:365:10 | x6 | semmle.label | x6 |
| main.rs:365:14:365:23 | source(...) | semmle.label | source(...) |
| main.rs:365:14:365:27 | ... < ... | semmle.label | ... < ... |
| main.rs:366:10:366:11 | x6 | semmle.label | x6 |
subpaths
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) |
| main.rs:195:23:195:23 | f [captured s] | main.rs:194:40:194:40 | s | main.rs:194:17:194:42 | if ... {...} else {...} | main.rs:195:13:195:24 | apply(...) |
| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | main.rs:202:13:202:23 | apply(...) |
| main.rs:202:19:202:19 | s | main.rs:201:14:201:14 | ... | main.rs:201:17:201:42 | if ... {...} else {...} | main.rs:202:13:202:23 | apply(...) |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) |
| main.rs:198:23:198:23 | f [captured s] | main.rs:197:40:197:40 | s | main.rs:197:17:197:42 | if ... {...} else {...} | main.rs:198:13:198:24 | apply(...) |
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | main.rs:205:13:205:23 | apply(...) |
| main.rs:205:19:205:19 | s | main.rs:204:14:204:14 | ... | main.rs:204:17:204:42 | if ... {...} else {...} | main.rs:205:13:205:23 | apply(...) |
testFailures
invalidSpecComponent
#select
@@ -580,25 +646,33 @@ invalidSpecComponent
| main.rs:161:10:161:29 | get_tuple_element(...) | main.rs:159:13:159:22 | source(...) | main.rs:161:10:161:29 | get_tuple_element(...) | $@ | main.rs:159:13:159:22 | source(...) | source(...) |
| main.rs:175:10:175:12 | t.1 | main.rs:172:13:172:22 | source(...) | main.rs:175:10:175:12 | t.1 | $@ | main.rs:172:13:172:22 | source(...) | source(...) |
| main.rs:175:10:175:12 | t.1 | main.rs:172:13:172:22 | source(...) | main.rs:175:10:175:12 | t.1 | $@ | main.rs:172:13:172:22 | source(...) | source(...) |
| main.rs:186:14:186:14 | n | main.rs:184:13:184:22 | source(...) | main.rs:186:14:186:14 | n | $@ | main.rs:184:13:184:22 | source(...) | source(...) |
| main.rs:186:14:186:14 | n | main.rs:184:13:184:22 | source(...) | main.rs:186:14:186:14 | n | $@ | main.rs:184:13:184:22 | source(...) | source(...) |
| main.rs:196:10:196:10 | t | main.rs:193:13:193:22 | source(...) | main.rs:196:10:196:10 | t | $@ | main.rs:193:13:193:22 | source(...) | source(...) |
| main.rs:196:10:196:10 | t | main.rs:193:13:193:22 | source(...) | main.rs:196:10:196:10 | t | $@ | main.rs:193:13:193:22 | source(...) | source(...) |
| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) |
| main.rs:203:10:203:10 | t | main.rs:200:13:200:22 | source(...) | main.rs:203:10:203:10 | t | $@ | main.rs:200:13:200:22 | source(...) | source(...) |
| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) |
| main.rs:214:10:214:10 | t | main.rs:212:13:212:22 | source(...) | main.rs:214:10:214:10 | t | $@ | main.rs:212:13:212:22 | source(...) | source(...) |
| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source |
| main.rs:236:47:236:47 | i | main.rs:233:13:233:23 | enum_source | main.rs:236:47:236:47 | i | $@ | main.rs:233:13:233:23 | enum_source | enum_source |
| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source |
| main.rs:244:47:244:47 | i | main.rs:242:15:242:20 | source | main.rs:244:47:244:47 | i | $@ | main.rs:242:15:242:20 | source | source |
| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) |
| main.rs:254:5:254:13 | enum_sink | main.rs:253:13:253:22 | source(...) | main.rs:254:5:254:13 | enum_sink | $@ | main.rs:253:13:253:22 | source(...) | source(...) |
| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) |
| main.rs:261:7:261:10 | sink | main.rs:259:13:259:22 | source(...) | main.rs:261:7:261:10 | sink | $@ | main.rs:259:13:259:22 | source(...) | source(...) |
| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source |
| main.rs:271:10:271:10 | s | main.rs:270:13:270:25 | simple_source | main.rs:271:10:271:10 | s | $@ | main.rs:270:13:270:25 | simple_source | simple_source |
| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) |
| main.rs:279:5:279:15 | simple_sink | main.rs:278:13:278:22 | source(...) | main.rs:279:5:279:15 | simple_sink | $@ | main.rs:278:13:278:22 | source(...) | source(...) |
| main.rs:288:10:288:10 | i | main.rs:287:5:287:14 | arg_source | main.rs:288:10:288:10 | i | $@ | main.rs:287:5:287:14 | arg_source | arg_source |
| main.rs:288:10:288:10 | i | main.rs:287:5:287:14 | arg_source | main.rs:288:10:288:10 | i | $@ | main.rs:287:5:287:14 | arg_source | arg_source |
| main.rs:189:14:189:14 | n | main.rs:187:13:187:22 | source(...) | main.rs:189:14:189:14 | n | $@ | main.rs:187:13:187:22 | source(...) | source(...) |
| main.rs:189:14:189:14 | n | main.rs:187:13:187:22 | source(...) | main.rs:189:14:189:14 | n | $@ | main.rs:187:13:187:22 | source(...) | source(...) |
| main.rs:199:10:199:10 | t | main.rs:196:13:196:22 | source(...) | main.rs:199:10:199:10 | t | $@ | main.rs:196:13:196:22 | source(...) | source(...) |
| main.rs:199:10:199:10 | t | main.rs:196:13:196:22 | source(...) | main.rs:199:10:199:10 | t | $@ | main.rs:196:13:196:22 | source(...) | source(...) |
| main.rs:206:10:206:10 | t | main.rs:203:13:203:22 | source(...) | main.rs:206:10:206:10 | t | $@ | main.rs:203:13:203:22 | source(...) | source(...) |
| main.rs:206:10:206:10 | t | main.rs:203:13:203:22 | source(...) | main.rs:206:10:206:10 | t | $@ | main.rs:203:13:203:22 | source(...) | source(...) |
| main.rs:217:10:217:10 | t | main.rs:215:13:215:22 | source(...) | main.rs:217:10:217:10 | t | $@ | main.rs:215:13:215:22 | source(...) | source(...) |
| main.rs:217:10:217:10 | t | main.rs:215:13:215:22 | source(...) | main.rs:217:10:217:10 | t | $@ | main.rs:215:13:215:22 | source(...) | source(...) |
| main.rs:239:47:239:47 | i | main.rs:236:13:236:23 | enum_source | main.rs:239:47:239:47 | i | $@ | main.rs:236:13:236:23 | enum_source | enum_source |
| main.rs:239:47:239:47 | i | main.rs:236:13:236:23 | enum_source | main.rs:239:47:239:47 | i | $@ | main.rs:236:13:236:23 | enum_source | enum_source |
| main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source |
| main.rs:247:47:247:47 | i | main.rs:245:15:245:20 | source | main.rs:247:47:247:47 | i | $@ | main.rs:245:15:245:20 | source | source |
| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) |
| main.rs:257:5:257:13 | enum_sink | main.rs:256:13:256:22 | source(...) | main.rs:257:5:257:13 | enum_sink | $@ | main.rs:256:13:256:22 | source(...) | source(...) |
| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) |
| main.rs:264:7:264:10 | sink | main.rs:262:13:262:22 | source(...) | main.rs:264:7:264:10 | sink | $@ | main.rs:262:13:262:22 | source(...) | source(...) |
| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source |
| main.rs:274:10:274:10 | s | main.rs:273:13:273:25 | simple_source | main.rs:274:10:274:10 | s | $@ | main.rs:273:13:273:25 | simple_source | simple_source |
| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) |
| main.rs:282:5:282:15 | simple_sink | main.rs:281:13:281:22 | source(...) | main.rs:282:5:282:15 | simple_sink | $@ | main.rs:281:13:281:22 | source(...) | source(...) |
| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source |
| main.rs:291:10:291:10 | i | main.rs:290:5:290:14 | arg_source | main.rs:291:10:291:10 | i | $@ | main.rs:290:5:290:14 | arg_source | arg_source |
| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) |
| main.rs:344:10:344:11 | x1 | main.rs:343:14:343:23 | source(...) | main.rs:344:10:344:11 | x1 | $@ | main.rs:343:14:343:23 | source(...) | source(...) |
| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) |
| main.rs:354:10:354:18 | x2.field1 | main.rs:347:17:347:26 | source(...) | main.rs:354:10:354:18 | x2.field1 | $@ | main.rs:347:17:347:26 | source(...) | source(...) |
| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) |
| main.rs:360:10:360:11 | x4 | main.rs:359:14:359:23 | source(...) | main.rs:360:10:360:11 | x4 | $@ | main.rs:359:14:359:23 | source(...) | source(...) |
| main.rs:363:10:363:11 | x5 | main.rs:362:14:362:23 | source(...) | main.rs:363:10:363:11 | x5 | $@ | main.rs:362:14:362:23 | source(...) | source(...) |
| main.rs:366:10:366:11 | x6 | main.rs:365:14:365:23 | source(...) | main.rs:366:10:366:11 | x6 | $@ | main.rs:365:14:365:23 | source(...) | source(...) |

View File

@@ -32,3 +32,5 @@ extensions:
- ["main::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["main::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"]
- ["main::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"]
- ["<_ as core::cmp::Ord>::max", "Argument[self]", "ReturnValue", "value", "manual"]
- ["<_ as core::cmp::PartialOrd>::lt", "Argument[self].Reference", "ReturnValue", "taint", "manual"]