a73x

quic: g_key PSK global races concurrent dials with different keys

open   by a73x

quic.zig pskClientCb reads a process-global g_key; the wall's per-host pollers and pumps dial concurrently with per-host announced keys, so two dials can handshake with each other's key. Pre-existing (was in quic_client.zig), one site since the dedup branch moved Client into quic.zig. Fix: carry the key per connection via wolfSSL_set_app_data/get_app_data in pskClientCb, with a pin that dials two hosts with different keys at once. Found by the dedup whole-branch review 2026-08-29.

Comments

a73x   2026-08-29 12:30

2026-08-29: still a global — src/quic.zig:937 var g_key: ?Key, set at ~1089.