mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-26 10:39:23 +01:00
sae: Transition to a new state explicitly
Do not try to transition to a new state from sae_send_commit / sae_send_confirm since these methods can be called due to retransmissions or other unexpected messages. Instead, transition to the new state explicitly from sae_process_commit / sae_process_confirm.
This commit is contained in:
parent
cb810c12ff
commit
d8f9d9d45c
@ -469,8 +469,6 @@ static void sae_send_confirm(struct sae_sm *sm)
|
|||||||
memcpy(ptr, confirm, 32);
|
memcpy(ptr, confirm, 32);
|
||||||
ptr += 32;
|
ptr += 32;
|
||||||
|
|
||||||
sm->state = SAE_STATE_CONFIRMED;
|
|
||||||
|
|
||||||
sm->tx_auth(body, 38, sm->user_data);
|
sm->tx_auth(body, 38, sm->user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -584,6 +582,7 @@ static int sae_process_commit(struct sae_sm *sm, const uint8_t *from,
|
|||||||
memcpy(sm->pmkid, tmp, 16);
|
memcpy(sm->pmkid, tmp, 16);
|
||||||
|
|
||||||
sae_send_confirm(sm);
|
sae_send_confirm(sm);
|
||||||
|
sm->state = SAE_STATE_CONFIRMED;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -655,8 +654,6 @@ static bool sae_send_commit(struct sae_sm *sm, bool retry)
|
|||||||
if (!sae_build_commit(sm, hs->spa, hs->aa, commit, &len, retry))
|
if (!sae_build_commit(sm, hs->spa, hs->aa, commit, &len, retry))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
sm->state = SAE_STATE_COMMITTED;
|
|
||||||
|
|
||||||
sm->tx_auth(commit, len, sm->user_data);
|
sm->tx_auth(commit, len, sm->user_data);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1062,6 +1059,7 @@ static bool sae_start(struct auth_proto *ap)
|
|||||||
else
|
else
|
||||||
memcpy(sm->peer, sm->handshake->aa, 6);
|
memcpy(sm->peer, sm->handshake->aa, 6);
|
||||||
|
|
||||||
|
sm->state = SAE_STATE_COMMITTED;
|
||||||
return sae_send_commit(sm, false);
|
return sae_send_commit(sm, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user