[PATCH v3 4/4] handshake: clear expiration of pmksa in _steal_pmksa()

James Prestwood
2026-03-09T16:57:57Z

When pulling the pmksa out of the handshake object (to cache) we
also need to clear the expiration within the handshake itself. This
will prevent future attempts of setting the PMKSA into the handshake
due to the logic in handshake_state_set_pmksa():

/* checks for both expiration || pmksa being set */
if (s->expiration)
return false;
---
src/handshake.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/src/handshake.c b/src/handshake.c
index ef1a8220..41192fdd 100644
--- a/src/handshake.c
+++ b/src/handshake.c
@@ -1267,6 +1267,7 @@ static struct pmksa *handshake_state_steal_pmksa(struct handshake_state *s)

pmksa = l_new(struct pmksa, 1);
pmksa->expiration = s->expiration;
+ s->expiration = 0;
memcpy(pmksa->spa, s->spa, sizeof(s->spa));
memcpy(pmksa->aa, s->aa, sizeof(s->aa));
memcpy(pmksa->ssid, s->ssid, s->ssid_len);
--
2.34.1