mirror of
https://github.com/github/codeql.git
synced 2026-05-05 05:35:13 +02:00
Rust: Instantiate variable capture library for data flow
This commit is contained in:
@@ -10,6 +10,9 @@ edges
|
||||
| main.rs:34:13:34:22 | f(...) | main.rs:35:10:35:10 | b | provenance | |
|
||||
| main.rs:34:21:34:21 | a | main.rs:27:20:27:23 | ... | provenance | |
|
||||
| main.rs:34:21:34:21 | a | main.rs:34:13:34:22 | f(...) | provenance | |
|
||||
| main.rs:42:16:42:25 | source(...) | main.rs:44:5:44:5 | [post] f [captured capt] | provenance | |
|
||||
| main.rs:44:5:44:5 | [post] f [captured capt] | main.rs:45:10:45:13 | capt | provenance | |
|
||||
| main.rs:44:5:44:5 | [post] f [captured capt] | main.rs:47:14:47:17 | capt | provenance | |
|
||||
nodes
|
||||
| main.rs:11:20:11:52 | if cond {...} else {...} | semmle.label | if cond {...} else {...} |
|
||||
| main.rs:11:30:11:39 | source(...) | semmle.label | source(...) |
|
||||
@@ -24,6 +27,10 @@ nodes
|
||||
| main.rs:34:13:34:22 | f(...) | semmle.label | f(...) |
|
||||
| main.rs:34:21:34:21 | a | semmle.label | a |
|
||||
| main.rs:35:10:35:10 | b | semmle.label | b |
|
||||
| main.rs:42:16:42:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:44:5:44:5 | [post] f [captured capt] | semmle.label | [post] f [captured capt] |
|
||||
| main.rs:45:10:45:13 | capt | semmle.label | capt |
|
||||
| main.rs:47:14:47:17 | capt | semmle.label | capt |
|
||||
subpaths
|
||||
| main.rs:34:21:34:21 | a | main.rs:27:20:27:23 | ... | main.rs:28:9:32:9 | if cond {...} else {...} | main.rs:34:13:34:22 | f(...) |
|
||||
testFailures
|
||||
@@ -31,3 +38,5 @@ testFailures
|
||||
| main.rs:12:10:12:16 | f(...) | main.rs:11:30:11:39 | source(...) | main.rs:12:10:12:16 | f(...) | $@ | main.rs:11:30:11:39 | source(...) | source(...) |
|
||||
| main.rs:18:18:18:21 | data | main.rs:22:13:22:22 | source(...) | main.rs:18:18:18:21 | data | $@ | main.rs:22:13:22:22 | source(...) | source(...) |
|
||||
| main.rs:35:10:35:10 | b | main.rs:33:13:33:22 | source(...) | main.rs:35:10:35:10 | b | $@ | main.rs:33:13:33:22 | source(...) | source(...) |
|
||||
| main.rs:45:10:45:13 | capt | main.rs:42:16:42:25 | source(...) | main.rs:45:10:45:13 | capt | $@ | main.rs:42:16:42:25 | source(...) | source(...) |
|
||||
| main.rs:47:14:47:17 | capt | main.rs:42:16:42:25 | source(...) | main.rs:47:14:47:17 | capt | $@ | main.rs:42:16:42:25 | source(...) | source(...) |
|
||||
|
||||
@@ -42,9 +42,9 @@ fn closure_captured_variable() {
|
||||
capt = source(73);
|
||||
};
|
||||
f();
|
||||
sink(capt); // $ MISSING: hasValueFlow=73
|
||||
sink(capt); // $ hasValueFlow=73
|
||||
let g = || {
|
||||
sink(capt); // $ MISSING: hasValueFlow=73
|
||||
sink(capt); // $ hasValueFlow=73
|
||||
};
|
||||
g();
|
||||
}
|
||||
|
||||
@@ -120,12 +120,12 @@ definition
|
||||
| variables.rs:418:9:418:13 | y | variables.rs:418:13:418:13 | y |
|
||||
| variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 |
|
||||
| variables.rs:421:9:421:9 | y | variables.rs:418:13:418:13 | y |
|
||||
| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y |
|
||||
| variables.rs:423:5:423:14 | <captured exit> y | variables.rs:418:13:418:13 | y |
|
||||
| variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 |
|
||||
| variables.rs:436:9:436:13 | i | variables.rs:436:13:436:13 | i |
|
||||
| variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block |
|
||||
| variables.rs:438:9:438:9 | i | variables.rs:436:13:436:13 | i |
|
||||
| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i |
|
||||
| variables.rs:441:5:441:15 | <captured exit> i | variables.rs:436:13:436:13 | i |
|
||||
| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x |
|
||||
| variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x |
|
||||
@@ -248,10 +248,10 @@ read
|
||||
| variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 |
|
||||
| variables.rs:412:20:414:5 | <captured entry> x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x |
|
||||
| variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 |
|
||||
| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:423:5:423:14 | <captured exit> y | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 |
|
||||
| variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block |
|
||||
| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:441:5:441:15 | <captured exit> i | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:447:15:447:15 | x |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:448:15:448:15 | x |
|
||||
@@ -363,10 +363,10 @@ firstRead
|
||||
| variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 |
|
||||
| variables.rs:412:20:414:5 | <captured entry> x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x |
|
||||
| variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 |
|
||||
| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:423:5:423:14 | <captured exit> y | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 |
|
||||
| variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block |
|
||||
| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:441:5:441:15 | <captured exit> i | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:447:15:447:15 | x |
|
||||
| variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x | variables.rs:458:15:458:15 | x |
|
||||
@@ -471,10 +471,10 @@ lastRead
|
||||
| variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 |
|
||||
| variables.rs:412:20:414:5 | <captured entry> x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x |
|
||||
| variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 |
|
||||
| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:423:5:423:14 | <captured exit> y | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y |
|
||||
| variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 |
|
||||
| variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block |
|
||||
| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:441:5:441:15 | <captured exit> i | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i |
|
||||
| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:448:15:448:15 | x |
|
||||
| variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x | variables.rs:458:15:458:15 | x |
|
||||
@@ -592,10 +592,54 @@ ultimateDef
|
||||
| variables.rs:449:5:457:5 | phi | variables.rs:450:9:450:9 | x |
|
||||
| variables.rs:449:5:457:5 | phi | variables.rs:454:9:454:9 | x |
|
||||
assigns
|
||||
| variables.rs:16:9:16:10 | x1 | variables.rs:16:14:16:16 | "a" |
|
||||
| variables.rs:21:9:21:14 | x2 | variables.rs:21:18:21:18 | 4 |
|
||||
| variables.rs:23:5:23:6 | x2 | variables.rs:23:10:23:10 | 5 |
|
||||
| variables.rs:28:9:28:13 | x | variables.rs:28:17:28:17 | 1 |
|
||||
| variables.rs:30:5:30:5 | x | variables.rs:30:9:30:9 | 2 |
|
||||
| variables.rs:35:9:35:10 | x3 | variables.rs:35:14:35:14 | 1 |
|
||||
| variables.rs:37:9:37:10 | x3 | variables.rs:38:9:38:14 | ... + ... |
|
||||
| variables.rs:43:9:43:10 | x4 | variables.rs:43:14:43:16 | "a" |
|
||||
| variables.rs:46:13:46:14 | x4 | variables.rs:46:18:46:20 | "b" |
|
||||
| variables.rs:75:9:75:10 | p1 | variables.rs:75:14:75:37 | Point {...} |
|
||||
| variables.rs:85:9:85:10 | s1 | variables.rs:85:14:85:41 | Some(...) |
|
||||
| variables.rs:102:9:102:10 | s1 | variables.rs:102:14:102:41 | Some(...) |
|
||||
| variables.rs:111:9:111:10 | x6 | variables.rs:111:14:111:20 | Some(...) |
|
||||
| variables.rs:112:9:112:10 | y1 | variables.rs:112:14:112:15 | 10 |
|
||||
| variables.rs:128:9:128:15 | numbers | variables.rs:128:19:128:35 | TupleExpr |
|
||||
| variables.rs:155:9:155:10 | p2 | variables.rs:155:14:155:37 | Point {...} |
|
||||
| variables.rs:169:9:169:11 | msg | variables.rs:169:15:169:38 | ...::Hello {...} |
|
||||
| variables.rs:189:9:189:14 | either | variables.rs:189:18:189:33 | ...::Left(...) |
|
||||
| variables.rs:203:9:203:10 | tv | variables.rs:203:14:203:36 | ...::Second(...) |
|
||||
| variables.rs:219:9:219:14 | either | variables.rs:219:18:219:33 | ...::Left(...) |
|
||||
| variables.rs:229:9:229:14 | either | variables.rs:229:18:229:33 | ...::Left(...) |
|
||||
| variables.rs:253:9:253:10 | fv | variables.rs:253:14:253:35 | ...::Second(...) |
|
||||
| variables.rs:315:9:315:23 | example_closure | variables.rs:316:9:317:9 | \|...\| x |
|
||||
| variables.rs:318:9:318:10 | n1 | variables.rs:319:9:319:26 | example_closure(...) |
|
||||
| variables.rs:323:9:323:26 | immutable_variable | variables.rs:324:9:325:9 | \|...\| x |
|
||||
| variables.rs:326:9:326:10 | n2 | variables.rs:327:9:327:29 | immutable_variable(...) |
|
||||
| variables.rs:332:9:332:9 | v | variables.rs:332:13:332:41 | &... |
|
||||
| variables.rs:350:9:350:13 | ref_i | variables.rs:351:9:351:14 | &mut i |
|
||||
| variables.rs:373:9:373:9 | y | variables.rs:374:9:374:28 | mutate_param(...) |
|
||||
| variables.rs:380:9:380:9 | w | variables.rs:381:9:381:19 | &mut ... |
|
||||
| variables.rs:393:9:393:9 | y | variables.rs:394:9:394:14 | &mut x |
|
||||
| variables.rs:400:9:400:9 | x | variables.rs:400:13:400:15 | 100 |
|
||||
| variables.rs:402:9:402:11 | cap | variables.rs:402:15:404:5 | \|...\| ... |
|
||||
| variables.rs:410:9:410:13 | x | variables.rs:410:17:410:17 | 1 |
|
||||
| variables.rs:412:9:412:16 | closure1 | variables.rs:412:20:414:5 | \|...\| ... |
|
||||
| variables.rs:418:9:418:13 | y | variables.rs:418:17:418:17 | 2 |
|
||||
| variables.rs:420:9:420:20 | closure2 | variables.rs:420:24:422:5 | \|...\| ... |
|
||||
| variables.rs:421:9:421:9 | y | variables.rs:421:13:421:13 | 3 |
|
||||
| variables.rs:428:9:428:20 | closure3 | variables.rs:428:24:430:5 | \|...\| ... |
|
||||
| variables.rs:436:9:436:13 | i | variables.rs:436:22:436:22 | 0 |
|
||||
| variables.rs:437:9:437:13 | block | variables.rs:437:17:439:5 | { ... } |
|
||||
| variables.rs:438:9:438:9 | i | variables.rs:438:13:438:13 | 1 |
|
||||
| variables.rs:446:9:446:13 | x | variables.rs:446:17:446:17 | 1 |
|
||||
| variables.rs:450:9:450:9 | x | variables.rs:450:13:450:13 | 2 |
|
||||
| variables.rs:454:9:454:9 | x | variables.rs:454:13:454:13 | 3 |
|
||||
| variables.rs:462:9:462:9 | x | variables.rs:462:13:462:13 | 1 |
|
||||
| variables.rs:491:13:491:17 | f | variables.rs:491:21:494:9 | \|...\| ... |
|
||||
| variables.rs:510:9:510:13 | a | variables.rs:510:17:510:25 | [...] |
|
||||
| variables.rs:514:5:514:5 | a | variables.rs:514:9:514:17 | [...] |
|
||||
| variables.rs:519:9:519:9 | x | variables.rs:519:13:519:14 | 16 |
|
||||
| variables.rs:523:9:523:9 | z | variables.rs:523:13:523:14 | 17 |
|
||||
|
||||
Reference in New Issue
Block a user