From 12072570c897aa81ab1b0c74dfe1b655171ab0f5 Mon Sep 17 00:00:00 2001 From: agnosticdev Date: Sun, 26 Jul 2026 07:09:03 -0500 Subject: [PATCH 1/3] SwiftQUIC: Bugfix in inboundShortheader --- Sources/SwiftNetwork/QUIC/QUICConnection.swift | 2 +- Sources/SwiftNetwork/QUIC/QUICConnectionID.swift | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Sources/SwiftNetwork/QUIC/QUICConnection.swift b/Sources/SwiftNetwork/QUIC/QUICConnection.swift index 58a2922..1913009 100644 --- a/Sources/SwiftNetwork/QUIC/QUICConnection.swift +++ b/Sources/SwiftNetwork/QUIC/QUICConnection.swift @@ -2307,7 +2307,7 @@ public final class QUICConnection: ManyToManyApplicationStreamProtocol, ) guard - packet.destinationConnectionID == path.dcid + packet.destinationConnectionID == path.scid || validateDCIDFromInboundPacket(packet, on: path) else { return false diff --git a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift index cbc9766..c80bf13 100644 --- a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift +++ b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift @@ -168,14 +168,12 @@ public struct QUICConnectionID: Sendable, Equatable, CustomStringConvertible { guard lhs.actualLength == rhs.actualLength else { return false } - let lhsSpan = lhs._connectionID.span - let rhsSpan = rhs._connectionID.span - for i in 0.. Date: Sun, 26 Jul 2026 07:29:08 -0500 Subject: [PATCH 2/3] Do not directly use memcmp on InlineArray --- Sources/SwiftNetwork/QUIC/QUICConnectionID.swift | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift index c80bf13..8dbad90 100644 --- a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift +++ b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift @@ -168,12 +168,24 @@ public struct QUICConnectionID: Sendable, Equatable, CustomStringConvertible { guard lhs.actualLength == rhs.actualLength else { return false } + #if !NETWORK_EMBEDDED // Contstant time equality - return lhs.connectionIDStorage.withUnsafeBytes { left in - rhs.connectionIDStorage.withUnsafeBytes { right in + return lhs.connectionIDStorage.span.withUnsafeBytes { left in + rhs.connectionIDStorage.span.withUnsafeBytes { right in memcmp(left.baseAddress!, right.baseAddress!, 20) } } == 0 + #else + // Fall back to comparing by index + let lhsSpan = lhs._connectionID.span + let rhsSpan = rhs._connectionID.span + for i in 0.. Date: Tue, 28 Jul 2026 06:42:37 -0500 Subject: [PATCH 3/3] Removed comment --- Sources/SwiftNetwork/QUIC/QUICConnectionID.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift index 8dbad90..dcfe864 100644 --- a/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift +++ b/Sources/SwiftNetwork/QUIC/QUICConnectionID.swift @@ -169,7 +169,6 @@ public struct QUICConnectionID: Sendable, Equatable, CustomStringConvertible { return false } #if !NETWORK_EMBEDDED - // Contstant time equality return lhs.connectionIDStorage.span.withUnsafeBytes { left in rhs.connectionIDStorage.span.withUnsafeBytes { right in memcmp(left.baseAddress!, right.baseAddress!, 20)