Зеркало Leadaxe/wireguard-go-awg2-lx — сабмодуль ядра sing-box-lx (AmneziaWG). GPLv3.
Find a file
Alex Valiushko 15b912c1c0
device: fix TOCTOU race during session state update (#77)
API introduced in a927a66e has two cases of state determination
happening out of critical section for the state value:

(1) expiredSession loads sessionExpiresNano, then releases all locks
and calls noteSessionState(Expired). So a concurrent refresh that
lands in that gap gets clobbered by a stale Expired -- and sticks
until the next re-key.

(2) Likewise in noteSessionHandshakeStopped, hasKeyMaterial check
happens out of the session state lock and races with ZeroAndFlushAll.

Both lead to a wrong state emitted via the device.sessionState.fn,
but are otherwise benign.

This moves the expiry timestamp under a lock to address the former,
and provides a noteSessionStateLocked helper for the latter.
Also changes API semantics to serialize events per-peer, to avoid
sharing a single lock for all timestamps.

Updates tailscale/corp#42874

Signed-off-by: Alex Valiushko <alexvaliushko@tailscale.com>
Change-Id: Iee2cdf135375519e58a8e84362349d966a6a6964
2026-08-04 19:18:01 +08:00
conn Add EgressProvider 2026-07-17 10:48:47 +08:00
device device: fix TOCTOU race during session state update (#77) 2026-08-04 19:18:01 +08:00
ipc Rename module 2026-05-17 20:09:28 +08:00
ratelimiter Remove unused 2026-05-17 20:04:34 +08:00
replay Remove unused 2026-05-17 20:04:34 +08:00
rwcancel rwcancel: fix wrong poll event flag on ReadyWrite 2025-05-05 15:10:08 +02:00
tai64n Remove unused 2026-05-17 20:04:34 +08:00
tun Apply Tailscale TUN offload APIs 2026-05-17 20:36:35 +08:00
.gitignore Update .gitignore 2026-05-17 20:02:24 +08:00
go.mod device: add API for on-demand configuration of peers 2026-08-04 19:06:30 +08:00
go.sum Add pause support 2026-05-17 20:36:45 +08:00
LICENSE mod: rename COPYING to LICENSE 2021-03-06 09:09:21 -07:00
Makefile Makefile: don't use test -v because it hides failures in scrollback 2021-11-16 21:07:31 +01:00
reformat.sh Add module rename script 2026-05-17 20:02:24 +08:00
remove-unused.sh Add remove unused script 2026-05-17 20:02:24 +08:00
rename-module.sh Add module rename script 2026-05-17 20:02:24 +08:00
version.go version: bump snapshot 2025-05-22 01:45:02 +02:00