mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-29 13:59:24 +01:00
sae: fix inproper return value in sae_verify_accepted
This function was returning a boolean and the expected return was a signed integer. Since this function actually returned false in all cases the check for a success (0) return always worked. The comment about the 'standard code path' was removed as this is no longer valid.
This commit is contained in:
parent
3f2b558f57
commit
47efe17461
18
src/sae.c
18
src/sae.c
@ -938,7 +938,7 @@ static int sae_verify_confirmed(struct sae_sm *sm, uint16_t trans,
|
|||||||
/*
|
/*
|
||||||
* 802.11-2016 - 12.4.8.6.6 Protocol instance behavior - Accepted state
|
* 802.11-2016 - 12.4.8.6.6 Protocol instance behavior - Accepted state
|
||||||
*/
|
*/
|
||||||
static bool sae_verify_accepted(struct sae_sm *sm, uint16_t trans,
|
static int sae_verify_accepted(struct sae_sm *sm, uint16_t trans,
|
||||||
uint16_t status, const uint8_t *frame,
|
uint16_t status, const uint8_t *frame,
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
@ -947,14 +947,14 @@ static bool sae_verify_accepted(struct sae_sm *sm, uint16_t trans,
|
|||||||
/* spec does not specify what to do here, so print and discard */
|
/* spec does not specify what to do here, so print and discard */
|
||||||
if (trans != SAE_STATE_CONFIRMED) {
|
if (trans != SAE_STATE_CONFIRMED) {
|
||||||
l_error("received transaction %u in accepted state", trans);
|
l_error("received transaction %u in accepted state", trans);
|
||||||
return false;
|
return -EBADMSG;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sm->sync > SAE_SYNC_MAX)
|
if (sm->sync > SAE_SYNC_MAX)
|
||||||
return false;
|
return -EBADMSG;
|
||||||
|
|
||||||
if (len < 2)
|
if (len < 2)
|
||||||
return false;
|
return -EBADMSG;
|
||||||
|
|
||||||
sc = l_get_le16(frame);
|
sc = l_get_le16(frame);
|
||||||
|
|
||||||
@ -964,14 +964,14 @@ static bool sae_verify_accepted(struct sae_sm *sm, uint16_t trans,
|
|||||||
* silently discarded.
|
* silently discarded.
|
||||||
*/
|
*/
|
||||||
if (sc <= sm->rc || sc == 0xffff)
|
if (sc <= sm->rc || sc == 0xffff)
|
||||||
return false;
|
return -EBADMSG;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the verification fails, the received frame shall be silently
|
* If the verification fails, the received frame shall be silently
|
||||||
* discarded.
|
* discarded.
|
||||||
*/
|
*/
|
||||||
if (!sae_verify_confirm(sm, frame))
|
if (!sae_verify_confirm(sm, frame))
|
||||||
return false;
|
return -EBADMSG;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the verification succeeds, the Rc variable shall be set to the
|
* If the verification succeeds, the Rc variable shall be set to the
|
||||||
@ -984,11 +984,7 @@ static bool sae_verify_accepted(struct sae_sm *sm, uint16_t trans,
|
|||||||
|
|
||||||
sae_send_confirm(sm);
|
sae_send_confirm(sm);
|
||||||
|
|
||||||
/*
|
return 0;
|
||||||
* Since the confirmed needed special processing because of accepted
|
|
||||||
* state we don't want the standard code path to execute.
|
|
||||||
*/
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sae_verify_packet(struct sae_sm *sm, uint16_t trans,
|
static int sae_verify_packet(struct sae_sm *sm, uint16_t trans,
|
||||||
|
Loading…
Reference in New Issue
Block a user