Skip to content

0.11.x: avoid unwrapping VarInt decoding during parameter parsing#2559

Merged
djc merged 9 commits into0.11.xfrom
0.11.x-params-var-ints
Mar 9, 2026
Merged

0.11.x: avoid unwrapping VarInt decoding during parameter parsing#2559
djc merged 9 commits into0.11.xfrom
0.11.x-params-var-ints

Conversation

@djc
Copy link
Member

@djc djc commented Mar 9, 2026

@djc djc requested review from Ralith and gretchenfrage as code owners March 9, 2026 09:21
djc and others added 3 commits March 9, 2026 10:22
```
warning: called `unwrap` on `self.exit_probe_rtt_at` after checking its variant with `is_none`
   --> quinn-proto/src/congestion/bbr/mod.rs:247:48
    |
238 |             if self.exit_probe_rtt_at.is_none() {
    |             ----------------------------------- help: try: `if let Some(<item>) = self.exit_probe_rtt_at`
...
247 |             } else if is_round_start && now >= self.exit_probe_rtt_at.unwrap() {
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap
    = note: `#[warn(clippy::unnecessary_unwrap)]` on by default
```
@djc djc force-pushed the 0.11.x-params-var-ints branch 3 times, most recently from 3dcca3d to cb5ae6d Compare March 9, 2026 09:42
@djc djc force-pushed the 0.11.x-params-var-ints branch from cb5ae6d to a2ab220 Compare March 9, 2026 09:48
@djc
Copy link
Member Author

djc commented Mar 9, 2026

Not sure what's going on with these WASM failures:

---- tests::zero_rtt_incoming_buffer_size_total output ----
    error output:
        panicked at quinn-proto/src/connection/mod.rs:1674:58:
        called `Option::unwrap()` on a `None` value
        
        Stack:
        
        Error
            at /tmp/.tmpysR2Sh/wasm-bindgen-test.js:364:25
            at logError (/tmp/.tmpysR2Sh/wasm-bindgen-test.js:741:18)
            at __wbg_new_3b89a8aabb976b21 (/tmp/.tmpysR2Sh/wasm-bindgen-test.js:363:57)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::Error::new::__wbg_new_3b89a8aabb976b21::h563c362ecefee5f4 externref shim (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24101]:0x58dd33)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::Error::new::hbb3caa2beea4983b (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[13882]:0x51eda9)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::h6c5281a00456794c (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5976]:0x42edb2)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::{{closure}}::{{closure}}::h3d4f3bf155db2337 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[15624]:0x53acc6)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_with_hook::hb44ff7a7db1d4a36 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5850]:0x428a6d)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_handler::{{closure}}::hc45753d38c23abcf (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[9594]:0x4ba1c1)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::sys::backtrace::__rust_end_short_backtrace::hc8287529a3915aa1 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24466]:0x58ef37)
        
        
    
    JS exception that was thrown:
        RuntimeError: unreachable
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::__rust_abort (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24557]:0x58f18f)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::__rust_start_panic (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24524]:0x58f0f3)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::rust_panic (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24191]:0x58e200)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_with_hook::hb44ff7a7db1d4a36 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5850]:0x428aa6)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_handler::{{closure}}::hc45753d38c23abcf (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[9594]:0x4ba1c1)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::sys::backtrace::__rust_end_short_backtrace::hc8287529a3915aa1 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24466]:0x58ef37)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::rust_begin_unwind (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[18568]:0x55f812)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::panicking::panic_fmt::hb8badb9a939ccf7a (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[15460]:0x538786)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::panicking::panic::h19814263112256c0 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[23805]:0x58c6fa)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::option::unwrap_failed::h8ebba99799176358 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24211]:0x58e361)

---- tests::zero_rtt_incoming_buffer_size output ----
    error output:
        panicked at quinn-proto/src/connection/mod.rs:1674:58:
        called `Option::unwrap()` on a `None` value
        
        Stack:
        
        Error
            at /tmp/.tmpysR2Sh/wasm-bindgen-test.js:364:25
            at logError (/tmp/.tmpysR2Sh/wasm-bindgen-test.js:741:18)
            at __wbg_new_3b89a8aabb976b21 (/tmp/.tmpysR2Sh/wasm-bindgen-test.js:363:57)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::Error::new::__wbg_new_3b89a8aabb976b21::h563c362ecefee5f4 externref shim (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24101]:0x58dd33)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::Error::new::hbb3caa2beea4983b (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[13882]:0x51eda9)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::panic_handling::h6c5281a00456794c (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5976]:0x42edb2)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.wasm_bindgen_test::__rt::Context::new::{{closure}}::{{closure}}::h3d4f3bf155db2337 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[15624]:0x53acc6)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_with_hook::hb44ff7a7db1d4a36 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5850]:0x428a6d)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_handler::{{closure}}::hc45753d38c23abcf (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[9594]:0x4ba1c1)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::sys::backtrace::__rust_end_short_backtrace::hc8287529a3915aa1 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24466]:0x58ef37)
        
        
    
    JS exception that was thrown:
        RuntimeError: unreachable
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::__rust_abort (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24557]:0x58f18f)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::__rust_start_panic (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24524]:0x58f0f3)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::rust_panic (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24191]:0x58e200)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_with_hook::hb44ff7a7db1d4a36 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[5850]:0x428aa6)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::panicking::panic_handler::{{closure}}::hc45753d38c23abcf (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[9594]:0x4ba1c1)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.std::sys::backtrace::__rust_end_short_backtrace::hc8287529a3915aa1 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24466]:0x58ef37)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.__rustc[4425a7e20b4c8619]::rust_begin_unwind (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[18568]:0x55f812)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::panicking::panic_fmt::hb8badb9a939ccf7a (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[15460]:0x538786)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::panicking::panic::h19814263112256c0 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[23805]:0x58c6fa)
            at quinn_proto-89a4b4fffc0bfc2d.wasm.core::option::unwrap_failed::h8ebba99799176358 (wasm://wasm/quinn_proto-89a4b4fffc0bfc2d.wasm-0a5270be:wasm-function[24211]:0x58e361)

failures:

    tests::zero_rtt_incoming_buffer_size_total
    tests::zero_rtt_incoming_buffer_size

All of these changes are backported from main; merging without approval for release.

superninja-app bot pushed a commit to arkavo-org/arkavo-edge that referenced this pull request Mar 11, 2026
Bump quinn-proto from 0.11.13 to 0.11.14 in two sub-workspaces to
address a high-severity unauthenticated remote denial-of-service
vulnerability (RUSTSEC-2026-0037 / GHSA-6xvm-j4wr-6v98, CVSS 8.7).

Receiving QUIC transport parameters containing invalid values could
trigger a panic in quinn-proto's transport parameter parsing code due
to improper use of unwrap() calls, allowing any unauthenticated remote
attacker to crash a Quinn endpoint with a single malformed packet.

Affected sub-workspaces:
- crates/arkavo-protocol/fuzz/ (Dependabot alert #27)
- examples/fleet-immunity/mcp-fleet-env/ (Dependabot alert #26)

Changes:
- Add [patch.crates-io] quinn-proto = =0.11.14 to both Cargo.toml files
- Update Cargo.lock entries to quinn-proto 0.11.14
  (checksum: 434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098)

References:
- https://rustsec.org/advisories/RUSTSEC-2026-0037.html
- GHSA-6xvm-j4wr-6v98
- quinn-rs/quinn#2559
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants