From 47352f03bf5a70899dfa4d56ea838f9d54911912 Mon Sep 17 00:00:00 2001 From: ch4r10t33r Date: Thu, 16 Apr 2026 21:48:47 +0100 Subject: [PATCH] transport,deps: bump zquic to v1.5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pulls in the v1.3.0..v1.5.0 security and correctness fixes: - Retry token replay window (30 s) with hourly secret rotation (zquic #108). - FINAL_SIZE_ERROR enforcement cross-checking RESET_STREAM vs STREAM+FIN final sizes (zquic #109). - Non-minimal varint rejection per RFC 9000 §16 (zquic #110). - Active connection ID limit enforced per RFC 9000 §5.1.1 (zquic #111). - ACK range underflow returns FrameEncodingError instead of saturating (zquic #112). - Stream-initiator violations on STREAM frames are rejected (zquic #113). - Coalesced packet parser hardening (zquic #115). API adjustment: rawAllocateNextLocalBidiStream and rawAllocateNextLocalUniStream now return OpenLocalStreamError!u64 instead of u64. Add `try` at the two call sites in zquic_quic_shim so StreamLimitExceeded propagates as a stream create failure. Tests: zig fmt --check . plus test, test-broadcast, test-sim-rs, test-sim-gossipsub and test-quic all pass locally. --- build.zig.zon | 4 ++-- src/transport/zquic_quic_shim.zig | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 2003912..95dfd47 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -15,8 +15,8 @@ }, .dependencies = .{ .zquic = .{ - .url = "https://github.com/ch4r10t33r/zquic/archive/refs/tags/v1.2.1.tar.gz", - .hash = "zquic-1.2.1-2zRc1AFCDwCgM1eFokgQYN4SnVIaeLzs5rSMwL1Nm8-Y", + .url = "https://github.com/ch4r10t33r/zquic/archive/refs/tags/v1.5.0.tar.gz", + .hash = "zquic-1.5.0-2zRc1LynDwAh1rU4KzmEmuSY9WKDP7qNgz7e8xI09uXn", }, }, } diff --git a/src/transport/zquic_quic_shim.zig b/src/transport/zquic_quic_shim.zig index b0ac804..3b46973 100644 --- a/src/transport/zquic_quic_shim.zig +++ b/src/transport/zquic_quic_shim.zig @@ -569,10 +569,10 @@ pub fn streamMake(conn: *QuicConnection, poll_peer: ?*QuicEndpoint) !*QuicStream if (!connHandshakeReady(conn)) return error.HandshakeNotComplete; const alloc = conn.ep.allocator.*; const sid = if (conn.client) |c| blk: { - break :blk io.rawAllocateNextLocalBidiStream(&c.conn); + break :blk try io.rawAllocateNextLocalBidiStream(&c.conn); } else blk: { const cs = conn.connStatePtr() orelse return error.StreamCreateFailed; - break :blk io.rawAllocateNextLocalBidiStream(cs); + break :blk try io.rawAllocateNextLocalBidiStream(cs); }; const qs = try alloc.create(QuicStream); errdefer alloc.destroy(qs); @@ -602,10 +602,10 @@ pub fn streamMakeUni(conn: *QuicConnection, poll_peer: ?*QuicEndpoint) !*QuicStr const qs = try alloc.create(QuicStream); errdefer alloc.destroy(qs); const sid = if (conn.client) |c| blk: { - break :blk io.rawAllocateNextLocalUniStream(&c.conn); + break :blk try io.rawAllocateNextLocalUniStream(&c.conn); } else blk: { const cs = conn.connStatePtr() orelse return error.StreamCreateFailed; - break :blk io.rawAllocateNextLocalUniStream(cs); + break :blk try io.rawAllocateNextLocalUniStream(cs); }; qs.* = .{ .conn = conn,