From b5825df9a31a6536eee9f750f30771740b5e9591 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Aug 2026 17:41:33 +0100 Subject: [PATCH 1/8] Rust: Add a couple of missing crates to supported-frameworks.rst. --- docs/codeql/reusables/supported-frameworks.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 257fc17e5a44..2f6061bc9b6b 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -327,6 +327,7 @@ and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, Web framework alloc, Standard library `async-std `__, Asynchronous programming library + `axum `__, Web framework `biscotti `__, Cookie management `clap `__, Utility library `cookie `__, Cookie management @@ -341,6 +342,8 @@ and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, Utility library `mysql `__, Database `mysql_async `__, Database + `native-tls `__, Network communicator + `async-native-tls `__, Network communicator `once_cell `__, Utility library `poem `__, Web framework `postgres `__, Database From ccb0003512ab0a29fd02e138c86bb8b7da5537fd Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 19 Aug 2026 11:26:03 +0100 Subject: [PATCH 2/8] Rust: Add a bit more test coverage for native-tls. --- .../dataflow/sources/net/Cargo.lock | 1 + .../dataflow/sources/net/InlineFlow.expected | 648 +++++++++--------- .../sources/net/TaintSources.expected | 5 +- .../dataflow/sources/net/options.yml | 1 + .../dataflow/sources/net/test.rs | 29 + 5 files changed, 358 insertions(+), 326 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock index 27790b8b768d..f30f79630c4f 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock @@ -1558,6 +1558,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", + "native-tls", "reqwest", "rustls", "tokio", diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 8e44873ec860..f9ab8bb801a1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -205,136 +205,105 @@ edges | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | | test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | -| test.rs:373:13:373:15 | tcp | test.rs:374:15:374:17 | tcp | provenance | | -| test.rs:373:13:373:15 | tcp | test.rs:380:57:380:59 | tcp | provenance | | -| test.rs:373:19:373:41 | ...::connect(...) | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | -| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | test.rs:373:19:373:47 | await ... [Ok] | provenance | | -| test.rs:373:19:373:47 | await ... [Ok] | test.rs:373:19:373:48 | TryExpr | provenance | | -| test.rs:373:19:373:48 | TryExpr | test.rs:373:13:373:15 | tcp | provenance | | -| test.rs:374:15:374:17 | tcp | test.rs:374:14:374:17 | &tcp | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:381:15:381:20 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | -| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | -| test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | -| test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:29 | -| test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | -| test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | -| test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | | -| test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | | -| test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | -| test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:26 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | -| test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | -| test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:387:19:387:24 | pinned [Pin, &ref] | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | -| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:28 | buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | -| test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | -| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:10 | -| test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | -| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | -| test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | -| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | -| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:25 | buffer1 | provenance | | -| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | -| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | -| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | -| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | -| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:25 | buffer2 | provenance | | -| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | -| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:32 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:32 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | -| test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | -| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:30 | -| test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | -| test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | -| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | | -| test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | | -| test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | -| test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:26 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | -| test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | -| test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | -| test.rs:414:19:414:24 | pinned [Pin, &ref] | test.rs:414:18:414:24 | &pinned | provenance | | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | | -| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | -| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | -| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | | -| test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | | -| test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | -| test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | -| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | -| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:26 | -| test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | -| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | test.rs:425:29:425:35 | Ok(...) [Ok] | provenance | | -| test.rs:425:29:425:35 | Ok(...) [Ok] | test.rs:425:32:425:34 | buf | provenance | | -| test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | -| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | | -| test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | | -| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | -| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | -| test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | -| test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | -| test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | | -| test.rs:444:17:444:26 | mut pinned | test.rs:447:30:447:35 | pinned | provenance | | -| test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | | -| test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | -| test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:26 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | -| test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | -| test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:445:19:445:24 | pinned [Pin, &ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | -| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:28 | buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | | -| test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | | -| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:10 | -| test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | -| test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | -| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | -| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:25 | buffer1 | provenance | | -| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | -| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | -| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | -| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:25 | buffer2 | provenance | | -| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | -| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | +| test.rs:396:13:396:15 | tcp | test.rs:397:15:397:17 | tcp | provenance | | +| test.rs:396:13:396:15 | tcp | test.rs:403:57:403:59 | tcp | provenance | | +| test.rs:396:19:396:41 | ...::connect(...) | test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | test.rs:396:19:396:47 | await ... [Ok] | provenance | | +| test.rs:396:19:396:47 | await ... [Ok] | test.rs:396:19:396:48 | TryExpr | provenance | | +| test.rs:396:19:396:48 | TryExpr | test.rs:396:13:396:15 | tcp | provenance | | +| test.rs:397:15:397:17 | tcp | test.rs:397:14:397:17 | &tcp | provenance | | +| test.rs:403:13:403:22 | mut reader | test.rs:404:15:404:20 | reader | provenance | | +| test.rs:403:13:403:22 | mut reader | test.rs:409:44:409:49 | reader | provenance | | +| test.rs:403:13:403:22 | mut reader | test.rs:422:68:422:73 | reader | provenance | | +| test.rs:403:13:403:22 | mut reader | test.rs:426:31:426:36 | reader | provenance | | +| test.rs:403:13:403:22 | mut reader | test.rs:431:55:431:60 | reader | provenance | | +| test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | test.rs:403:26:403:66 | await ... [Ok] | provenance | | +| test.rs:403:26:403:66 | await ... [Ok] | test.rs:403:26:403:67 | TryExpr | provenance | | +| test.rs:403:26:403:67 | TryExpr | test.rs:403:13:403:22 | mut reader | provenance | | +| test.rs:403:57:403:59 | tcp | test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | provenance | MaD:29 | +| test.rs:404:15:404:20 | reader | test.rs:404:14:404:20 | &reader | provenance | | +| test.rs:409:17:409:26 | mut pinned | test.rs:410:19:410:24 | pinned | provenance | | +| test.rs:409:17:409:26 | mut pinned | test.rs:412:30:412:35 | pinned | provenance | | +| test.rs:409:17:409:26 | mut pinned [Pin, &ref] | test.rs:410:19:410:24 | pinned [Pin, &ref] | provenance | | +| test.rs:409:30:409:50 | ...::new(...) | test.rs:409:17:409:26 | mut pinned | provenance | | +| test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | test.rs:409:17:409:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:409:39:409:49 | &mut reader [&ref] | test.rs:409:30:409:50 | ...::new(...) | provenance | MaD:26 | +| test.rs:409:39:409:49 | &mut reader [&ref] | test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | +| test.rs:409:44:409:49 | reader | test.rs:409:39:409:49 | &mut reader [&ref] | provenance | | +| test.rs:410:19:410:24 | pinned | test.rs:410:18:410:24 | &pinned | provenance | | +| test.rs:410:19:410:24 | pinned [Pin, &ref] | test.rs:410:18:410:24 | &pinned | provenance | | +| test.rs:412:30:412:35 | pinned | test.rs:412:56:412:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | +| test.rs:412:56:412:66 | [post] &mut buffer [&ref] | test.rs:412:61:412:66 | [post] buffer | provenance | | +| test.rs:412:61:412:66 | [post] buffer | test.rs:414:23:414:28 | buffer | provenance | | +| test.rs:412:61:412:66 | [post] buffer | test.rs:415:23:415:28 | buffer | provenance | | +| test.rs:412:61:412:66 | [post] buffer | test.rs:415:23:415:33 | buffer[...] | provenance | | +| test.rs:414:23:414:28 | buffer | test.rs:414:22:414:28 | &buffer | provenance | | +| test.rs:415:23:415:28 | buffer | test.rs:415:23:415:33 | buffer[...] | provenance | MaD:10 | +| test.rs:415:23:415:33 | buffer[...] | test.rs:415:22:415:33 | &... | provenance | | +| test.rs:422:63:422:73 | &mut reader [&ref] | test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | +| test.rs:422:68:422:73 | reader | test.rs:422:63:422:73 | &mut reader [&ref] | provenance | | +| test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | test.rs:422:81:422:87 | [post] buffer1 | provenance | | +| test.rs:422:81:422:87 | [post] buffer1 | test.rs:423:19:423:25 | buffer1 | provenance | | +| test.rs:422:81:422:87 | [post] buffer1 | test.rs:423:19:423:40 | buffer1[...] | provenance | | +| test.rs:423:19:423:25 | buffer1 | test.rs:423:19:423:40 | buffer1[...] | provenance | MaD:10 | +| test.rs:423:19:423:40 | buffer1[...] | test.rs:423:18:423:40 | &... | provenance | | +| test.rs:426:31:426:36 | reader | test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | +| test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | test.rs:426:48:426:54 | [post] buffer2 | provenance | | +| test.rs:426:48:426:54 | [post] buffer2 | test.rs:428:19:428:25 | buffer2 | provenance | | +| test.rs:426:48:426:54 | [post] buffer2 | test.rs:428:19:428:40 | buffer2[...] | provenance | | +| test.rs:428:19:428:25 | buffer2 | test.rs:428:19:428:40 | buffer2[...] | provenance | MaD:10 | +| test.rs:428:19:428:40 | buffer2[...] | test.rs:428:18:428:40 | &... | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:432:15:432:21 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:436:44:436:50 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:446:41:446:47 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:460:26:460:32 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:480:68:480:74 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:484:31:484:37 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:490:44:490:50 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:502:26:502:32 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:509:31:509:37 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:516:31:516:37 | reader2 | provenance | | +| test.rs:431:13:431:23 | mut reader2 | test.rs:523:31:523:37 | reader2 | provenance | | +| test.rs:431:27:431:61 | ...::new(...) | test.rs:431:13:431:23 | mut reader2 | provenance | | +| test.rs:431:55:431:60 | reader | test.rs:431:27:431:61 | ...::new(...) | provenance | MaD:30 | +| test.rs:432:15:432:21 | reader2 | test.rs:432:14:432:21 | &reader2 | provenance | | +| test.rs:436:17:436:26 | mut pinned | test.rs:437:19:437:24 | pinned | provenance | | +| test.rs:436:17:436:26 | mut pinned | test.rs:439:26:439:31 | pinned | provenance | | +| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | test.rs:437:19:437:24 | pinned [Pin, &ref] | provenance | | +| test.rs:436:30:436:51 | ...::new(...) | test.rs:436:17:436:26 | mut pinned | provenance | | +| test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | test.rs:436:17:436:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:436:39:436:50 | &mut reader2 [&ref] | test.rs:436:30:436:51 | ...::new(...) | provenance | MaD:26 | +| test.rs:436:39:436:50 | &mut reader2 [&ref] | test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | +| test.rs:436:44:436:50 | reader2 | test.rs:436:39:436:50 | &mut reader2 [&ref] | provenance | | +| test.rs:437:19:437:24 | pinned | test.rs:437:18:437:24 | &pinned | provenance | | +| test.rs:437:19:437:24 | pinned [Pin, &ref] | test.rs:437:18:437:24 | &pinned | provenance | | +| test.rs:439:17:439:22 | buffer [Ready, Ok] | test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:439:17:439:22 | buffer [Ready, Ok] | test.rs:441:23:441:28 | buffer [Ready, Ok] | provenance | | +| test.rs:439:26:439:31 | pinned | test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | +| test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:439:17:439:22 | buffer [Ready, Ok] | provenance | | +| test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | test.rs:440:32:440:38 | Ok(...) [Ok] | provenance | | +| test.rs:440:32:440:38 | Ok(...) [Ok] | test.rs:440:35:440:37 | buf | provenance | | +| test.rs:440:35:440:37 | buf | test.rs:442:22:442:24 | buf | provenance | | +| test.rs:441:23:441:28 | buffer [Ready, Ok] | test.rs:441:22:441:28 | &buffer | provenance | | +| test.rs:446:17:446:23 | buffer2 [Ready, Ok] | test.rs:447:20:447:26 | buffer2 [Ready, Ok] | provenance | | +| test.rs:446:27:446:48 | ...::new(...) | test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | +| test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:446:17:446:23 | buffer2 [Ready, Ok] | provenance | | +| test.rs:446:36:446:47 | &mut reader2 [&ref] | test.rs:446:27:446:48 | ...::new(...) | provenance | MaD:26 | +| test.rs:446:41:446:47 | reader2 | test.rs:446:36:446:47 | &mut reader2 [&ref] | provenance | | +| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | test.rs:449:27:449:33 | buffer2 [Ready, Ok] | provenance | | +| test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | test.rs:448:29:448:35 | Ok(...) [Ok] | provenance | | +| test.rs:448:29:448:35 | Ok(...) [Ok] | test.rs:448:32:448:34 | buf | provenance | | +| test.rs:448:32:448:34 | buf | test.rs:450:26:450:28 | buf | provenance | | +| test.rs:449:27:449:33 | buffer2 [Ready, Ok] | test.rs:449:26:449:33 | &buffer2 | provenance | | +| test.rs:460:17:460:22 | buffer | test.rs:461:18:461:23 | buffer | provenance | | +| test.rs:460:26:460:32 | reader2 | test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | +| test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | test.rs:460:26:460:49 | await ... [Ok] | provenance | | +| test.rs:460:26:460:49 | await ... [Ok] | test.rs:460:26:460:50 | TryExpr | provenance | | +| test.rs:460:26:460:50 | TryExpr | test.rs:460:17:460:22 | buffer | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | | +| test.rs:467:17:467:26 | mut pinned | test.rs:470:30:470:35 | pinned | provenance | | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | | @@ -343,31 +312,62 @@ edges | test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | -| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | -| test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | | -| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | | -| test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | | -| test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | | -| test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | | -| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | -| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | -| test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | -| test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:15 | -| test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | -| test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | -| test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:14 | -| test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | -| test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | -| test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | -| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | -| test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | -| test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | +| test.rs:470:30:470:35 | pinned | test.rs:470:56:470:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | +| test.rs:470:56:470:66 | [post] &mut buffer [&ref] | test.rs:470:61:470:66 | [post] buffer | provenance | | +| test.rs:470:61:470:66 | [post] buffer | test.rs:471:19:471:24 | buffer | provenance | | +| test.rs:470:61:470:66 | [post] buffer | test.rs:473:23:473:28 | buffer | provenance | | +| test.rs:470:61:470:66 | [post] buffer | test.rs:473:23:473:33 | buffer[...] | provenance | | +| test.rs:471:19:471:24 | buffer | test.rs:471:18:471:24 | &buffer | provenance | | +| test.rs:473:23:473:28 | buffer | test.rs:473:23:473:33 | buffer[...] | provenance | MaD:10 | +| test.rs:473:23:473:33 | buffer[...] | test.rs:473:22:473:33 | &... | provenance | | +| test.rs:480:63:480:74 | &mut reader2 [&ref] | test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | +| test.rs:480:68:480:74 | reader2 | test.rs:480:63:480:74 | &mut reader2 [&ref] | provenance | | +| test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | test.rs:480:82:480:88 | [post] buffer1 | provenance | | +| test.rs:480:82:480:88 | [post] buffer1 | test.rs:481:19:481:25 | buffer1 | provenance | | +| test.rs:480:82:480:88 | [post] buffer1 | test.rs:481:19:481:40 | buffer1[...] | provenance | | +| test.rs:481:19:481:25 | buffer1 | test.rs:481:19:481:40 | buffer1[...] | provenance | MaD:10 | +| test.rs:481:19:481:40 | buffer1[...] | test.rs:481:18:481:40 | &... | provenance | | +| test.rs:484:31:484:37 | reader2 | test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | +| test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | test.rs:484:49:484:55 | [post] buffer2 | provenance | | +| test.rs:484:49:484:55 | [post] buffer2 | test.rs:485:19:485:25 | buffer2 | provenance | | +| test.rs:484:49:484:55 | [post] buffer2 | test.rs:485:19:485:40 | buffer2[...] | provenance | | +| test.rs:485:19:485:25 | buffer2 | test.rs:485:19:485:40 | buffer2[...] | provenance | MaD:10 | +| test.rs:485:19:485:40 | buffer2[...] | test.rs:485:18:485:40 | &... | provenance | | +| test.rs:490:17:490:26 | mut pinned | test.rs:491:19:491:24 | pinned | provenance | | +| test.rs:490:17:490:26 | mut pinned | test.rs:493:26:493:31 | pinned | provenance | | +| test.rs:490:17:490:26 | mut pinned [Pin, &ref] | test.rs:491:19:491:24 | pinned [Pin, &ref] | provenance | | +| test.rs:490:30:490:51 | ...::new(...) | test.rs:490:17:490:26 | mut pinned | provenance | | +| test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | test.rs:490:17:490:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:490:39:490:50 | &mut reader2 [&ref] | test.rs:490:30:490:51 | ...::new(...) | provenance | MaD:26 | +| test.rs:490:39:490:50 | &mut reader2 [&ref] | test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | provenance | MaD:27 | +| test.rs:490:44:490:50 | reader2 | test.rs:490:39:490:50 | &mut reader2 [&ref] | provenance | | +| test.rs:491:19:491:24 | pinned | test.rs:491:18:491:24 | &pinned | provenance | | +| test.rs:491:19:491:24 | pinned [Pin, &ref] | test.rs:491:18:491:24 | &pinned | provenance | | +| test.rs:493:17:493:22 | buffer [Ready, Ok] | test.rs:494:19:494:24 | buffer [Ready, Ok] | provenance | | +| test.rs:493:17:493:22 | buffer [Ready, Ok] | test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:493:26:493:31 | pinned | test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | +| test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:493:17:493:22 | buffer [Ready, Ok] | provenance | | +| test.rs:494:19:494:24 | buffer [Ready, Ok] | test.rs:494:18:494:24 | &buffer | provenance | | +| test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | test.rs:495:32:495:38 | Ok(...) [Ok] | provenance | | +| test.rs:495:32:495:38 | Ok(...) [Ok] | test.rs:495:35:495:37 | buf | provenance | | +| test.rs:495:35:495:37 | buf | test.rs:496:22:496:24 | buf | provenance | | +| test.rs:502:17:502:22 | buffer | test.rs:503:18:503:23 | buffer | provenance | | +| test.rs:502:26:502:32 | reader2 | test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | +| test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | test.rs:502:26:502:49 | await ... [Ok] | provenance | | +| test.rs:502:26:502:49 | await ... [Ok] | test.rs:502:26:502:50 | TryExpr | provenance | | +| test.rs:502:26:502:50 | TryExpr | test.rs:502:17:502:22 | buffer | provenance | | +| test.rs:509:31:509:37 | reader2 | test.rs:509:57:509:65 | [post] &mut line [&ref] | provenance | MaD:15 | +| test.rs:509:57:509:65 | [post] &mut line [&ref] | test.rs:509:62:509:65 | [post] line | provenance | | +| test.rs:509:62:509:65 | [post] line | test.rs:510:19:510:22 | line | provenance | | +| test.rs:510:19:510:22 | line | test.rs:510:18:510:22 | &line | provenance | | +| test.rs:516:31:516:37 | reader2 | test.rs:516:49:516:57 | [post] &mut line [&ref] | provenance | MaD:14 | +| test.rs:516:49:516:57 | [post] &mut line [&ref] | test.rs:516:54:516:57 | [post] line | provenance | | +| test.rs:516:54:516:57 | [post] line | test.rs:517:19:517:22 | line | provenance | | +| test.rs:517:19:517:22 | line | test.rs:517:18:517:22 | &line | provenance | | +| test.rs:523:31:523:37 | reader2 | test.rs:523:51:523:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:523:51:523:61 | [post] &mut buffer [&ref] | test.rs:523:56:523:61 | [post] buffer | provenance | | +| test.rs:523:56:523:61 | [post] buffer | test.rs:524:19:524:24 | buffer | provenance | | +| test.rs:524:19:524:24 | buffer | test.rs:524:18:524:24 | &buffer | provenance | | nodes | test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | | test.rs:11:26:11:62 | ...::get(...) | semmle.label | ...::get(...) | @@ -543,121 +543,91 @@ nodes | test.rs:350:49:350:54 | [post] buffer | semmle.label | [post] buffer | | test.rs:351:14:351:20 | &buffer | semmle.label | &buffer | | test.rs:351:15:351:20 | buffer | semmle.label | buffer | -| test.rs:373:13:373:15 | tcp | semmle.label | tcp | -| test.rs:373:19:373:41 | ...::connect(...) | semmle.label | ...::connect(...) | -| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | -| test.rs:373:19:373:47 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:373:19:373:48 | TryExpr | semmle.label | TryExpr | -| test.rs:374:14:374:17 | &tcp | semmle.label | &tcp | -| test.rs:374:15:374:17 | tcp | semmle.label | tcp | -| test.rs:380:13:380:22 | mut reader | semmle.label | mut reader | -| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | -| test.rs:380:26:380:66 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:380:26:380:67 | TryExpr | semmle.label | TryExpr | -| test.rs:380:57:380:59 | tcp | semmle.label | tcp | -| test.rs:381:14:381:20 | &reader | semmle.label | &reader | -| test.rs:381:15:381:20 | reader | semmle.label | reader | -| test.rs:386:17:386:26 | mut pinned | semmle.label | mut pinned | -| test.rs:386:17:386:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:386:30:386:50 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:386:39:386:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:386:44:386:49 | reader | semmle.label | reader | -| test.rs:387:18:387:24 | &pinned | semmle.label | &pinned | -| test.rs:387:19:387:24 | pinned | semmle.label | pinned | -| test.rs:387:19:387:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:389:30:389:35 | pinned | semmle.label | pinned | -| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:389:61:389:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:391:22:391:28 | &buffer | semmle.label | &buffer | -| test.rs:391:23:391:28 | buffer | semmle.label | buffer | -| test.rs:392:22:392:33 | &... | semmle.label | &... | -| test.rs:392:23:392:28 | buffer | semmle.label | buffer | -| test.rs:392:23:392:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:399:63:399:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:399:68:399:73 | reader | semmle.label | reader | -| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:399:81:399:87 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:400:18:400:40 | &... | semmle.label | &... | -| test.rs:400:19:400:25 | buffer1 | semmle.label | buffer1 | -| test.rs:400:19:400:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:403:31:403:36 | reader | semmle.label | reader | -| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:403:48:403:54 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:405:18:405:40 | &... | semmle.label | &... | -| test.rs:405:19:405:25 | buffer2 | semmle.label | buffer2 | -| test.rs:405:19:405:40 | buffer2[...] | semmle.label | buffer2[...] | -| test.rs:408:13:408:23 | mut reader2 | semmle.label | mut reader2 | -| test.rs:408:27:408:61 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:408:55:408:60 | reader | semmle.label | reader | -| test.rs:409:14:409:21 | &reader2 | semmle.label | &reader2 | -| test.rs:409:15:409:21 | reader2 | semmle.label | reader2 | -| test.rs:413:17:413:26 | mut pinned | semmle.label | mut pinned | -| test.rs:413:17:413:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:413:30:413:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:413:44:413:50 | reader2 | semmle.label | reader2 | -| test.rs:414:18:414:24 | &pinned | semmle.label | &pinned | -| test.rs:414:19:414:24 | pinned | semmle.label | pinned | -| test.rs:414:19:414:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:416:26:416:31 | pinned | semmle.label | pinned | -| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:417:32:417:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:417:35:417:37 | buf | semmle.label | buf | -| test.rs:418:22:418:28 | &buffer | semmle.label | &buffer | -| test.rs:418:23:418:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:419:22:419:24 | buf | semmle.label | buf | -| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:423:27:423:48 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:423:41:423:47 | reader2 | semmle.label | reader2 | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:425:29:425:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:425:32:425:34 | buf | semmle.label | buf | -| test.rs:426:26:426:33 | &buffer2 | semmle.label | &buffer2 | -| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:427:26:427:28 | buf | semmle.label | buf | -| test.rs:437:17:437:22 | buffer | semmle.label | buffer | -| test.rs:437:26:437:32 | reader2 | semmle.label | reader2 | -| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:437:26:437:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:437:26:437:50 | TryExpr | semmle.label | TryExpr | -| test.rs:438:18:438:23 | buffer | semmle.label | buffer | -| test.rs:444:17:444:26 | mut pinned | semmle.label | mut pinned | -| test.rs:444:17:444:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:444:30:444:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:444:44:444:50 | reader2 | semmle.label | reader2 | -| test.rs:445:18:445:24 | &pinned | semmle.label | &pinned | -| test.rs:445:19:445:24 | pinned | semmle.label | pinned | -| test.rs:445:19:445:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:447:30:447:35 | pinned | semmle.label | pinned | -| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:447:61:447:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:448:18:448:24 | &buffer | semmle.label | &buffer | -| test.rs:448:19:448:24 | buffer | semmle.label | buffer | -| test.rs:450:22:450:33 | &... | semmle.label | &... | -| test.rs:450:23:450:28 | buffer | semmle.label | buffer | -| test.rs:450:23:450:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:457:68:457:74 | reader2 | semmle.label | reader2 | -| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:457:82:457:88 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:458:18:458:40 | &... | semmle.label | &... | -| test.rs:458:19:458:25 | buffer1 | semmle.label | buffer1 | -| test.rs:458:19:458:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:461:31:461:37 | reader2 | semmle.label | reader2 | -| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:461:49:461:55 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:462:18:462:40 | &... | semmle.label | &... | -| test.rs:462:19:462:25 | buffer2 | semmle.label | buffer2 | -| test.rs:462:19:462:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:396:13:396:15 | tcp | semmle.label | tcp | +| test.rs:396:19:396:41 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:396:19:396:47 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:396:19:396:48 | TryExpr | semmle.label | TryExpr | +| test.rs:397:14:397:17 | &tcp | semmle.label | &tcp | +| test.rs:397:15:397:17 | tcp | semmle.label | tcp | +| test.rs:403:13:403:22 | mut reader | semmle.label | mut reader | +| test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | +| test.rs:403:26:403:66 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:403:26:403:67 | TryExpr | semmle.label | TryExpr | +| test.rs:403:57:403:59 | tcp | semmle.label | tcp | +| test.rs:404:14:404:20 | &reader | semmle.label | &reader | +| test.rs:404:15:404:20 | reader | semmle.label | reader | +| test.rs:409:17:409:26 | mut pinned | semmle.label | mut pinned | +| test.rs:409:17:409:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:409:30:409:50 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:409:39:409:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:409:44:409:49 | reader | semmle.label | reader | +| test.rs:410:18:410:24 | &pinned | semmle.label | &pinned | +| test.rs:410:19:410:24 | pinned | semmle.label | pinned | +| test.rs:410:19:410:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:412:30:412:35 | pinned | semmle.label | pinned | +| test.rs:412:56:412:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:412:61:412:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:414:22:414:28 | &buffer | semmle.label | &buffer | +| test.rs:414:23:414:28 | buffer | semmle.label | buffer | +| test.rs:415:22:415:33 | &... | semmle.label | &... | +| test.rs:415:23:415:28 | buffer | semmle.label | buffer | +| test.rs:415:23:415:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:422:63:422:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:422:68:422:73 | reader | semmle.label | reader | +| test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:422:81:422:87 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:423:18:423:40 | &... | semmle.label | &... | +| test.rs:423:19:423:25 | buffer1 | semmle.label | buffer1 | +| test.rs:423:19:423:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:426:31:426:36 | reader | semmle.label | reader | +| test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:426:48:426:54 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:428:18:428:40 | &... | semmle.label | &... | +| test.rs:428:19:428:25 | buffer2 | semmle.label | buffer2 | +| test.rs:428:19:428:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:431:13:431:23 | mut reader2 | semmle.label | mut reader2 | +| test.rs:431:27:431:61 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:431:55:431:60 | reader | semmle.label | reader | +| test.rs:432:14:432:21 | &reader2 | semmle.label | &reader2 | +| test.rs:432:15:432:21 | reader2 | semmle.label | reader2 | +| test.rs:436:17:436:26 | mut pinned | semmle.label | mut pinned | +| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:436:30:436:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:436:39:436:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:436:44:436:50 | reader2 | semmle.label | reader2 | +| test.rs:437:18:437:24 | &pinned | semmle.label | &pinned | +| test.rs:437:19:437:24 | pinned | semmle.label | pinned | +| test.rs:437:19:437:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:439:17:439:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:439:26:439:31 | pinned | semmle.label | pinned | +| test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:440:32:440:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:440:35:440:37 | buf | semmle.label | buf | +| test.rs:441:22:441:28 | &buffer | semmle.label | &buffer | +| test.rs:441:23:441:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:442:22:442:24 | buf | semmle.label | buf | +| test.rs:446:17:446:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:446:27:446:48 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | +| test.rs:446:36:446:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:446:41:446:47 | reader2 | semmle.label | reader2 | +| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:448:29:448:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:448:32:448:34 | buf | semmle.label | buf | +| test.rs:449:26:449:33 | &buffer2 | semmle.label | &buffer2 | +| test.rs:449:27:449:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:450:26:450:28 | buf | semmle.label | buf | +| test.rs:460:17:460:22 | buffer | semmle.label | buffer | +| test.rs:460:26:460:32 | reader2 | semmle.label | reader2 | +| test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:460:26:460:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:460:26:460:50 | TryExpr | semmle.label | TryExpr | +| test.rs:461:18:461:23 | buffer | semmle.label | buffer | | test.rs:467:17:467:26 | mut pinned | semmle.label | mut pinned | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | | test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) | @@ -667,36 +637,66 @@ nodes | test.rs:468:18:468:24 | &pinned | semmle.label | &pinned | | test.rs:468:19:468:24 | pinned | semmle.label | pinned | | test.rs:468:19:468:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:470:26:470:31 | pinned | semmle.label | pinned | -| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:470:30:470:35 | pinned | semmle.label | pinned | +| test.rs:470:56:470:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:470:61:470:66 | [post] buffer | semmle.label | [post] buffer | | test.rs:471:18:471:24 | &buffer | semmle.label | &buffer | -| test.rs:471:19:471:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:472:32:472:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:472:35:472:37 | buf | semmle.label | buf | -| test.rs:473:22:473:24 | buf | semmle.label | buf | -| test.rs:479:17:479:22 | buffer | semmle.label | buffer | -| test.rs:479:26:479:32 | reader2 | semmle.label | reader2 | -| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:479:26:479:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:479:26:479:50 | TryExpr | semmle.label | TryExpr | -| test.rs:480:18:480:23 | buffer | semmle.label | buffer | -| test.rs:486:31:486:37 | reader2 | semmle.label | reader2 | -| test.rs:486:57:486:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:486:62:486:65 | [post] line | semmle.label | [post] line | -| test.rs:487:18:487:22 | &line | semmle.label | &line | -| test.rs:487:19:487:22 | line | semmle.label | line | -| test.rs:493:31:493:37 | reader2 | semmle.label | reader2 | -| test.rs:493:49:493:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:493:54:493:57 | [post] line | semmle.label | [post] line | -| test.rs:494:18:494:22 | &line | semmle.label | &line | -| test.rs:494:19:494:22 | line | semmle.label | line | -| test.rs:500:31:500:37 | reader2 | semmle.label | reader2 | -| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:500:56:500:61 | [post] buffer | semmle.label | [post] buffer | -| test.rs:501:18:501:24 | &buffer | semmle.label | &buffer | -| test.rs:501:19:501:24 | buffer | semmle.label | buffer | +| test.rs:471:19:471:24 | buffer | semmle.label | buffer | +| test.rs:473:22:473:33 | &... | semmle.label | &... | +| test.rs:473:23:473:28 | buffer | semmle.label | buffer | +| test.rs:473:23:473:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:480:63:480:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:480:68:480:74 | reader2 | semmle.label | reader2 | +| test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:480:82:480:88 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:481:18:481:40 | &... | semmle.label | &... | +| test.rs:481:19:481:25 | buffer1 | semmle.label | buffer1 | +| test.rs:481:19:481:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:484:31:484:37 | reader2 | semmle.label | reader2 | +| test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:484:49:484:55 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:485:18:485:40 | &... | semmle.label | &... | +| test.rs:485:19:485:25 | buffer2 | semmle.label | buffer2 | +| test.rs:485:19:485:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:490:17:490:26 | mut pinned | semmle.label | mut pinned | +| test.rs:490:17:490:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:490:30:490:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:490:39:490:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:490:44:490:50 | reader2 | semmle.label | reader2 | +| test.rs:491:18:491:24 | &pinned | semmle.label | &pinned | +| test.rs:491:19:491:24 | pinned | semmle.label | pinned | +| test.rs:491:19:491:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:493:17:493:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:493:26:493:31 | pinned | semmle.label | pinned | +| test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:494:18:494:24 | &buffer | semmle.label | &buffer | +| test.rs:494:19:494:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:495:32:495:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:495:35:495:37 | buf | semmle.label | buf | +| test.rs:496:22:496:24 | buf | semmle.label | buf | +| test.rs:502:17:502:22 | buffer | semmle.label | buffer | +| test.rs:502:26:502:32 | reader2 | semmle.label | reader2 | +| test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:502:26:502:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:502:26:502:50 | TryExpr | semmle.label | TryExpr | +| test.rs:503:18:503:23 | buffer | semmle.label | buffer | +| test.rs:509:31:509:37 | reader2 | semmle.label | reader2 | +| test.rs:509:57:509:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:509:62:509:65 | [post] line | semmle.label | [post] line | +| test.rs:510:18:510:22 | &line | semmle.label | &line | +| test.rs:510:19:510:22 | line | semmle.label | line | +| test.rs:516:31:516:37 | reader2 | semmle.label | reader2 | +| test.rs:516:49:516:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:516:54:516:57 | [post] line | semmle.label | [post] line | +| test.rs:517:18:517:22 | &line | semmle.label | &line | +| test.rs:517:19:517:22 | line | semmle.label | line | +| test.rs:523:31:523:37 | reader2 | semmle.label | reader2 | +| test.rs:523:51:523:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:523:56:523:61 | [post] buffer | semmle.label | [post] buffer | +| test.rs:524:18:524:24 | &buffer | semmle.label | &buffer | +| test.rs:524:19:524:24 | buffer | semmle.label | buffer | subpaths testFailures #select @@ -728,29 +728,29 @@ testFailures | test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | -| test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:41 | ...::connect(...) | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:381:14:381:20 | &reader | test.rs:373:19:373:41 | ...::connect(...) | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:391:22:391:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:391:22:391:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:392:22:392:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:392:22:392:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:400:18:400:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:400:18:400:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:405:18:405:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:405:18:405:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:419:22:419:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:419:22:419:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:426:26:426:33 | &buffer2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:426:26:426:33 | &buffer2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:427:26:427:28 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:438:18:438:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:448:18:448:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:448:18:448:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:450:22:450:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:450:22:450:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:458:18:458:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:462:18:462:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:471:18:471:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:471:18:471:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:473:22:473:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:473:22:473:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:480:18:480:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:480:18:480:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:487:18:487:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:487:18:487:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:494:18:494:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:494:18:494:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:501:18:501:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:501:18:501:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:397:14:397:17 | &tcp | test.rs:396:19:396:41 | ...::connect(...) | test.rs:397:14:397:17 | &tcp | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:404:14:404:20 | &reader | test.rs:396:19:396:41 | ...::connect(...) | test.rs:404:14:404:20 | &reader | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:410:18:410:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:410:18:410:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:414:22:414:28 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:414:22:414:28 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:415:22:415:33 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:415:22:415:33 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:423:18:423:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:423:18:423:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:428:18:428:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:428:18:428:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:432:14:432:21 | &reader2 | test.rs:396:19:396:41 | ...::connect(...) | test.rs:432:14:432:21 | &reader2 | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:437:18:437:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:437:18:437:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:441:22:441:28 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:441:22:441:28 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:442:22:442:24 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:442:22:442:24 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:449:26:449:33 | &buffer2 | test.rs:396:19:396:41 | ...::connect(...) | test.rs:449:26:449:33 | &buffer2 | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:450:26:450:28 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:450:26:450:28 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:461:18:461:23 | buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:461:18:461:23 | buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:468:18:468:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:468:18:468:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:471:18:471:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:471:18:471:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:473:22:473:33 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:473:22:473:33 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:481:18:481:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:481:18:481:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:485:18:485:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:485:18:485:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:491:18:491:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:491:18:491:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:494:18:494:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:494:18:494:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:496:22:496:24 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:496:22:496:24 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:503:18:503:23 | buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:503:18:503:23 | buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:510:18:510:22 | &line | test.rs:396:19:396:41 | ...::connect(...) | test.rs:510:18:510:22 | &line | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:517:18:517:22 | &line | test.rs:396:19:396:41 | ...::connect(...) | test.rs:517:18:517:22 | &line | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:524:18:524:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:524:18:524:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index bf0333168e4b..78f45810e4d8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -13,5 +13,6 @@ | test.rs:224:28:224:66 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:306:22:306:58 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:332:22:332:75 | ...::new(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:373:19:373:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:519:16:519:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:359:18:359:54 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:396:19:396:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:542:16:542:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/options.yml b/rust/ql/test/library-tests/dataflow/sources/net/options.yml index 24cda1561c0f..d4a803ef79a6 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/net/options.yml @@ -10,3 +10,4 @@ qltest_dependencies: - rustls = { version = "0.23.27" } - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } + - native-tls = { version = "0.2.14" } diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index bb6f54cb913d..ee52f7a37cec 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -354,6 +354,29 @@ fn test_rustls() -> std::io::Result<()> { Ok(()) } +fn test_native_tls() -> Result<(), Box> { + let address = "www.example.com:443"; + let stream = std::net::TcpStream::connect(address)?; // $ Alert[rust/summary/taint-sources] + let connector = native_tls::TlsConnector::new()?; + let mut stream = connector.connect("www.example.com", stream)?; + sink(&stream); // $ MISSING: hasTaintFlow=address + + stream.write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n")?; + + let mut buffer = [0u8; 100]; + let bytes_read = stream.read(&mut buffer)?; + println!("bytes_read = {}", bytes_read); + println!("buffer = {:?}", &buffer[..bytes_read]); + sink(&buffer[..bytes_read]); // $ MISSING: hasTaintFlow=address + + let mut response = String::new(); + stream.read_to_string(&mut response)?; + println!("rest of response = '{}'", response); + sink(response); // $ MISSING: hasTaintFlow=address + + Ok(()) +} + mod futures_rustls { use async_std::net::TcpStream; use async_std::sync::Arc; @@ -548,6 +571,12 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_native_tls..."); + match test_native_tls() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + println!("test_rustls..."); match test_rustls() { Ok(_) => println!("complete"), From 355c9662eba39bc2061f365197cc636b32c90bfe Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Aug 2026 18:46:29 +0100 Subject: [PATCH 3/8] Rust: Add a few more models for native_tls and related crates. --- .../rust/frameworks/native-tls.model.yml | 8 ++ .../dataflow/sources/net/InlineFlow.expected | 94 ++++++++++++++----- .../dataflow/sources/net/test.rs | 6 +- 3 files changed, 80 insertions(+), 28 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml index 1da63eb7961a..5491e7e5fc23 100644 --- a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -7,3 +7,11 @@ extensions: - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::connect", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["async_native_tls::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index f9ab8bb801a1..8669b8288446 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -32,47 +32,48 @@ models | 31 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | | 32 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | | 33 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | -| 34 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 36 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 38 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 39 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 40 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 41 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 42 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | -| 43 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | -| 44 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 34 | Summary: ::connect; Argument[1]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 37 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 39 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 40 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 42 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 43 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | +| 44 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | +| 45 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:62 | ...::get(...) | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:38 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:39 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:62 | ...::get(...) | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:28 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:38 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:39 | | test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:28 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:62 | ...::get(...) | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:28 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:39 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:40 | | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:28 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:62 | ...::get(...) | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:28 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:37 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:38 | | test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:28 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:52 | ...::get(...) | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:36 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:37 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -80,7 +81,7 @@ edges | test.rs:26:26:26:52 | ...::get(...) | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:34 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:35 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | @@ -90,13 +91,13 @@ edges | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:35 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:36 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | | test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:25 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:35 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:36 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -140,7 +141,7 @@ edges | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | | test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:23 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:40 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:41 | | test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:19 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | @@ -148,9 +149,9 @@ edges | test.rs:203:21:203:26 | reader | test.rs:204:29:204:34 | reader | provenance | | | test.rs:203:30:203:73 | ...::new(...) | test.rs:203:30:203:83 | ... .take(...) | provenance | MaD:23 | | test.rs:203:30:203:83 | ... .take(...) | test.rs:203:21:203:26 | reader | provenance | | -| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:41 | +| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:42 | | test.rs:203:54:203:71 | stream.try_clone() [Ok] | test.rs:203:54:203:72 | TryExpr | provenance | | -| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:40 | +| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:41 | | test.rs:204:29:204:34 | reader | test.rs:204:29:204:42 | reader.lines() | provenance | MaD:18 | | test.rs:204:29:204:42 | reader.lines() | test.rs:205:28:205:37 | Ok(...) | provenance | | | test.rs:205:28:205:37 | Ok(...) | test.rs:207:30:207:35 | string | provenance | | @@ -162,7 +163,7 @@ edges | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | -| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:42 | +| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:43 | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | @@ -174,11 +175,11 @@ edges | test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:10 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | | test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:10 | -| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:43 | +| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:44 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | | test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | -| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:45 | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | @@ -205,6 +206,26 @@ edges | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | | test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | +| test.rs:359:9:359:14 | stream | test.rs:361:59:361:64 | stream | provenance | | +| test.rs:359:18:359:54 | ...::connect(...) | test.rs:359:18:359:54 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:359:18:359:54 | ...::connect(...) [Ok] | test.rs:359:18:359:55 | TryExpr | provenance | | +| test.rs:359:18:359:55 | TryExpr | test.rs:359:9:359:14 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:362:11:362:16 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:367:22:367:27 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:373:5:373:10 | stream | provenance | | +| test.rs:361:22:361:65 | connector.connect(...) [Ok] | test.rs:361:22:361:66 | TryExpr | provenance | | +| test.rs:361:22:361:66 | TryExpr | test.rs:361:9:361:18 | mut stream | provenance | | +| test.rs:361:59:361:64 | stream | test.rs:361:22:361:65 | connector.connect(...) [Ok] | provenance | MaD:34 | +| test.rs:362:11:362:16 | stream | test.rs:362:10:362:16 | &stream | provenance | | +| test.rs:367:22:367:27 | stream | test.rs:367:34:367:44 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:367:34:367:44 | [post] &mut buffer [&ref] | test.rs:367:39:367:44 | [post] buffer | provenance | | +| test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:16 | buffer | provenance | | +| test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:30 | buffer[...] | provenance | | +| test.rs:370:11:370:16 | buffer | test.rs:370:11:370:30 | buffer[...] | provenance | MaD:10 | +| test.rs:370:11:370:30 | buffer[...] | test.rs:370:10:370:30 | &... | provenance | | +| test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:22 | +| test.rs:373:27:373:39 | [post] &mut response [&ref] | test.rs:373:32:373:39 | [post] response | provenance | | +| test.rs:373:32:373:39 | [post] response | test.rs:375:10:375:17 | response | provenance | | | test.rs:396:13:396:15 | tcp | test.rs:397:15:397:17 | tcp | provenance | | | test.rs:396:13:396:15 | tcp | test.rs:403:57:403:59 | tcp | provenance | | | test.rs:396:19:396:41 | ...::connect(...) | test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | @@ -543,6 +564,26 @@ nodes | test.rs:350:49:350:54 | [post] buffer | semmle.label | [post] buffer | | test.rs:351:14:351:20 | &buffer | semmle.label | &buffer | | test.rs:351:15:351:20 | buffer | semmle.label | buffer | +| test.rs:359:9:359:14 | stream | semmle.label | stream | +| test.rs:359:18:359:54 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:359:18:359:54 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | +| test.rs:359:18:359:55 | TryExpr | semmle.label | TryExpr | +| test.rs:361:9:361:18 | mut stream | semmle.label | mut stream | +| test.rs:361:22:361:65 | connector.connect(...) [Ok] | semmle.label | connector.connect(...) [Ok] | +| test.rs:361:22:361:66 | TryExpr | semmle.label | TryExpr | +| test.rs:361:59:361:64 | stream | semmle.label | stream | +| test.rs:362:10:362:16 | &stream | semmle.label | &stream | +| test.rs:362:11:362:16 | stream | semmle.label | stream | +| test.rs:367:22:367:27 | stream | semmle.label | stream | +| test.rs:367:34:367:44 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:367:39:367:44 | [post] buffer | semmle.label | [post] buffer | +| test.rs:370:10:370:30 | &... | semmle.label | &... | +| test.rs:370:11:370:16 | buffer | semmle.label | buffer | +| test.rs:370:11:370:30 | buffer[...] | semmle.label | buffer[...] | +| test.rs:373:5:373:10 | stream | semmle.label | stream | +| test.rs:373:27:373:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | +| test.rs:373:32:373:39 | [post] response | semmle.label | [post] response | +| test.rs:375:10:375:17 | response | semmle.label | response | | test.rs:396:13:396:15 | tcp | semmle.label | tcp | | test.rs:396:19:396:41 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | @@ -728,6 +769,9 @@ testFailures | test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | +| test.rs:362:10:362:16 | &stream | test.rs:359:18:359:54 | ...::connect(...) | test.rs:362:10:362:16 | &stream | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:370:10:370:30 | &... | test.rs:359:18:359:54 | ...::connect(...) | test.rs:370:10:370:30 | &... | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:375:10:375:17 | response | test.rs:359:18:359:54 | ...::connect(...) | test.rs:375:10:375:17 | response | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:397:14:397:17 | &tcp | test.rs:396:19:396:41 | ...::connect(...) | test.rs:397:14:397:17 | &tcp | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | | test.rs:404:14:404:20 | &reader | test.rs:396:19:396:41 | ...::connect(...) | test.rs:404:14:404:20 | &reader | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | | test.rs:410:18:410:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:410:18:410:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index ee52f7a37cec..16a42f75da95 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -359,7 +359,7 @@ fn test_native_tls() -> Result<(), Box> { let stream = std::net::TcpStream::connect(address)?; // $ Alert[rust/summary/taint-sources] let connector = native_tls::TlsConnector::new()?; let mut stream = connector.connect("www.example.com", stream)?; - sink(&stream); // $ MISSING: hasTaintFlow=address + sink(&stream); // $ hasTaintFlow=address stream.write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n")?; @@ -367,12 +367,12 @@ fn test_native_tls() -> Result<(), Box> { let bytes_read = stream.read(&mut buffer)?; println!("bytes_read = {}", bytes_read); println!("buffer = {:?}", &buffer[..bytes_read]); - sink(&buffer[..bytes_read]); // $ MISSING: hasTaintFlow=address + sink(&buffer[..bytes_read]); // $ hasTaintFlow=address let mut response = String::new(); stream.read_to_string(&mut response)?; println!("rest of response = '{}'", response); - sink(response); // $ MISSING: hasTaintFlow=address + sink(response); // $ hasTaintFlow=address Ok(()) } From fe411d7c2615119ae20a274839e8035438e5cca7 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 19 Aug 2026 14:06:38 +0100 Subject: [PATCH 4/8] Rust: Change note. --- .../lib/change-notes/2026-08-19-native-tls-summary-models.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2026-08-19-native-tls-summary-models.md diff --git a/rust/ql/lib/change-notes/2026-08-19-native-tls-summary-models.md b/rust/ql/lib/change-notes/2026-08-19-native-tls-summary-models.md new file mode 100644 index 000000000000..1a5ef111fedc --- /dev/null +++ b/rust/ql/lib/change-notes/2026-08-19-native-tls-summary-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added new flow summary models for the `native-tls`, `async-native-tls`, and `tokio-native-tls` crates. From 23ec6c05ce545572051136f43152892c4df47750 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 24 Sep 2026 10:01:36 +0100 Subject: [PATCH 5/8] Rust: Add test cases for aync-native-tls. --- .../dataflow/sources/net/Cargo.lock | 33 + .../dataflow/sources/net/InlineFlow.expected | 686 +++++++++--------- .../sources/net/TaintSources.expected | 5 +- .../dataflow/sources/net/options.yml | 1 + .../dataflow/sources/net/test.rs | 35 + 5 files changed, 415 insertions(+), 345 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock index f30f79630c4f..08dceba92341 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock @@ -92,6 +92,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-native-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9343dc5acf07e79ff82d0c37899f079db3534d99f189a1837c8e549c99405bec" +dependencies = [ + "futures-util", + "native-tls", + "thiserror", + "url", +] + [[package]] name = "async-std" version = "1.13.2" @@ -1551,6 +1563,7 @@ dependencies = [ name = "test" version = "0.0.1" dependencies = [ + "async-native-tls", "async-std", "futures", "futures-rustls", @@ -1564,6 +1577,26 @@ dependencies = [ "tokio", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tinystr" version = "0.8.1" diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 479f71cb3455..c67b746d950b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -226,169 +226,169 @@ edges | test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:38 | | test.rs:373:27:373:39 | [post] &mut response [&ref] | test.rs:373:32:373:39 | [post] response | provenance | | | test.rs:373:32:373:39 | [post] response | test.rs:375:10:375:17 | response | provenance | | -| test.rs:396:13:396:15 | tcp | test.rs:397:15:397:17 | tcp | provenance | | -| test.rs:396:13:396:15 | tcp | test.rs:403:57:403:59 | tcp | provenance | | -| test.rs:396:19:396:41 | ...::connect(...) | test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | -| test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | test.rs:396:19:396:47 | await ... [Ok] | provenance | | -| test.rs:396:19:396:47 | await ... [Ok] | test.rs:396:19:396:48 | TryExpr | provenance | | -| test.rs:396:19:396:48 | TryExpr | test.rs:396:13:396:15 | tcp | provenance | | -| test.rs:397:15:397:17 | tcp | test.rs:397:14:397:17 | &tcp | provenance | | -| test.rs:403:13:403:22 | mut reader | test.rs:404:15:404:20 | reader | provenance | | -| test.rs:403:13:403:22 | mut reader | test.rs:409:44:409:49 | reader | provenance | | -| test.rs:403:13:403:22 | mut reader | test.rs:422:68:422:73 | reader | provenance | | -| test.rs:403:13:403:22 | mut reader | test.rs:426:31:426:36 | reader | provenance | | -| test.rs:403:13:403:22 | mut reader | test.rs:431:55:431:60 | reader | provenance | | -| test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | test.rs:403:26:403:66 | await ... [Ok] | provenance | | -| test.rs:403:26:403:66 | await ... [Ok] | test.rs:403:26:403:67 | TryExpr | provenance | | -| test.rs:403:26:403:67 | TryExpr | test.rs:403:13:403:22 | mut reader | provenance | | -| test.rs:403:57:403:59 | tcp | test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | provenance | MaD:17 | -| test.rs:404:15:404:20 | reader | test.rs:404:14:404:20 | &reader | provenance | | -| test.rs:409:17:409:26 | mut pinned | test.rs:410:19:410:24 | pinned | provenance | | -| test.rs:409:17:409:26 | mut pinned | test.rs:412:30:412:35 | pinned | provenance | | -| test.rs:409:17:409:26 | mut pinned [Pin, &ref] | test.rs:410:19:410:24 | pinned [Pin, &ref] | provenance | | -| test.rs:409:30:409:50 | ...::new(...) | test.rs:409:17:409:26 | mut pinned | provenance | | -| test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | test.rs:409:17:409:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:409:39:409:49 | &mut reader [&ref] | test.rs:409:30:409:50 | ...::new(...) | provenance | MaD:12 | -| test.rs:409:39:409:49 | &mut reader [&ref] | test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:409:44:409:49 | reader | test.rs:409:39:409:49 | &mut reader [&ref] | provenance | | -| test.rs:410:19:410:24 | pinned | test.rs:410:18:410:24 | &pinned | provenance | | -| test.rs:410:19:410:24 | pinned [Pin, &ref] | test.rs:410:18:410:24 | &pinned | provenance | | -| test.rs:412:30:412:35 | pinned | test.rs:412:56:412:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | -| test.rs:412:56:412:66 | [post] &mut buffer [&ref] | test.rs:412:61:412:66 | [post] buffer | provenance | | -| test.rs:412:61:412:66 | [post] buffer | test.rs:414:23:414:28 | buffer | provenance | | -| test.rs:412:61:412:66 | [post] buffer | test.rs:415:23:415:28 | buffer | provenance | | -| test.rs:412:61:412:66 | [post] buffer | test.rs:415:23:415:33 | buffer[...] | provenance | | -| test.rs:414:23:414:28 | buffer | test.rs:414:22:414:28 | &buffer | provenance | | -| test.rs:415:23:415:28 | buffer | test.rs:415:23:415:33 | buffer[...] | provenance | MaD:10 | -| test.rs:415:23:415:33 | buffer[...] | test.rs:415:22:415:33 | &... | provenance | | -| test.rs:422:63:422:73 | &mut reader [&ref] | test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | -| test.rs:422:68:422:73 | reader | test.rs:422:63:422:73 | &mut reader [&ref] | provenance | | -| test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | test.rs:422:81:422:87 | [post] buffer1 | provenance | | -| test.rs:422:81:422:87 | [post] buffer1 | test.rs:423:19:423:25 | buffer1 | provenance | | -| test.rs:422:81:422:87 | [post] buffer1 | test.rs:423:19:423:40 | buffer1[...] | provenance | | -| test.rs:423:19:423:25 | buffer1 | test.rs:423:19:423:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:423:19:423:40 | buffer1[...] | test.rs:423:18:423:40 | &... | provenance | | -| test.rs:426:31:426:36 | reader | test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | -| test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | test.rs:426:48:426:54 | [post] buffer2 | provenance | | -| test.rs:426:48:426:54 | [post] buffer2 | test.rs:428:19:428:25 | buffer2 | provenance | | -| test.rs:426:48:426:54 | [post] buffer2 | test.rs:428:19:428:40 | buffer2[...] | provenance | | -| test.rs:428:19:428:25 | buffer2 | test.rs:428:19:428:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:428:19:428:40 | buffer2[...] | test.rs:428:18:428:40 | &... | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:432:15:432:21 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:436:44:436:50 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:446:41:446:47 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:460:26:460:32 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:480:68:480:74 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:484:31:484:37 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:490:44:490:50 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:502:26:502:32 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:509:31:509:37 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:516:31:516:37 | reader2 | provenance | | -| test.rs:431:13:431:23 | mut reader2 | test.rs:523:31:523:37 | reader2 | provenance | | -| test.rs:431:27:431:61 | ...::new(...) | test.rs:431:13:431:23 | mut reader2 | provenance | | -| test.rs:431:55:431:60 | reader | test.rs:431:27:431:61 | ...::new(...) | provenance | MaD:23 | -| test.rs:432:15:432:21 | reader2 | test.rs:432:14:432:21 | &reader2 | provenance | | -| test.rs:436:17:436:26 | mut pinned | test.rs:437:19:437:24 | pinned | provenance | | -| test.rs:436:17:436:26 | mut pinned | test.rs:439:26:439:31 | pinned | provenance | | -| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | test.rs:437:19:437:24 | pinned [Pin, &ref] | provenance | | -| test.rs:436:30:436:51 | ...::new(...) | test.rs:436:17:436:26 | mut pinned | provenance | | -| test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | test.rs:436:17:436:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:436:39:436:50 | &mut reader2 [&ref] | test.rs:436:30:436:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:436:39:436:50 | &mut reader2 [&ref] | test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:436:44:436:50 | reader2 | test.rs:436:39:436:50 | &mut reader2 [&ref] | provenance | | -| test.rs:437:19:437:24 | pinned | test.rs:437:18:437:24 | &pinned | provenance | | -| test.rs:437:19:437:24 | pinned [Pin, &ref] | test.rs:437:18:437:24 | &pinned | provenance | | -| test.rs:439:17:439:22 | buffer [Ready, Ok] | test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:439:17:439:22 | buffer [Ready, Ok] | test.rs:441:23:441:28 | buffer [Ready, Ok] | provenance | | -| test.rs:439:26:439:31 | pinned | test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:439:17:439:22 | buffer [Ready, Ok] | provenance | | -| test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | test.rs:440:32:440:38 | Ok(...) [Ok] | provenance | | -| test.rs:440:32:440:38 | Ok(...) [Ok] | test.rs:440:35:440:37 | buf | provenance | | -| test.rs:440:35:440:37 | buf | test.rs:442:22:442:24 | buf | provenance | | -| test.rs:441:23:441:28 | buffer [Ready, Ok] | test.rs:441:22:441:28 | &buffer | provenance | | -| test.rs:446:17:446:23 | buffer2 [Ready, Ok] | test.rs:447:20:447:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:446:27:446:48 | ...::new(...) | test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:446:17:446:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:446:36:446:47 | &mut reader2 [&ref] | test.rs:446:27:446:48 | ...::new(...) | provenance | MaD:12 | -| test.rs:446:41:446:47 | reader2 | test.rs:446:36:446:47 | &mut reader2 [&ref] | provenance | | -| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | test.rs:449:27:449:33 | buffer2 [Ready, Ok] | provenance | | -| test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | test.rs:448:29:448:35 | Ok(...) [Ok] | provenance | | -| test.rs:448:29:448:35 | Ok(...) [Ok] | test.rs:448:32:448:34 | buf | provenance | | -| test.rs:448:32:448:34 | buf | test.rs:450:26:450:28 | buf | provenance | | -| test.rs:449:27:449:33 | buffer2 [Ready, Ok] | test.rs:449:26:449:33 | &buffer2 | provenance | | -| test.rs:460:17:460:22 | buffer | test.rs:461:18:461:23 | buffer | provenance | | -| test.rs:460:26:460:32 | reader2 | test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | -| test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | test.rs:460:26:460:49 | await ... [Ok] | provenance | | -| test.rs:460:26:460:49 | await ... [Ok] | test.rs:460:26:460:50 | TryExpr | provenance | | -| test.rs:460:26:460:50 | TryExpr | test.rs:460:17:460:22 | buffer | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:470:30:470:35 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | | -| test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | -| test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | -| test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | -| test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | | -| test.rs:470:30:470:35 | pinned | test.rs:470:56:470:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | -| test.rs:470:56:470:66 | [post] &mut buffer [&ref] | test.rs:470:61:470:66 | [post] buffer | provenance | | -| test.rs:470:61:470:66 | [post] buffer | test.rs:471:19:471:24 | buffer | provenance | | -| test.rs:470:61:470:66 | [post] buffer | test.rs:473:23:473:28 | buffer | provenance | | -| test.rs:470:61:470:66 | [post] buffer | test.rs:473:23:473:33 | buffer[...] | provenance | | -| test.rs:471:19:471:24 | buffer | test.rs:471:18:471:24 | &buffer | provenance | | -| test.rs:473:23:473:28 | buffer | test.rs:473:23:473:33 | buffer[...] | provenance | MaD:10 | -| test.rs:473:23:473:33 | buffer[...] | test.rs:473:22:473:33 | &... | provenance | | -| test.rs:480:63:480:74 | &mut reader2 [&ref] | test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | -| test.rs:480:68:480:74 | reader2 | test.rs:480:63:480:74 | &mut reader2 [&ref] | provenance | | -| test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | test.rs:480:82:480:88 | [post] buffer1 | provenance | | -| test.rs:480:82:480:88 | [post] buffer1 | test.rs:481:19:481:25 | buffer1 | provenance | | -| test.rs:480:82:480:88 | [post] buffer1 | test.rs:481:19:481:40 | buffer1[...] | provenance | | -| test.rs:481:19:481:25 | buffer1 | test.rs:481:19:481:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:481:19:481:40 | buffer1[...] | test.rs:481:18:481:40 | &... | provenance | | -| test.rs:484:31:484:37 | reader2 | test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | -| test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | test.rs:484:49:484:55 | [post] buffer2 | provenance | | -| test.rs:484:49:484:55 | [post] buffer2 | test.rs:485:19:485:25 | buffer2 | provenance | | -| test.rs:484:49:484:55 | [post] buffer2 | test.rs:485:19:485:40 | buffer2[...] | provenance | | -| test.rs:485:19:485:25 | buffer2 | test.rs:485:19:485:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:485:19:485:40 | buffer2[...] | test.rs:485:18:485:40 | &... | provenance | | -| test.rs:490:17:490:26 | mut pinned | test.rs:491:19:491:24 | pinned | provenance | | -| test.rs:490:17:490:26 | mut pinned | test.rs:493:26:493:31 | pinned | provenance | | -| test.rs:490:17:490:26 | mut pinned [Pin, &ref] | test.rs:491:19:491:24 | pinned [Pin, &ref] | provenance | | -| test.rs:490:30:490:51 | ...::new(...) | test.rs:490:17:490:26 | mut pinned | provenance | | -| test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | test.rs:490:17:490:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:490:39:490:50 | &mut reader2 [&ref] | test.rs:490:30:490:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:490:39:490:50 | &mut reader2 [&ref] | test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:490:44:490:50 | reader2 | test.rs:490:39:490:50 | &mut reader2 [&ref] | provenance | | -| test.rs:491:19:491:24 | pinned | test.rs:491:18:491:24 | &pinned | provenance | | -| test.rs:491:19:491:24 | pinned [Pin, &ref] | test.rs:491:18:491:24 | &pinned | provenance | | -| test.rs:493:17:493:22 | buffer [Ready, Ok] | test.rs:494:19:494:24 | buffer [Ready, Ok] | provenance | | -| test.rs:493:17:493:22 | buffer [Ready, Ok] | test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:493:26:493:31 | pinned | test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:493:17:493:22 | buffer [Ready, Ok] | provenance | | -| test.rs:494:19:494:24 | buffer [Ready, Ok] | test.rs:494:18:494:24 | &buffer | provenance | | -| test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | test.rs:495:32:495:38 | Ok(...) [Ok] | provenance | | -| test.rs:495:32:495:38 | Ok(...) [Ok] | test.rs:495:35:495:37 | buf | provenance | | -| test.rs:495:35:495:37 | buf | test.rs:496:22:496:24 | buf | provenance | | -| test.rs:502:17:502:22 | buffer | test.rs:503:18:503:23 | buffer | provenance | | -| test.rs:502:26:502:32 | reader2 | test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | -| test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | test.rs:502:26:502:49 | await ... [Ok] | provenance | | -| test.rs:502:26:502:49 | await ... [Ok] | test.rs:502:26:502:50 | TryExpr | provenance | | -| test.rs:502:26:502:50 | TryExpr | test.rs:502:17:502:22 | buffer | provenance | | -| test.rs:509:31:509:37 | reader2 | test.rs:509:57:509:65 | [post] &mut line [&ref] | provenance | MaD:20 | -| test.rs:509:57:509:65 | [post] &mut line [&ref] | test.rs:509:62:509:65 | [post] line | provenance | | -| test.rs:509:62:509:65 | [post] line | test.rs:510:19:510:22 | line | provenance | | -| test.rs:510:19:510:22 | line | test.rs:510:18:510:22 | &line | provenance | | -| test.rs:516:31:516:37 | reader2 | test.rs:516:49:516:57 | [post] &mut line [&ref] | provenance | MaD:19 | -| test.rs:516:49:516:57 | [post] &mut line [&ref] | test.rs:516:54:516:57 | [post] line | provenance | | -| test.rs:516:54:516:57 | [post] line | test.rs:517:19:517:22 | line | provenance | | -| test.rs:517:19:517:22 | line | test.rs:517:18:517:22 | &line | provenance | | -| test.rs:523:31:523:37 | reader2 | test.rs:523:51:523:61 | [post] &mut buffer [&ref] | provenance | MaD:22 | -| test.rs:523:51:523:61 | [post] &mut buffer [&ref] | test.rs:523:56:523:61 | [post] buffer | provenance | | -| test.rs:523:56:523:61 | [post] buffer | test.rs:524:19:524:24 | buffer | provenance | | -| test.rs:524:19:524:24 | buffer | test.rs:524:18:524:24 | &buffer | provenance | | +| test.rs:425:13:425:15 | tcp | test.rs:426:15:426:17 | tcp | provenance | | +| test.rs:425:13:425:15 | tcp | test.rs:432:57:432:59 | tcp | provenance | | +| test.rs:425:19:425:41 | ...::connect(...) | test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | test.rs:425:19:425:47 | await ... [Ok] | provenance | | +| test.rs:425:19:425:47 | await ... [Ok] | test.rs:425:19:425:48 | TryExpr | provenance | | +| test.rs:425:19:425:48 | TryExpr | test.rs:425:13:425:15 | tcp | provenance | | +| test.rs:426:15:426:17 | tcp | test.rs:426:14:426:17 | &tcp | provenance | | +| test.rs:432:13:432:22 | mut reader | test.rs:433:15:433:20 | reader | provenance | | +| test.rs:432:13:432:22 | mut reader | test.rs:438:44:438:49 | reader | provenance | | +| test.rs:432:13:432:22 | mut reader | test.rs:451:68:451:73 | reader | provenance | | +| test.rs:432:13:432:22 | mut reader | test.rs:455:31:455:36 | reader | provenance | | +| test.rs:432:13:432:22 | mut reader | test.rs:460:55:460:60 | reader | provenance | | +| test.rs:432:26:432:60 | connector.connect(...) [future, Ok] | test.rs:432:26:432:66 | await ... [Ok] | provenance | | +| test.rs:432:26:432:66 | await ... [Ok] | test.rs:432:26:432:67 | TryExpr | provenance | | +| test.rs:432:26:432:67 | TryExpr | test.rs:432:13:432:22 | mut reader | provenance | | +| test.rs:432:57:432:59 | tcp | test.rs:432:26:432:60 | connector.connect(...) [future, Ok] | provenance | MaD:17 | +| test.rs:433:15:433:20 | reader | test.rs:433:14:433:20 | &reader | provenance | | +| test.rs:438:17:438:26 | mut pinned | test.rs:439:19:439:24 | pinned | provenance | | +| test.rs:438:17:438:26 | mut pinned | test.rs:441:30:441:35 | pinned | provenance | | +| test.rs:438:17:438:26 | mut pinned [Pin, &ref] | test.rs:439:19:439:24 | pinned [Pin, &ref] | provenance | | +| test.rs:438:30:438:50 | ...::new(...) | test.rs:438:17:438:26 | mut pinned | provenance | | +| test.rs:438:30:438:50 | ...::new(...) [Pin, &ref] | test.rs:438:17:438:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:438:39:438:49 | &mut reader [&ref] | test.rs:438:30:438:50 | ...::new(...) | provenance | MaD:12 | +| test.rs:438:39:438:49 | &mut reader [&ref] | test.rs:438:30:438:50 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | +| test.rs:438:44:438:49 | reader | test.rs:438:39:438:49 | &mut reader [&ref] | provenance | | +| test.rs:439:19:439:24 | pinned | test.rs:439:18:439:24 | &pinned | provenance | | +| test.rs:439:19:439:24 | pinned [Pin, &ref] | test.rs:439:18:439:24 | &pinned | provenance | | +| test.rs:441:30:441:35 | pinned | test.rs:441:56:441:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:441:56:441:66 | [post] &mut buffer [&ref] | test.rs:441:61:441:66 | [post] buffer | provenance | | +| test.rs:441:61:441:66 | [post] buffer | test.rs:443:23:443:28 | buffer | provenance | | +| test.rs:441:61:441:66 | [post] buffer | test.rs:444:23:444:28 | buffer | provenance | | +| test.rs:441:61:441:66 | [post] buffer | test.rs:444:23:444:33 | buffer[...] | provenance | | +| test.rs:443:23:443:28 | buffer | test.rs:443:22:443:28 | &buffer | provenance | | +| test.rs:444:23:444:28 | buffer | test.rs:444:23:444:33 | buffer[...] | provenance | MaD:10 | +| test.rs:444:23:444:33 | buffer[...] | test.rs:444:22:444:33 | &... | provenance | | +| test.rs:451:63:451:73 | &mut reader [&ref] | test.rs:451:76:451:87 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | +| test.rs:451:68:451:73 | reader | test.rs:451:63:451:73 | &mut reader [&ref] | provenance | | +| test.rs:451:76:451:87 | [post] &mut buffer1 [&ref] | test.rs:451:81:451:87 | [post] buffer1 | provenance | | +| test.rs:451:81:451:87 | [post] buffer1 | test.rs:452:19:452:25 | buffer1 | provenance | | +| test.rs:451:81:451:87 | [post] buffer1 | test.rs:452:19:452:40 | buffer1[...] | provenance | | +| test.rs:452:19:452:25 | buffer1 | test.rs:452:19:452:40 | buffer1[...] | provenance | MaD:10 | +| test.rs:452:19:452:40 | buffer1[...] | test.rs:452:18:452:40 | &... | provenance | | +| test.rs:455:31:455:36 | reader | test.rs:455:43:455:54 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | +| test.rs:455:43:455:54 | [post] &mut buffer2 [&ref] | test.rs:455:48:455:54 | [post] buffer2 | provenance | | +| test.rs:455:48:455:54 | [post] buffer2 | test.rs:457:19:457:25 | buffer2 | provenance | | +| test.rs:455:48:455:54 | [post] buffer2 | test.rs:457:19:457:40 | buffer2[...] | provenance | | +| test.rs:457:19:457:25 | buffer2 | test.rs:457:19:457:40 | buffer2[...] | provenance | MaD:10 | +| test.rs:457:19:457:40 | buffer2[...] | test.rs:457:18:457:40 | &... | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:461:15:461:21 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:465:44:465:50 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:475:41:475:47 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:489:26:489:32 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:496:44:496:50 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:509:68:509:74 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:513:31:513:37 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:519:44:519:50 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:531:26:531:32 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:538:31:538:37 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:545:31:545:37 | reader2 | provenance | | +| test.rs:460:13:460:23 | mut reader2 | test.rs:552:31:552:37 | reader2 | provenance | | +| test.rs:460:27:460:61 | ...::new(...) | test.rs:460:13:460:23 | mut reader2 | provenance | | +| test.rs:460:55:460:60 | reader | test.rs:460:27:460:61 | ...::new(...) | provenance | MaD:23 | +| test.rs:461:15:461:21 | reader2 | test.rs:461:14:461:21 | &reader2 | provenance | | +| test.rs:465:17:465:26 | mut pinned | test.rs:466:19:466:24 | pinned | provenance | | +| test.rs:465:17:465:26 | mut pinned | test.rs:468:26:468:31 | pinned | provenance | | +| test.rs:465:17:465:26 | mut pinned [Pin, &ref] | test.rs:466:19:466:24 | pinned [Pin, &ref] | provenance | | +| test.rs:465:30:465:51 | ...::new(...) | test.rs:465:17:465:26 | mut pinned | provenance | | +| test.rs:465:30:465:51 | ...::new(...) [Pin, &ref] | test.rs:465:17:465:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:465:39:465:50 | &mut reader2 [&ref] | test.rs:465:30:465:51 | ...::new(...) | provenance | MaD:12 | +| test.rs:465:39:465:50 | &mut reader2 [&ref] | test.rs:465:30:465:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | +| test.rs:465:44:465:50 | reader2 | test.rs:465:39:465:50 | &mut reader2 [&ref] | provenance | | +| test.rs:466:19:466:24 | pinned | test.rs:466:18:466:24 | &pinned | provenance | | +| test.rs:466:19:466:24 | pinned [Pin, &ref] | test.rs:466:18:466:24 | &pinned | provenance | | +| test.rs:468:17:468:22 | buffer [Ready, Ok] | test.rs:469:20:469:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:468:17:468:22 | buffer [Ready, Ok] | test.rs:470:23:470:28 | buffer [Ready, Ok] | provenance | | +| test.rs:468:26:468:31 | pinned | test.rs:468:26:468:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | +| test.rs:468:26:468:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:468:17:468:22 | buffer [Ready, Ok] | provenance | | +| test.rs:469:20:469:39 | ...::Ready(...) [Ready, Ok] | test.rs:469:32:469:38 | Ok(...) [Ok] | provenance | | +| test.rs:469:32:469:38 | Ok(...) [Ok] | test.rs:469:35:469:37 | buf | provenance | | +| test.rs:469:35:469:37 | buf | test.rs:471:22:471:24 | buf | provenance | | +| test.rs:470:23:470:28 | buffer [Ready, Ok] | test.rs:470:22:470:28 | &buffer | provenance | | +| test.rs:475:17:475:23 | buffer2 [Ready, Ok] | test.rs:476:20:476:26 | buffer2 [Ready, Ok] | provenance | | +| test.rs:475:27:475:48 | ...::new(...) | test.rs:475:27:475:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | +| test.rs:475:27:475:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:475:17:475:23 | buffer2 [Ready, Ok] | provenance | | +| test.rs:475:36:475:47 | &mut reader2 [&ref] | test.rs:475:27:475:48 | ...::new(...) | provenance | MaD:12 | +| test.rs:475:41:475:47 | reader2 | test.rs:475:36:475:47 | &mut reader2 [&ref] | provenance | | +| test.rs:476:20:476:26 | buffer2 [Ready, Ok] | test.rs:477:17:477:36 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:476:20:476:26 | buffer2 [Ready, Ok] | test.rs:478:27:478:33 | buffer2 [Ready, Ok] | provenance | | +| test.rs:477:17:477:36 | ...::Ready(...) [Ready, Ok] | test.rs:477:29:477:35 | Ok(...) [Ok] | provenance | | +| test.rs:477:29:477:35 | Ok(...) [Ok] | test.rs:477:32:477:34 | buf | provenance | | +| test.rs:477:32:477:34 | buf | test.rs:479:26:479:28 | buf | provenance | | +| test.rs:478:27:478:33 | buffer2 [Ready, Ok] | test.rs:478:26:478:33 | &buffer2 | provenance | | +| test.rs:489:17:489:22 | buffer | test.rs:490:18:490:23 | buffer | provenance | | +| test.rs:489:26:489:32 | reader2 | test.rs:489:26:489:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | +| test.rs:489:26:489:43 | reader2.fill_buf() [future, Ok] | test.rs:489:26:489:49 | await ... [Ok] | provenance | | +| test.rs:489:26:489:49 | await ... [Ok] | test.rs:489:26:489:50 | TryExpr | provenance | | +| test.rs:489:26:489:50 | TryExpr | test.rs:489:17:489:22 | buffer | provenance | | +| test.rs:496:17:496:26 | mut pinned | test.rs:497:19:497:24 | pinned | provenance | | +| test.rs:496:17:496:26 | mut pinned | test.rs:499:30:499:35 | pinned | provenance | | +| test.rs:496:17:496:26 | mut pinned [Pin, &ref] | test.rs:497:19:497:24 | pinned [Pin, &ref] | provenance | | +| test.rs:496:30:496:51 | ...::new(...) | test.rs:496:17:496:26 | mut pinned | provenance | | +| test.rs:496:30:496:51 | ...::new(...) [Pin, &ref] | test.rs:496:17:496:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:496:39:496:50 | &mut reader2 [&ref] | test.rs:496:30:496:51 | ...::new(...) | provenance | MaD:12 | +| test.rs:496:39:496:50 | &mut reader2 [&ref] | test.rs:496:30:496:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | +| test.rs:496:44:496:50 | reader2 | test.rs:496:39:496:50 | &mut reader2 [&ref] | provenance | | +| test.rs:497:19:497:24 | pinned | test.rs:497:18:497:24 | &pinned | provenance | | +| test.rs:497:19:497:24 | pinned [Pin, &ref] | test.rs:497:18:497:24 | &pinned | provenance | | +| test.rs:499:30:499:35 | pinned | test.rs:499:56:499:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:499:56:499:66 | [post] &mut buffer [&ref] | test.rs:499:61:499:66 | [post] buffer | provenance | | +| test.rs:499:61:499:66 | [post] buffer | test.rs:500:19:500:24 | buffer | provenance | | +| test.rs:499:61:499:66 | [post] buffer | test.rs:502:23:502:28 | buffer | provenance | | +| test.rs:499:61:499:66 | [post] buffer | test.rs:502:23:502:33 | buffer[...] | provenance | | +| test.rs:500:19:500:24 | buffer | test.rs:500:18:500:24 | &buffer | provenance | | +| test.rs:502:23:502:28 | buffer | test.rs:502:23:502:33 | buffer[...] | provenance | MaD:10 | +| test.rs:502:23:502:33 | buffer[...] | test.rs:502:22:502:33 | &... | provenance | | +| test.rs:509:63:509:74 | &mut reader2 [&ref] | test.rs:509:77:509:88 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | +| test.rs:509:68:509:74 | reader2 | test.rs:509:63:509:74 | &mut reader2 [&ref] | provenance | | +| test.rs:509:77:509:88 | [post] &mut buffer1 [&ref] | test.rs:509:82:509:88 | [post] buffer1 | provenance | | +| test.rs:509:82:509:88 | [post] buffer1 | test.rs:510:19:510:25 | buffer1 | provenance | | +| test.rs:509:82:509:88 | [post] buffer1 | test.rs:510:19:510:40 | buffer1[...] | provenance | | +| test.rs:510:19:510:25 | buffer1 | test.rs:510:19:510:40 | buffer1[...] | provenance | MaD:10 | +| test.rs:510:19:510:40 | buffer1[...] | test.rs:510:18:510:40 | &... | provenance | | +| test.rs:513:31:513:37 | reader2 | test.rs:513:44:513:55 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | +| test.rs:513:44:513:55 | [post] &mut buffer2 [&ref] | test.rs:513:49:513:55 | [post] buffer2 | provenance | | +| test.rs:513:49:513:55 | [post] buffer2 | test.rs:514:19:514:25 | buffer2 | provenance | | +| test.rs:513:49:513:55 | [post] buffer2 | test.rs:514:19:514:40 | buffer2[...] | provenance | | +| test.rs:514:19:514:25 | buffer2 | test.rs:514:19:514:40 | buffer2[...] | provenance | MaD:10 | +| test.rs:514:19:514:40 | buffer2[...] | test.rs:514:18:514:40 | &... | provenance | | +| test.rs:519:17:519:26 | mut pinned | test.rs:520:19:520:24 | pinned | provenance | | +| test.rs:519:17:519:26 | mut pinned | test.rs:522:26:522:31 | pinned | provenance | | +| test.rs:519:17:519:26 | mut pinned [Pin, &ref] | test.rs:520:19:520:24 | pinned [Pin, &ref] | provenance | | +| test.rs:519:30:519:51 | ...::new(...) | test.rs:519:17:519:26 | mut pinned | provenance | | +| test.rs:519:30:519:51 | ...::new(...) [Pin, &ref] | test.rs:519:17:519:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:519:39:519:50 | &mut reader2 [&ref] | test.rs:519:30:519:51 | ...::new(...) | provenance | MaD:12 | +| test.rs:519:39:519:50 | &mut reader2 [&ref] | test.rs:519:30:519:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | +| test.rs:519:44:519:50 | reader2 | test.rs:519:39:519:50 | &mut reader2 [&ref] | provenance | | +| test.rs:520:19:520:24 | pinned | test.rs:520:18:520:24 | &pinned | provenance | | +| test.rs:520:19:520:24 | pinned [Pin, &ref] | test.rs:520:18:520:24 | &pinned | provenance | | +| test.rs:522:17:522:22 | buffer [Ready, Ok] | test.rs:523:19:523:24 | buffer [Ready, Ok] | provenance | | +| test.rs:522:17:522:22 | buffer [Ready, Ok] | test.rs:524:20:524:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:522:26:522:31 | pinned | test.rs:522:26:522:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | +| test.rs:522:26:522:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:522:17:522:22 | buffer [Ready, Ok] | provenance | | +| test.rs:523:19:523:24 | buffer [Ready, Ok] | test.rs:523:18:523:24 | &buffer | provenance | | +| test.rs:524:20:524:39 | ...::Ready(...) [Ready, Ok] | test.rs:524:32:524:38 | Ok(...) [Ok] | provenance | | +| test.rs:524:32:524:38 | Ok(...) [Ok] | test.rs:524:35:524:37 | buf | provenance | | +| test.rs:524:35:524:37 | buf | test.rs:525:22:525:24 | buf | provenance | | +| test.rs:531:17:531:22 | buffer | test.rs:532:18:532:23 | buffer | provenance | | +| test.rs:531:26:531:32 | reader2 | test.rs:531:26:531:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | +| test.rs:531:26:531:43 | reader2.fill_buf() [future, Ok] | test.rs:531:26:531:49 | await ... [Ok] | provenance | | +| test.rs:531:26:531:49 | await ... [Ok] | test.rs:531:26:531:50 | TryExpr | provenance | | +| test.rs:531:26:531:50 | TryExpr | test.rs:531:17:531:22 | buffer | provenance | | +| test.rs:538:31:538:37 | reader2 | test.rs:538:57:538:65 | [post] &mut line [&ref] | provenance | MaD:20 | +| test.rs:538:57:538:65 | [post] &mut line [&ref] | test.rs:538:62:538:65 | [post] line | provenance | | +| test.rs:538:62:538:65 | [post] line | test.rs:539:19:539:22 | line | provenance | | +| test.rs:539:19:539:22 | line | test.rs:539:18:539:22 | &line | provenance | | +| test.rs:545:31:545:37 | reader2 | test.rs:545:49:545:57 | [post] &mut line [&ref] | provenance | MaD:19 | +| test.rs:545:49:545:57 | [post] &mut line [&ref] | test.rs:545:54:545:57 | [post] line | provenance | | +| test.rs:545:54:545:57 | [post] line | test.rs:546:19:546:22 | line | provenance | | +| test.rs:546:19:546:22 | line | test.rs:546:18:546:22 | &line | provenance | | +| test.rs:552:31:552:37 | reader2 | test.rs:552:51:552:61 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:552:51:552:61 | [post] &mut buffer [&ref] | test.rs:552:56:552:61 | [post] buffer | provenance | | +| test.rs:552:56:552:61 | [post] buffer | test.rs:553:19:553:24 | buffer | provenance | | +| test.rs:553:19:553:24 | buffer | test.rs:553:18:553:24 | &buffer | provenance | | nodes | test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | | test.rs:11:26:11:62 | ...::get(...) | semmle.label | ...::get(...) | @@ -584,160 +584,160 @@ nodes | test.rs:373:27:373:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | | test.rs:373:32:373:39 | [post] response | semmle.label | [post] response | | test.rs:375:10:375:17 | response | semmle.label | response | -| test.rs:396:13:396:15 | tcp | semmle.label | tcp | -| test.rs:396:19:396:41 | ...::connect(...) | semmle.label | ...::connect(...) | -| test.rs:396:19:396:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | -| test.rs:396:19:396:47 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:396:19:396:48 | TryExpr | semmle.label | TryExpr | -| test.rs:397:14:397:17 | &tcp | semmle.label | &tcp | -| test.rs:397:15:397:17 | tcp | semmle.label | tcp | -| test.rs:403:13:403:22 | mut reader | semmle.label | mut reader | -| test.rs:403:26:403:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | -| test.rs:403:26:403:66 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:403:26:403:67 | TryExpr | semmle.label | TryExpr | -| test.rs:403:57:403:59 | tcp | semmle.label | tcp | -| test.rs:404:14:404:20 | &reader | semmle.label | &reader | -| test.rs:404:15:404:20 | reader | semmle.label | reader | -| test.rs:409:17:409:26 | mut pinned | semmle.label | mut pinned | -| test.rs:409:17:409:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:409:30:409:50 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:409:30:409:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:409:39:409:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:409:44:409:49 | reader | semmle.label | reader | -| test.rs:410:18:410:24 | &pinned | semmle.label | &pinned | -| test.rs:410:19:410:24 | pinned | semmle.label | pinned | -| test.rs:410:19:410:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:412:30:412:35 | pinned | semmle.label | pinned | -| test.rs:412:56:412:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:412:61:412:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:414:22:414:28 | &buffer | semmle.label | &buffer | -| test.rs:414:23:414:28 | buffer | semmle.label | buffer | -| test.rs:415:22:415:33 | &... | semmle.label | &... | -| test.rs:415:23:415:28 | buffer | semmle.label | buffer | -| test.rs:415:23:415:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:422:63:422:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:422:68:422:73 | reader | semmle.label | reader | -| test.rs:422:76:422:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:422:81:422:87 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:423:18:423:40 | &... | semmle.label | &... | -| test.rs:423:19:423:25 | buffer1 | semmle.label | buffer1 | -| test.rs:423:19:423:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:426:31:426:36 | reader | semmle.label | reader | -| test.rs:426:43:426:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:426:48:426:54 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:428:18:428:40 | &... | semmle.label | &... | -| test.rs:428:19:428:25 | buffer2 | semmle.label | buffer2 | -| test.rs:428:19:428:40 | buffer2[...] | semmle.label | buffer2[...] | -| test.rs:431:13:431:23 | mut reader2 | semmle.label | mut reader2 | -| test.rs:431:27:431:61 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:431:55:431:60 | reader | semmle.label | reader | -| test.rs:432:14:432:21 | &reader2 | semmle.label | &reader2 | -| test.rs:432:15:432:21 | reader2 | semmle.label | reader2 | -| test.rs:436:17:436:26 | mut pinned | semmle.label | mut pinned | -| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:436:30:436:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:436:30:436:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:436:39:436:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:436:44:436:50 | reader2 | semmle.label | reader2 | -| test.rs:437:18:437:24 | &pinned | semmle.label | &pinned | -| test.rs:437:19:437:24 | pinned | semmle.label | pinned | -| test.rs:437:19:437:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:439:17:439:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:439:26:439:31 | pinned | semmle.label | pinned | -| test.rs:439:26:439:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test.rs:440:20:440:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:440:32:440:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:440:35:440:37 | buf | semmle.label | buf | -| test.rs:441:22:441:28 | &buffer | semmle.label | &buffer | -| test.rs:441:23:441:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:442:22:442:24 | buf | semmle.label | buf | -| test.rs:446:17:446:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:446:27:446:48 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:446:27:446:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | -| test.rs:446:36:446:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:446:41:446:47 | reader2 | semmle.label | reader2 | -| test.rs:447:20:447:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:448:17:448:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:448:29:448:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:448:32:448:34 | buf | semmle.label | buf | -| test.rs:449:26:449:33 | &buffer2 | semmle.label | &buffer2 | -| test.rs:449:27:449:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:450:26:450:28 | buf | semmle.label | buf | -| test.rs:460:17:460:22 | buffer | semmle.label | buffer | -| test.rs:460:26:460:32 | reader2 | semmle.label | reader2 | -| test.rs:460:26:460:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:460:26:460:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:460:26:460:50 | TryExpr | semmle.label | TryExpr | -| test.rs:461:18:461:23 | buffer | semmle.label | buffer | -| test.rs:467:17:467:26 | mut pinned | semmle.label | mut pinned | -| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:467:44:467:50 | reader2 | semmle.label | reader2 | -| test.rs:468:18:468:24 | &pinned | semmle.label | &pinned | -| test.rs:468:19:468:24 | pinned | semmle.label | pinned | -| test.rs:468:19:468:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:470:30:470:35 | pinned | semmle.label | pinned | -| test.rs:470:56:470:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:470:61:470:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:471:18:471:24 | &buffer | semmle.label | &buffer | -| test.rs:471:19:471:24 | buffer | semmle.label | buffer | -| test.rs:473:22:473:33 | &... | semmle.label | &... | -| test.rs:473:23:473:28 | buffer | semmle.label | buffer | -| test.rs:473:23:473:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:480:63:480:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:480:68:480:74 | reader2 | semmle.label | reader2 | -| test.rs:480:77:480:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:480:82:480:88 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:481:18:481:40 | &... | semmle.label | &... | -| test.rs:481:19:481:25 | buffer1 | semmle.label | buffer1 | -| test.rs:481:19:481:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:484:31:484:37 | reader2 | semmle.label | reader2 | -| test.rs:484:44:484:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:484:49:484:55 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:485:18:485:40 | &... | semmle.label | &... | -| test.rs:485:19:485:25 | buffer2 | semmle.label | buffer2 | -| test.rs:485:19:485:40 | buffer2[...] | semmle.label | buffer2[...] | -| test.rs:490:17:490:26 | mut pinned | semmle.label | mut pinned | -| test.rs:490:17:490:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:490:30:490:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:490:30:490:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:490:39:490:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:490:44:490:50 | reader2 | semmle.label | reader2 | -| test.rs:491:18:491:24 | &pinned | semmle.label | &pinned | -| test.rs:491:19:491:24 | pinned | semmle.label | pinned | -| test.rs:491:19:491:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:493:17:493:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:493:26:493:31 | pinned | semmle.label | pinned | -| test.rs:493:26:493:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test.rs:494:18:494:24 | &buffer | semmle.label | &buffer | -| test.rs:494:19:494:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:495:20:495:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:495:32:495:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:495:35:495:37 | buf | semmle.label | buf | -| test.rs:496:22:496:24 | buf | semmle.label | buf | -| test.rs:502:17:502:22 | buffer | semmle.label | buffer | -| test.rs:502:26:502:32 | reader2 | semmle.label | reader2 | -| test.rs:502:26:502:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:502:26:502:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:502:26:502:50 | TryExpr | semmle.label | TryExpr | -| test.rs:503:18:503:23 | buffer | semmle.label | buffer | -| test.rs:509:31:509:37 | reader2 | semmle.label | reader2 | -| test.rs:509:57:509:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:509:62:509:65 | [post] line | semmle.label | [post] line | -| test.rs:510:18:510:22 | &line | semmle.label | &line | -| test.rs:510:19:510:22 | line | semmle.label | line | -| test.rs:516:31:516:37 | reader2 | semmle.label | reader2 | -| test.rs:516:49:516:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:516:54:516:57 | [post] line | semmle.label | [post] line | -| test.rs:517:18:517:22 | &line | semmle.label | &line | -| test.rs:517:19:517:22 | line | semmle.label | line | -| test.rs:523:31:523:37 | reader2 | semmle.label | reader2 | -| test.rs:523:51:523:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:523:56:523:61 | [post] buffer | semmle.label | [post] buffer | -| test.rs:524:18:524:24 | &buffer | semmle.label | &buffer | -| test.rs:524:19:524:24 | buffer | semmle.label | buffer | +| test.rs:425:13:425:15 | tcp | semmle.label | tcp | +| test.rs:425:19:425:41 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:425:19:425:47 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:425:19:425:48 | TryExpr | semmle.label | TryExpr | +| test.rs:426:14:426:17 | &tcp | semmle.label | &tcp | +| test.rs:426:15:426:17 | tcp | semmle.label | tcp | +| test.rs:432:13:432:22 | mut reader | semmle.label | mut reader | +| test.rs:432:26:432:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | +| test.rs:432:26:432:66 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:432:26:432:67 | TryExpr | semmle.label | TryExpr | +| test.rs:432:57:432:59 | tcp | semmle.label | tcp | +| test.rs:433:14:433:20 | &reader | semmle.label | &reader | +| test.rs:433:15:433:20 | reader | semmle.label | reader | +| test.rs:438:17:438:26 | mut pinned | semmle.label | mut pinned | +| test.rs:438:17:438:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:438:30:438:50 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:438:30:438:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:438:39:438:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:438:44:438:49 | reader | semmle.label | reader | +| test.rs:439:18:439:24 | &pinned | semmle.label | &pinned | +| test.rs:439:19:439:24 | pinned | semmle.label | pinned | +| test.rs:439:19:439:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:441:30:441:35 | pinned | semmle.label | pinned | +| test.rs:441:56:441:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:441:61:441:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:443:22:443:28 | &buffer | semmle.label | &buffer | +| test.rs:443:23:443:28 | buffer | semmle.label | buffer | +| test.rs:444:22:444:33 | &... | semmle.label | &... | +| test.rs:444:23:444:28 | buffer | semmle.label | buffer | +| test.rs:444:23:444:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:451:63:451:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:451:68:451:73 | reader | semmle.label | reader | +| test.rs:451:76:451:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:451:81:451:87 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:452:18:452:40 | &... | semmle.label | &... | +| test.rs:452:19:452:25 | buffer1 | semmle.label | buffer1 | +| test.rs:452:19:452:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:455:31:455:36 | reader | semmle.label | reader | +| test.rs:455:43:455:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:455:48:455:54 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:457:18:457:40 | &... | semmle.label | &... | +| test.rs:457:19:457:25 | buffer2 | semmle.label | buffer2 | +| test.rs:457:19:457:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:460:13:460:23 | mut reader2 | semmle.label | mut reader2 | +| test.rs:460:27:460:61 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:460:55:460:60 | reader | semmle.label | reader | +| test.rs:461:14:461:21 | &reader2 | semmle.label | &reader2 | +| test.rs:461:15:461:21 | reader2 | semmle.label | reader2 | +| test.rs:465:17:465:26 | mut pinned | semmle.label | mut pinned | +| test.rs:465:17:465:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:465:30:465:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:465:30:465:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:465:39:465:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:465:44:465:50 | reader2 | semmle.label | reader2 | +| test.rs:466:18:466:24 | &pinned | semmle.label | &pinned | +| test.rs:466:19:466:24 | pinned | semmle.label | pinned | +| test.rs:466:19:466:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:468:17:468:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:468:26:468:31 | pinned | semmle.label | pinned | +| test.rs:468:26:468:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:469:20:469:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:469:32:469:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:469:35:469:37 | buf | semmle.label | buf | +| test.rs:470:22:470:28 | &buffer | semmle.label | &buffer | +| test.rs:470:23:470:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:471:22:471:24 | buf | semmle.label | buf | +| test.rs:475:17:475:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:475:27:475:48 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:475:27:475:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | +| test.rs:475:36:475:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:475:41:475:47 | reader2 | semmle.label | reader2 | +| test.rs:476:20:476:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:477:17:477:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:477:29:477:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:477:32:477:34 | buf | semmle.label | buf | +| test.rs:478:26:478:33 | &buffer2 | semmle.label | &buffer2 | +| test.rs:478:27:478:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:479:26:479:28 | buf | semmle.label | buf | +| test.rs:489:17:489:22 | buffer | semmle.label | buffer | +| test.rs:489:26:489:32 | reader2 | semmle.label | reader2 | +| test.rs:489:26:489:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:489:26:489:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:489:26:489:50 | TryExpr | semmle.label | TryExpr | +| test.rs:490:18:490:23 | buffer | semmle.label | buffer | +| test.rs:496:17:496:26 | mut pinned | semmle.label | mut pinned | +| test.rs:496:17:496:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:496:30:496:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:496:30:496:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:496:39:496:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:496:44:496:50 | reader2 | semmle.label | reader2 | +| test.rs:497:18:497:24 | &pinned | semmle.label | &pinned | +| test.rs:497:19:497:24 | pinned | semmle.label | pinned | +| test.rs:497:19:497:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:499:30:499:35 | pinned | semmle.label | pinned | +| test.rs:499:56:499:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:499:61:499:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:500:18:500:24 | &buffer | semmle.label | &buffer | +| test.rs:500:19:500:24 | buffer | semmle.label | buffer | +| test.rs:502:22:502:33 | &... | semmle.label | &... | +| test.rs:502:23:502:28 | buffer | semmle.label | buffer | +| test.rs:502:23:502:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:509:63:509:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:509:68:509:74 | reader2 | semmle.label | reader2 | +| test.rs:509:77:509:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:509:82:509:88 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:510:18:510:40 | &... | semmle.label | &... | +| test.rs:510:19:510:25 | buffer1 | semmle.label | buffer1 | +| test.rs:510:19:510:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:513:31:513:37 | reader2 | semmle.label | reader2 | +| test.rs:513:44:513:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:513:49:513:55 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:514:18:514:40 | &... | semmle.label | &... | +| test.rs:514:19:514:25 | buffer2 | semmle.label | buffer2 | +| test.rs:514:19:514:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:519:17:519:26 | mut pinned | semmle.label | mut pinned | +| test.rs:519:17:519:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:519:30:519:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:519:30:519:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:519:39:519:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:519:44:519:50 | reader2 | semmle.label | reader2 | +| test.rs:520:18:520:24 | &pinned | semmle.label | &pinned | +| test.rs:520:19:520:24 | pinned | semmle.label | pinned | +| test.rs:520:19:520:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:522:17:522:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:522:26:522:31 | pinned | semmle.label | pinned | +| test.rs:522:26:522:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:523:18:523:24 | &buffer | semmle.label | &buffer | +| test.rs:523:19:523:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:524:20:524:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:524:32:524:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:524:35:524:37 | buf | semmle.label | buf | +| test.rs:525:22:525:24 | buf | semmle.label | buf | +| test.rs:531:17:531:22 | buffer | semmle.label | buffer | +| test.rs:531:26:531:32 | reader2 | semmle.label | reader2 | +| test.rs:531:26:531:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:531:26:531:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:531:26:531:50 | TryExpr | semmle.label | TryExpr | +| test.rs:532:18:532:23 | buffer | semmle.label | buffer | +| test.rs:538:31:538:37 | reader2 | semmle.label | reader2 | +| test.rs:538:57:538:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:538:62:538:65 | [post] line | semmle.label | [post] line | +| test.rs:539:18:539:22 | &line | semmle.label | &line | +| test.rs:539:19:539:22 | line | semmle.label | line | +| test.rs:545:31:545:37 | reader2 | semmle.label | reader2 | +| test.rs:545:49:545:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:545:54:545:57 | [post] line | semmle.label | [post] line | +| test.rs:546:18:546:22 | &line | semmle.label | &line | +| test.rs:546:19:546:22 | line | semmle.label | line | +| test.rs:552:31:552:37 | reader2 | semmle.label | reader2 | +| test.rs:552:51:552:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:552:56:552:61 | [post] buffer | semmle.label | [post] buffer | +| test.rs:553:18:553:24 | &buffer | semmle.label | &buffer | +| test.rs:553:19:553:24 | buffer | semmle.label | buffer | subpaths testFailures #select @@ -772,29 +772,29 @@ testFailures | test.rs:362:10:362:16 | &stream | test.rs:359:18:359:54 | ...::connect(...) | test.rs:362:10:362:16 | &stream | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:370:10:370:30 | &... | test.rs:359:18:359:54 | ...::connect(...) | test.rs:370:10:370:30 | &... | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:375:10:375:17 | response | test.rs:359:18:359:54 | ...::connect(...) | test.rs:375:10:375:17 | response | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | -| test.rs:397:14:397:17 | &tcp | test.rs:396:19:396:41 | ...::connect(...) | test.rs:397:14:397:17 | &tcp | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:404:14:404:20 | &reader | test.rs:396:19:396:41 | ...::connect(...) | test.rs:404:14:404:20 | &reader | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:410:18:410:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:410:18:410:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:414:22:414:28 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:414:22:414:28 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:415:22:415:33 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:415:22:415:33 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:423:18:423:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:423:18:423:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:428:18:428:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:428:18:428:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:432:14:432:21 | &reader2 | test.rs:396:19:396:41 | ...::connect(...) | test.rs:432:14:432:21 | &reader2 | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:437:18:437:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:437:18:437:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:441:22:441:28 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:441:22:441:28 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:442:22:442:24 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:442:22:442:24 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:449:26:449:33 | &buffer2 | test.rs:396:19:396:41 | ...::connect(...) | test.rs:449:26:449:33 | &buffer2 | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:450:26:450:28 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:450:26:450:28 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:461:18:461:23 | buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:461:18:461:23 | buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:468:18:468:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:468:18:468:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:471:18:471:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:471:18:471:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:473:22:473:33 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:473:22:473:33 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:481:18:481:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:481:18:481:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:485:18:485:40 | &... | test.rs:396:19:396:41 | ...::connect(...) | test.rs:485:18:485:40 | &... | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:491:18:491:24 | &pinned | test.rs:396:19:396:41 | ...::connect(...) | test.rs:491:18:491:24 | &pinned | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:494:18:494:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:494:18:494:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:496:22:496:24 | buf | test.rs:396:19:396:41 | ...::connect(...) | test.rs:496:22:496:24 | buf | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:503:18:503:23 | buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:503:18:503:23 | buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:510:18:510:22 | &line | test.rs:396:19:396:41 | ...::connect(...) | test.rs:510:18:510:22 | &line | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:517:18:517:22 | &line | test.rs:396:19:396:41 | ...::connect(...) | test.rs:517:18:517:22 | &line | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | -| test.rs:524:18:524:24 | &buffer | test.rs:396:19:396:41 | ...::connect(...) | test.rs:524:18:524:24 | &buffer | $@ | test.rs:396:19:396:41 | ...::connect(...) | ...::connect(...) | +| test.rs:426:14:426:17 | &tcp | test.rs:425:19:425:41 | ...::connect(...) | test.rs:426:14:426:17 | &tcp | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:433:14:433:20 | &reader | test.rs:425:19:425:41 | ...::connect(...) | test.rs:433:14:433:20 | &reader | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:439:18:439:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:439:18:439:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:443:22:443:28 | &buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:443:22:443:28 | &buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:444:22:444:33 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:444:22:444:33 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:452:18:452:40 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:452:18:452:40 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:457:18:457:40 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:457:18:457:40 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:461:14:461:21 | &reader2 | test.rs:425:19:425:41 | ...::connect(...) | test.rs:461:14:461:21 | &reader2 | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:466:18:466:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:466:18:466:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:470:22:470:28 | &buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:470:22:470:28 | &buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:471:22:471:24 | buf | test.rs:425:19:425:41 | ...::connect(...) | test.rs:471:22:471:24 | buf | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:478:26:478:33 | &buffer2 | test.rs:425:19:425:41 | ...::connect(...) | test.rs:478:26:478:33 | &buffer2 | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:479:26:479:28 | buf | test.rs:425:19:425:41 | ...::connect(...) | test.rs:479:26:479:28 | buf | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:490:18:490:23 | buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:490:18:490:23 | buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:497:18:497:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:497:18:497:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:500:18:500:24 | &buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:500:18:500:24 | &buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:502:22:502:33 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:502:22:502:33 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:510:18:510:40 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:510:18:510:40 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:514:18:514:40 | &... | test.rs:425:19:425:41 | ...::connect(...) | test.rs:514:18:514:40 | &... | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:520:18:520:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:520:18:520:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:523:18:523:24 | &buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:523:18:523:24 | &buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:525:22:525:24 | buf | test.rs:425:19:425:41 | ...::connect(...) | test.rs:525:22:525:24 | buf | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:532:18:532:23 | buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:532:18:532:23 | buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:539:18:539:22 | &line | test.rs:425:19:425:41 | ...::connect(...) | test.rs:539:18:539:22 | &line | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:546:18:546:22 | &line | test.rs:425:19:425:41 | ...::connect(...) | test.rs:546:18:546:22 | &line | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | +| test.rs:553:18:553:24 | &buffer | test.rs:425:19:425:41 | ...::connect(...) | test.rs:553:18:553:24 | &buffer | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index 78f45810e4d8..d7a32bd41063 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -14,5 +14,6 @@ | test.rs:306:22:306:58 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:332:22:332:75 | ...::new(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:359:18:359:54 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:396:19:396:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:542:16:542:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:386:19:386:61 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:425:19:425:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:571:16:571:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/options.yml b/rust/ql/test/library-tests/dataflow/sources/net/options.yml index d4a803ef79a6..00ae29ae611c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/net/options.yml @@ -11,3 +11,4 @@ qltest_dependencies: - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } - native-tls = { version = "0.2.14" } + - async-native-tls = { version = "0.5.0" } diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 16a42f75da95..0daaa7662198 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -377,6 +377,35 @@ fn test_native_tls() -> Result<(), Box> { Ok(()) } +async fn test_async_native_tls() -> Result<(), Box> { + use futures::io::{ + AsyncReadExt as FuturesAsyncReadExt, AsyncWriteExt as FuturesAsyncWriteExt, + }; + + let address = "www.example.com:443"; + let stream0 = async_std::net::TcpStream::connect(address).await?; // $ Alert[rust/summary/taint-sources] + let connector = async_native_tls::TlsConnector::new(); + let mut stream = async_native_tls::connect("www.example.com", stream0).await?; + sink(&stream); // $ MISSING: hasTaintFlow=address + + stream + .write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n") + .await?; + + let mut buffer = [0u8; 100]; + let bytes_read = stream.read(&mut buffer).await?; + println!("bytes_read = {}", bytes_read); + println!("buffer = {:?}", &buffer[..bytes_read]); + sink(&buffer[..bytes_read]); // $ MISSING: hasTaintFlow=address + + let mut response = String::new(); + stream.read_to_string(&mut response).await?; + println!("rest of response = '{}'", response); + sink(response); // $ MISSING: hasTaintFlow=address + + Ok(()) +} + mod futures_rustls { use async_std::net::TcpStream; use async_std::sync::Arc; @@ -577,6 +606,12 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_async_native_tls..."); + match futures::executor::block_on(test_async_native_tls()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + println!("test_rustls..."); match test_rustls() { Ok(_) => println!("complete"), From fa48087b291079915d06cf1f7b2b94d33cf3bc8b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 24 Sep 2026 11:51:11 +0100 Subject: [PATCH 6/8] Rust: Update the model for async_native_tls::connect. --- .../rust/frameworks/native-tls.model.yml | 2 +- .../dataflow/sources/net/InlineFlow.expected | 39 +++++++++++++++++++ .../dataflow/sources/net/test.rs | 4 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml index 5491e7e5fc23..4d142efbd62c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -13,5 +13,5 @@ extensions: data: - ["::connect", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["async_native_tls::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["async_native_tls::connect::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index c67b746d950b..92905adfab1c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -44,6 +44,7 @@ models | 43 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | | 44 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | | 45 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 46 | Summary: async_native_tls::connect::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:62 | ...::get(...) | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | @@ -226,6 +227,24 @@ edges | test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:38 | | test.rs:373:27:373:39 | [post] &mut response [&ref] | test.rs:373:32:373:39 | [post] response | provenance | | | test.rs:373:32:373:39 | [post] response | test.rs:375:10:375:17 | response | provenance | | +| test.rs:386:9:386:15 | stream0 | test.rs:388:67:388:73 | stream0 | provenance | | +| test.rs:386:19:386:61 | ...::connect(...) | test.rs:386:19:386:61 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:386:19:386:61 | ...::connect(...) [future, Ok] | test.rs:386:19:386:67 | await ... [Ok] | provenance | | +| test.rs:386:19:386:67 | await ... [Ok] | test.rs:386:19:386:68 | TryExpr | provenance | | +| test.rs:386:19:386:68 | TryExpr | test.rs:386:9:386:15 | stream0 | provenance | | +| test.rs:388:9:388:18 | mut stream | test.rs:389:11:389:16 | stream | provenance | | +| test.rs:388:9:388:18 | mut stream | test.rs:396:22:396:27 | stream | provenance | | +| test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | test.rs:388:22:388:80 | await ... [Ok] | provenance | | +| test.rs:388:22:388:80 | await ... [Ok] | test.rs:388:22:388:81 | TryExpr | provenance | | +| test.rs:388:22:388:81 | TryExpr | test.rs:388:9:388:18 | mut stream | provenance | | +| test.rs:388:67:388:73 | stream0 | test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | provenance | MaD:46 | +| test.rs:389:11:389:16 | stream | test.rs:389:10:389:16 | &stream | provenance | | +| test.rs:396:22:396:27 | stream | test.rs:396:34:396:44 | [post] &mut buffer [&ref] | provenance | MaD:21 | +| test.rs:396:34:396:44 | [post] &mut buffer [&ref] | test.rs:396:39:396:44 | [post] buffer | provenance | | +| test.rs:396:39:396:44 | [post] buffer | test.rs:399:11:399:16 | buffer | provenance | | +| test.rs:396:39:396:44 | [post] buffer | test.rs:399:11:399:30 | buffer[...] | provenance | | +| test.rs:399:11:399:16 | buffer | test.rs:399:11:399:30 | buffer[...] | provenance | MaD:10 | +| test.rs:399:11:399:30 | buffer[...] | test.rs:399:10:399:30 | &... | provenance | | | test.rs:425:13:425:15 | tcp | test.rs:426:15:426:17 | tcp | provenance | | | test.rs:425:13:425:15 | tcp | test.rs:432:57:432:59 | tcp | provenance | | | test.rs:425:19:425:41 | ...::connect(...) | test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | @@ -584,6 +603,24 @@ nodes | test.rs:373:27:373:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | | test.rs:373:32:373:39 | [post] response | semmle.label | [post] response | | test.rs:375:10:375:17 | response | semmle.label | response | +| test.rs:386:9:386:15 | stream0 | semmle.label | stream0 | +| test.rs:386:19:386:61 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:386:19:386:61 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:386:19:386:67 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:386:19:386:68 | TryExpr | semmle.label | TryExpr | +| test.rs:388:9:388:18 | mut stream | semmle.label | mut stream | +| test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:388:22:388:80 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:388:22:388:81 | TryExpr | semmle.label | TryExpr | +| test.rs:388:67:388:73 | stream0 | semmle.label | stream0 | +| test.rs:389:10:389:16 | &stream | semmle.label | &stream | +| test.rs:389:11:389:16 | stream | semmle.label | stream | +| test.rs:396:22:396:27 | stream | semmle.label | stream | +| test.rs:396:34:396:44 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:396:39:396:44 | [post] buffer | semmle.label | [post] buffer | +| test.rs:399:10:399:30 | &... | semmle.label | &... | +| test.rs:399:11:399:16 | buffer | semmle.label | buffer | +| test.rs:399:11:399:30 | buffer[...] | semmle.label | buffer[...] | | test.rs:425:13:425:15 | tcp | semmle.label | tcp | | test.rs:425:19:425:41 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | @@ -772,6 +809,8 @@ testFailures | test.rs:362:10:362:16 | &stream | test.rs:359:18:359:54 | ...::connect(...) | test.rs:362:10:362:16 | &stream | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:370:10:370:30 | &... | test.rs:359:18:359:54 | ...::connect(...) | test.rs:370:10:370:30 | &... | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:375:10:375:17 | response | test.rs:359:18:359:54 | ...::connect(...) | test.rs:375:10:375:17 | response | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:389:10:389:16 | &stream | test.rs:386:19:386:61 | ...::connect(...) | test.rs:389:10:389:16 | &stream | $@ | test.rs:386:19:386:61 | ...::connect(...) | ...::connect(...) | +| test.rs:399:10:399:30 | &... | test.rs:386:19:386:61 | ...::connect(...) | test.rs:399:10:399:30 | &... | $@ | test.rs:386:19:386:61 | ...::connect(...) | ...::connect(...) | | test.rs:426:14:426:17 | &tcp | test.rs:425:19:425:41 | ...::connect(...) | test.rs:426:14:426:17 | &tcp | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | | test.rs:433:14:433:20 | &reader | test.rs:425:19:425:41 | ...::connect(...) | test.rs:433:14:433:20 | &reader | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | | test.rs:439:18:439:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:439:18:439:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 0daaa7662198..52fcd4629935 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -386,7 +386,7 @@ async fn test_async_native_tls() -> Result<(), Box> { let stream0 = async_std::net::TcpStream::connect(address).await?; // $ Alert[rust/summary/taint-sources] let connector = async_native_tls::TlsConnector::new(); let mut stream = async_native_tls::connect("www.example.com", stream0).await?; - sink(&stream); // $ MISSING: hasTaintFlow=address + sink(&stream); // $ hasTaintFlow=address stream .write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n") @@ -396,7 +396,7 @@ async fn test_async_native_tls() -> Result<(), Box> { let bytes_read = stream.read(&mut buffer).await?; println!("bytes_read = {}", bytes_read); println!("buffer = {:?}", &buffer[..bytes_read]); - sink(&buffer[..bytes_read]); // $ MISSING: hasTaintFlow=address + sink(&buffer[..bytes_read]); // $ hasTaintFlow=address let mut response = String::new(); stream.read_to_string(&mut response).await?; From 41e8571532903bdc762c42837a3184c656fbe619 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 24 Sep 2026 11:58:49 +0100 Subject: [PATCH 7/8] Rust: Add another missing model for the test. --- .../codeql/rust/frameworks/futures.model.yml | 1 + .../dataflow/sources/net/InlineFlow.expected | 120 ++++++++++-------- .../dataflow/sources/net/test.rs | 2 +- 3 files changed, 67 insertions(+), 56 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index 7b1aaab494fd..b608ae46f5f5 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -6,6 +6,7 @@ extensions: - ["futures_executor::local_pool::block_on", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 92905adfab1c..077842b5556f 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -21,60 +21,61 @@ models | 20 | Summary: ::read_until; Argument[self].Reference; Argument[1].Reference; taint | | 21 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | | 22 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 23 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 24 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | -| 25 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | -| 26 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | -| 27 | Summary: ::connect; Argument[1]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 30 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::lines; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 36 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 37 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 38 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 39 | Summary: ::take; Argument[self]; ReturnValue; taint | -| 40 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 41 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 42 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 43 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | -| 44 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | -| 45 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | -| 46 | Summary: async_native_tls::connect::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 23 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 24 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 25 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 26 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 27 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | +| 28 | Summary: ::connect; Argument[1]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 30 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 31 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::lines; Argument[self]; ReturnValue; taint | +| 36 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 37 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 38 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 39 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 40 | Summary: ::take; Argument[self]; ReturnValue; taint | +| 41 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 42 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 43 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 44 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | +| 45 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | +| 46 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 47 | Summary: async_native_tls::connect::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:62 | ...::get(...) | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:32 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:33 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:62 | ...::get(...) | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:32 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:33 | | test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:14 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:62 | ...::get(...) | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:33 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:34 | | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:14 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:62 | ...::get(...) | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:31 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:32 | | test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:14 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:52 | ...::get(...) | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:30 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:31 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -82,7 +83,7 @@ edges | test.rs:26:26:26:52 | ...::get(...) | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:28 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:29 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | @@ -92,13 +93,13 @@ edges | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:29 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | | test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:11 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:29 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -118,17 +119,17 @@ edges | test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | -| test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:24 | -| test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:25 | +| test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:25 | +| test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:26 | | test.rs:79:17:79:20 | body | test.rs:80:19:80:22 | body | provenance | | -| test.rs:79:24:79:31 | response | test.rs:79:24:79:43 | response.into_body() | provenance | MaD:26 | +| test.rs:79:24:79:31 | response | test.rs:79:24:79:43 | response.into_body() | provenance | MaD:27 | | test.rs:79:24:79:43 | response.into_body() | test.rs:79:17:79:20 | body | provenance | | | test.rs:80:19:80:22 | body | test.rs:80:18:80:22 | &body | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | | | test.rs:155:26:155:62 | ...::connect(...) | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | -| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:36 | +| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:19 | buffer | provenance | | @@ -140,20 +141,20 @@ edges | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:39 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:40 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:40 | -| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:35 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:41 | +| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:36 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | | test.rs:203:21:203:26 | reader | test.rs:204:29:204:34 | reader | provenance | | -| test.rs:203:30:203:73 | ...::new(...) | test.rs:203:30:203:83 | ... .take(...) | provenance | MaD:39 | +| test.rs:203:30:203:73 | ...::new(...) | test.rs:203:30:203:83 | ... .take(...) | provenance | MaD:40 | | test.rs:203:30:203:83 | ... .take(...) | test.rs:203:21:203:26 | reader | provenance | | -| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:41 | +| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:42 | | test.rs:203:54:203:71 | stream.try_clone() [Ok] | test.rs:203:54:203:72 | TryExpr | provenance | | -| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:40 | -| test.rs:204:29:204:34 | reader | test.rs:204:29:204:42 | reader.lines() | provenance | MaD:34 | +| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:41 | +| test.rs:204:29:204:34 | reader | test.rs:204:29:204:42 | reader.lines() | provenance | MaD:35 | | test.rs:204:29:204:42 | reader.lines() | test.rs:205:28:205:37 | Ok(...) | provenance | | | test.rs:205:28:205:37 | Ok(...) | test.rs:207:30:207:35 | string | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:17:232:28 | tokio_stream | provenance | | @@ -164,11 +165,11 @@ edges | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | -| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:43 | +| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:44 | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | -| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:42 | +| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:43 | | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:20 | buffer2 | provenance | | @@ -176,11 +177,11 @@ edges | test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:10 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | | test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:10 | -| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:45 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | | test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | -| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:45 | +| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:46 | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | @@ -195,15 +196,15 @@ edges | test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:9 | | test.rs:333:22:333:36 | client.reader() | test.rs:333:9:333:18 | mut reader | provenance | | | test.rs:334:11:334:16 | reader | test.rs:334:10:334:16 | &reader | provenance | | -| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:36 | +| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | test.rs:338:39:338:44 | [post] buffer | provenance | | | test.rs:338:39:338:44 | [post] buffer | test.rs:339:15:339:20 | buffer | provenance | | | test.rs:339:15:339:20 | buffer | test.rs:339:14:339:20 | &buffer | provenance | | -| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | test.rs:344:46:344:51 | [post] buffer | provenance | | | test.rs:344:46:344:51 | [post] buffer | test.rs:345:15:345:20 | buffer | provenance | | | test.rs:345:15:345:20 | buffer | test.rs:345:14:345:20 | &buffer | provenance | | -| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:38 | +| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:39 | | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | | test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | @@ -216,15 +217,15 @@ edges | test.rs:361:9:361:18 | mut stream | test.rs:373:5:373:10 | stream | provenance | | | test.rs:361:22:361:65 | connector.connect(...) [Ok] | test.rs:361:22:361:66 | TryExpr | provenance | | | test.rs:361:22:361:66 | TryExpr | test.rs:361:9:361:18 | mut stream | provenance | | -| test.rs:361:59:361:64 | stream | test.rs:361:22:361:65 | connector.connect(...) [Ok] | provenance | MaD:27 | +| test.rs:361:59:361:64 | stream | test.rs:361:22:361:65 | connector.connect(...) [Ok] | provenance | MaD:28 | | test.rs:362:11:362:16 | stream | test.rs:362:10:362:16 | &stream | provenance | | -| test.rs:367:22:367:27 | stream | test.rs:367:34:367:44 | [post] &mut buffer [&ref] | provenance | MaD:36 | +| test.rs:367:22:367:27 | stream | test.rs:367:34:367:44 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:367:34:367:44 | [post] &mut buffer [&ref] | test.rs:367:39:367:44 | [post] buffer | provenance | | | test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:16 | buffer | provenance | | | test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:30 | buffer[...] | provenance | | | test.rs:370:11:370:16 | buffer | test.rs:370:11:370:30 | buffer[...] | provenance | MaD:10 | | test.rs:370:11:370:30 | buffer[...] | test.rs:370:10:370:30 | &... | provenance | | -| test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:38 | +| test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:39 | | test.rs:373:27:373:39 | [post] &mut response [&ref] | test.rs:373:32:373:39 | [post] response | provenance | | | test.rs:373:32:373:39 | [post] response | test.rs:375:10:375:17 | response | provenance | | | test.rs:386:9:386:15 | stream0 | test.rs:388:67:388:73 | stream0 | provenance | | @@ -234,10 +235,11 @@ edges | test.rs:386:19:386:68 | TryExpr | test.rs:386:9:386:15 | stream0 | provenance | | | test.rs:388:9:388:18 | mut stream | test.rs:389:11:389:16 | stream | provenance | | | test.rs:388:9:388:18 | mut stream | test.rs:396:22:396:27 | stream | provenance | | +| test.rs:388:9:388:18 | mut stream | test.rs:402:5:402:10 | stream | provenance | | | test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | test.rs:388:22:388:80 | await ... [Ok] | provenance | | | test.rs:388:22:388:80 | await ... [Ok] | test.rs:388:22:388:81 | TryExpr | provenance | | | test.rs:388:22:388:81 | TryExpr | test.rs:388:9:388:18 | mut stream | provenance | | -| test.rs:388:67:388:73 | stream0 | test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | provenance | MaD:46 | +| test.rs:388:67:388:73 | stream0 | test.rs:388:22:388:74 | ...::connect(...) [future, Ok] | provenance | MaD:47 | | test.rs:389:11:389:16 | stream | test.rs:389:10:389:16 | &stream | provenance | | | test.rs:396:22:396:27 | stream | test.rs:396:34:396:44 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:396:34:396:44 | [post] &mut buffer [&ref] | test.rs:396:39:396:44 | [post] buffer | provenance | | @@ -245,6 +247,9 @@ edges | test.rs:396:39:396:44 | [post] buffer | test.rs:399:11:399:30 | buffer[...] | provenance | | | test.rs:399:11:399:16 | buffer | test.rs:399:11:399:30 | buffer[...] | provenance | MaD:10 | | test.rs:399:11:399:30 | buffer[...] | test.rs:399:10:399:30 | &... | provenance | | +| test.rs:402:5:402:10 | stream | test.rs:402:27:402:39 | [post] &mut response [&ref] | provenance | MaD:23 | +| test.rs:402:27:402:39 | [post] &mut response [&ref] | test.rs:402:32:402:39 | [post] response | provenance | | +| test.rs:402:32:402:39 | [post] response | test.rs:404:10:404:17 | response | provenance | | | test.rs:425:13:425:15 | tcp | test.rs:426:15:426:17 | tcp | provenance | | | test.rs:425:13:425:15 | tcp | test.rs:432:57:432:59 | tcp | provenance | | | test.rs:425:19:425:41 | ...::connect(...) | test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | @@ -306,7 +311,7 @@ edges | test.rs:460:13:460:23 | mut reader2 | test.rs:545:31:545:37 | reader2 | provenance | | | test.rs:460:13:460:23 | mut reader2 | test.rs:552:31:552:37 | reader2 | provenance | | | test.rs:460:27:460:61 | ...::new(...) | test.rs:460:13:460:23 | mut reader2 | provenance | | -| test.rs:460:55:460:60 | reader | test.rs:460:27:460:61 | ...::new(...) | provenance | MaD:23 | +| test.rs:460:55:460:60 | reader | test.rs:460:27:460:61 | ...::new(...) | provenance | MaD:24 | | test.rs:461:15:461:21 | reader2 | test.rs:461:14:461:21 | &reader2 | provenance | | | test.rs:465:17:465:26 | mut pinned | test.rs:466:19:466:24 | pinned | provenance | | | test.rs:465:17:465:26 | mut pinned | test.rs:468:26:468:31 | pinned | provenance | | @@ -621,6 +626,10 @@ nodes | test.rs:399:10:399:30 | &... | semmle.label | &... | | test.rs:399:11:399:16 | buffer | semmle.label | buffer | | test.rs:399:11:399:30 | buffer[...] | semmle.label | buffer[...] | +| test.rs:402:5:402:10 | stream | semmle.label | stream | +| test.rs:402:27:402:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | +| test.rs:402:32:402:39 | [post] response | semmle.label | [post] response | +| test.rs:404:10:404:17 | response | semmle.label | response | | test.rs:425:13:425:15 | tcp | semmle.label | tcp | | test.rs:425:19:425:41 | ...::connect(...) | semmle.label | ...::connect(...) | | test.rs:425:19:425:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | @@ -811,6 +820,7 @@ testFailures | test.rs:375:10:375:17 | response | test.rs:359:18:359:54 | ...::connect(...) | test.rs:375:10:375:17 | response | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | | test.rs:389:10:389:16 | &stream | test.rs:386:19:386:61 | ...::connect(...) | test.rs:389:10:389:16 | &stream | $@ | test.rs:386:19:386:61 | ...::connect(...) | ...::connect(...) | | test.rs:399:10:399:30 | &... | test.rs:386:19:386:61 | ...::connect(...) | test.rs:399:10:399:30 | &... | $@ | test.rs:386:19:386:61 | ...::connect(...) | ...::connect(...) | +| test.rs:404:10:404:17 | response | test.rs:386:19:386:61 | ...::connect(...) | test.rs:404:10:404:17 | response | $@ | test.rs:386:19:386:61 | ...::connect(...) | ...::connect(...) | | test.rs:426:14:426:17 | &tcp | test.rs:425:19:425:41 | ...::connect(...) | test.rs:426:14:426:17 | &tcp | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | | test.rs:433:14:433:20 | &reader | test.rs:425:19:425:41 | ...::connect(...) | test.rs:433:14:433:20 | &reader | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | | test.rs:439:18:439:24 | &pinned | test.rs:425:19:425:41 | ...::connect(...) | test.rs:439:18:439:24 | &pinned | $@ | test.rs:425:19:425:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 52fcd4629935..3bf0fb5d7736 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -401,7 +401,7 @@ async fn test_async_native_tls() -> Result<(), Box> { let mut response = String::new(); stream.read_to_string(&mut response).await?; println!("rest of response = '{}'", response); - sink(response); // $ MISSING: hasTaintFlow=address + sink(response); // $ hasTaintFlow=address Ok(()) } From e8c3b454e1dc0b99d2a95660dbf8c0f7b2c3136c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:09:39 +0100 Subject: [PATCH 8/8] Rust: Undo Cargo.lock changes from the merge. --- Cargo.lock | 626 ++++++++++++++++++----------------------------------- 1 file changed, 214 insertions(+), 412 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e6626401e60..8875b8bbf90d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] @@ -100,9 +100,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ast-generator" @@ -136,9 +136,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" -version = "0.23.1" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -148,15 +148,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "borsh" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" dependencies = [ "bytes", "cfg_aliases", @@ -189,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -201,15 +201,15 @@ checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "camino" -version = "1.2.2" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d" dependencies = [ "serde_core", ] @@ -240,9 +240,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.62" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ "find-msvc-tools", "jobserver", @@ -258,15 +258,15 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures", @@ -281,7 +281,7 @@ checksum = "9ea9b1e80910f66ae87c772247591432032ef3f6a67367ff17f8343db05beafa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] @@ -291,7 +291,7 @@ version = "0.104.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7047a516de16226cd17344d41a319d0ea1064bf9e60bd612ab341ab4a34bbfa8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "chalk-derive", ] @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.7" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -321,9 +321,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.7" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -333,14 +333,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.7" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn 3.0.6", + "syn 3.0.3", ] [[package]] @@ -512,18 +512,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -531,9 +531,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] @@ -549,15 +549,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "darling" -version = "0.24.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -565,26 +565,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.24.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ "ident_case", "proc-macro2", "quote", "strsim", - "syn 3.0.6", + "syn 2.0.119", ] [[package]] name = "darling_macro" -version = "0.24.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 3.0.6", + "syn 2.0.119", ] [[package]] @@ -620,7 +620,7 @@ dependencies = [ "defmt-parser", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -638,7 +638,6 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "powerfmt", "serde_core", ] @@ -650,7 +649,7 @@ checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -679,9 +678,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.18.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" [[package]] name = "embedded-io" @@ -701,7 +700,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" dependencies = [ - "log 0.4.29", + "log 0.4.33", ] [[package]] @@ -790,9 +789,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" [[package]] name = "fixedbitset" @@ -848,21 +847,21 @@ checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a" [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-core", "futures-task", @@ -872,28 +871,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi 5.3.0", - "wasip2", -] - -[[package]] -name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", - "r-efi 6.0.0", + "r-efi", "rand_core", - "wasip2", - "wasip3", ] [[package]] @@ -910,7 +895,7 @@ checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", - "log 0.4.29", + "log 0.4.33", "regex-automata", "regex-syntax", ] @@ -949,9 +934,9 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.12.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a596f1b20ed2cc5ecac41a164aaebc7258057060f06c0cf7a2ba3991ee7990fb" +checksum = "32069d97bb81e38fa67eab65e3393bf804bb85969f2bc06bf13f64aef5aba248" dependencies = [ "hashbrown 0.17.1", ] @@ -984,7 +969,7 @@ dependencies = [ "core-foundation-sys", "iana-time-zone-haiku", "js-sys", - "log 0.4.29", + "log 0.4.33", "wasm-bindgen", "windows-core", ] @@ -998,12 +983,6 @@ dependencies = [ "cc", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -1045,16 +1024,16 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "inotify-sys", "libc", ] [[package]] name = "inotify-sys" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +checksum = "c033f80b2c113cdf91ab7a33faa9cbc014726dcad99880c8609af2a370edf37d" dependencies = [ "libc", ] @@ -1097,15 +1076,15 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.37" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb" +checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" dependencies = [ "defmt", "jiff-core", "jiff-static", "jiff-tzdb-platform", - "log 0.4.29", + "log 0.4.33", "portable-atomic", "portable-atomic-util", "serde_core", @@ -1114,24 +1093,23 @@ dependencies = [ [[package]] name = "jiff-core" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" dependencies = [ "defmt", - "log 0.4.29", ] [[package]] name = "jiff-static" -version = "0.2.37" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212" +checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" dependencies = [ "jiff-core", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1151,11 +1129,11 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom", "libc", ] @@ -1167,21 +1145,20 @@ checksum = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24" [[package]] name = "js-sys" -version = "0.3.98" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] [[package]] name = "kqueue" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" dependencies = [ "kqueue-sys", "libc", @@ -1193,7 +1170,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "libc", ] @@ -1209,17 +1186,11 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "line-index" @@ -1246,14 +1217,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.29", + "log 0.4.33", ] [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "matchers" @@ -1266,9 +1237,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memoffset" @@ -1291,12 +1262,12 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", - "log 0.4.29", + "log 0.4.33", "wasi", "windows-sys 0.61.2", ] @@ -1332,12 +1303,12 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "fsevent-sys", "inotify", "kqueue", "libc", - "log 0.4.29", + "log 0.4.33", "mio", "notify-types", "walkdir", @@ -1350,7 +1321,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -1466,7 +1437,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1513,15 +1484,15 @@ checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" [[package]] name = "portable-atomic-util" -version = "0.2.8" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -1544,16 +1515,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.107" @@ -1571,7 +1532,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "version_check", "yansi", ] @@ -1585,12 +1546,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - [[package]] name = "r-efi" version = "6.0.0" @@ -1603,7 +1558,7 @@ version = "0.166.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2cf1b1ffe31b6226c00b40cddfda65002b7729f9f4ed2d547b5856cdab0011c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "ra-ap-rustc_hashes", "ra-ap-rustc_index", "tracing", @@ -1641,7 +1596,7 @@ checksum = "4d744a7a2852a22f06210bcff9e4667ed0cacbfbe94894cc294044d25e876341" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1685,7 +1640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ca286f90e99bb97cd9274c088f3c874a05d1ee90cabf40a3928afedabe99fd" dependencies = [ "ra-ap-rustc_index", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustc_apfloat", "smallvec", "tracing", @@ -1698,7 +1653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d6efb6008f665a9485e0afecf9f4950a6c4bedd8ddd330a9df8986a6c0160b" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", "derive-where", "ena", "indexmap 2.14.0", @@ -1706,7 +1661,7 @@ dependencies = [ "ra-ap-rustc_ast_ir", "ra-ap-rustc_index", "ra-ap-rustc_type_ir_macros", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "smallvec", "thin-vec", "tracing", @@ -1720,7 +1675,7 @@ checksum = "5f4fd2355e2bbf1f343c730f623596efc6e465b5e3685b606a437567ebb75bf8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] @@ -1738,7 +1693,7 @@ dependencies = [ "ra_ap_span", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "salsa-macros", "semver", @@ -1755,7 +1710,7 @@ dependencies = [ "ra_ap_intern", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tracing", ] @@ -1786,7 +1741,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "serde_json", "smallvec", @@ -1801,7 +1756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d0148d0b1f176f27d55df6ac6dc662ed65c55cae367aeb9f30472879626cd5" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", "cov-mark", "drop_bomb", "either", @@ -1820,7 +1775,7 @@ dependencies = [ "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustc_apfloat", "salsa", "smallvec", @@ -1848,7 +1803,7 @@ dependencies = [ "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "smallvec", "thin-vec", @@ -1863,7 +1818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106393ec163f4cb9537721a04cd5e4d5ec642602c46f524e65a31a431be10269" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", "cov-mark", "either", "ena", @@ -1886,7 +1841,7 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustc_apfloat", "salsa", "serde", @@ -1907,7 +1862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ea305ce763f44928d29766c165982dd0a1c9fdba429296889d9e8e64dd28a5" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", "cov-mark", "crossbeam-channel", "either", @@ -1928,7 +1883,7 @@ dependencies = [ "ra_ap_test_utils", "ra_ap_vfs", "rayon", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "smallvec", "tracing", @@ -1945,7 +1900,7 @@ dependencies = [ "dashmap", "hashbrown 0.14.5", "rayon", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "triomphe", ] @@ -1978,7 +1933,7 @@ checksum = "478606f8a75d1c4f8e6bfd4874ecf56303a690e270cffbd82e9fb700637500c5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] @@ -1989,7 +1944,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d1b45159a9f2e6d61bec480d49a5d2c4a1c8215a75f01cf1d6ae7042cc0330" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", "cov-mark", "ra-ap-rustc_lexer", "ra_ap_intern", @@ -1998,7 +1953,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax-bridge", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "smallvec", ] @@ -2040,7 +1995,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_tt", "rayon", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "semver", "serde", "serde_derive", @@ -2076,7 +2031,7 @@ dependencies = [ "ra_ap_span", "ra_ap_stdx", "ra_ap_toolchain", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "semver", "serde", "serde_derive", @@ -2098,7 +2053,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa", "text-size", ] @@ -2131,7 +2086,7 @@ dependencies = [ "ra_ap_parser", "ra_ap_stdx", "rowan", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustc-literal-escaper", "smallvec", "smol_str", @@ -2151,7 +2106,7 @@ dependencies = [ "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", ] [[package]] @@ -2182,7 +2137,7 @@ dependencies = [ "ra_ap_paths", "ra_ap_profile", "ra_ap_stdx", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "text-size", ] @@ -2208,7 +2163,7 @@ dependencies = [ "ra_ap_intern", "ra_ap_span", "ra_ap_stdx", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "text-size", ] @@ -2224,7 +2179,7 @@ dependencies = [ "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tracing", ] @@ -2240,19 +2195,19 @@ dependencies = [ "ra_ap_stdx", "ra_ap_vfs", "rayon", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "tracing", "walkdir", ] [[package]] name = "rand" -version = "0.10.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom", "rand_core", ] @@ -2288,27 +2243,27 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] name = "ref-cast" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -2358,7 +2313,7 @@ name = "rust-extractor-macros" version = "0.1.0" dependencies = [ "quote", - "syn 3.0.6", + "syn 3.0.3", ] [[package]] @@ -2369,9 +2324,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc-literal-escaper" @@ -2391,15 +2346,15 @@ version = "0.2.3+llvm-462a31f5a5ab" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "smallvec", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2409,9 +2364,9 @@ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "salsa" -version = "0.28.4" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad7a025e8eda1fcde5a8c442e2cdd34be28ba1c7bb5328c541b82cda212165f" +checksum = "cf0e374215cd2db2b5c75d7b3a99cb0cc052c0595335dfdefc03d4eb08f4aa81" dependencies = [ "boxcar", "crossbeam-queue", @@ -2424,7 +2379,7 @@ dependencies = [ "parking_lot", "portable-atomic", "rayon", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "salsa-macro-rules", "salsa-macros", "smallvec", @@ -2436,19 +2391,19 @@ dependencies = [ [[package]] name = "salsa-macro-rules" -version = "0.28.4" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40bc5a70f76d5f539e1e2f892006f523669845b6c879a70b3ed1996f47cfbb2e" +checksum = "85f4b7d4405540bbd6d4ffa52d4322d983f3781954d3073067ac1bdb028459b3" [[package]] name = "salsa-macros" -version = "0.28.4" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea978f07c8d78cb5f4dd25bd005d9ff08f60909e089136d5fc36c847fa9005a9" +checksum = "445be2bfbb2f67cb663225ecd7bc5a25370c0250fca30f9d8cbad9a913650370" dependencies = [ "proc-macro2", "quote", - "syn 3.0.6", + "syn 3.0.3", ] [[package]] @@ -2474,9 +2429,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "dyn-clone", "ref-cast", @@ -2527,7 +2482,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.6", + "syn 3.0.3", ] [[package]] @@ -2555,9 +2510,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.23.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "935177bb8c0cd8ca1a4e6d1a2ac8988bea69cab4f9d3a31311e012ad27868ea4" +checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a" dependencies = [ "base64", "bs58", @@ -2567,7 +2522,7 @@ dependencies = [ "indexmap 2.14.0", "jiff", "schemars 0.9.0", - "schemars 1.2.1", + "schemars 1.2.2", "serde_core", "serde_json", "serde_with_macros", @@ -2576,14 +2531,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.23.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d607aa01a3cb0ad757d6fd216136910db3c97b102fe686585689615a02dbcdc" +checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46" dependencies = [ "darling", "proc-macro2", "quote", - "syn 3.0.6", + "syn 2.0.119", ] [[package]] @@ -2610,9 +2565,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "simd-adler32" @@ -2628,9 +2583,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smol_str" @@ -2666,9 +2621,9 @@ version = "0.1.0" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -2677,9 +2632,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.6" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -2694,7 +2649,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2711,47 +2666,46 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] name = "thin-vec" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482" +checksum = "79def32ffcd477db1ff26f76dab9e3a91f0bd42a85ca96577089b24623056f9d" [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] [[package]] name = "time" -version = "0.3.47" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", - "itoa", "libc", "num-conv", "num_threads", @@ -2763,15 +2717,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -2779,9 +2733,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -2794,9 +2748,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "1.1.6+spec-1.1.0" +version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap 2.14.0", "serde_core", @@ -2804,7 +2758,7 @@ dependencies = [ "toml_datetime", "toml_parser", "toml_writer", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -2822,7 +2776,7 @@ version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -2850,7 +2804,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2880,7 +2834,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "log 0.4.29", + "log 0.4.33", "once_cell", "tracing-core", ] @@ -3035,12 +2989,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "unsafe-libyaml" version = "0.2.11" @@ -3081,29 +3029,11 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - [[package]] name = "wasm-bindgen" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3114,9 +3044,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3124,60 +3054,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", -] - [[package]] name = "winapi-util" version = "0.1.11" @@ -3208,7 +3104,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -3219,7 +3115,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -3337,103 +3233,9 @@ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" [[package]] name = "winnow" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap 2.14.0", - "log 0.4.29", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log 0.4.29", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" [[package]] name = "yansi" @@ -3462,7 +3264,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 3.0.6", + "syn 3.0.3", ] [[package]] @@ -3476,9 +3278,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd"