mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 04:32:37 +01:00
eap-aka: round to nearest word on message buffers
One of these message buffers was overflowing due to padding not being taken into account (caught by sanitizers). Wrapped the length of all message buffers with EAP_SIM_ROUND as to account for any padding that attributes may add.
This commit is contained in:
parent
e2e625fa18
commit
4bcfa21ca4
@ -189,7 +189,7 @@ static void check_milenage_cb(const uint8_t *res, const uint8_t *ck,
|
||||
struct eap_aka_handle *aka = eap_get_data(eap);
|
||||
|
||||
size_t resp_len = aka->protected ? 44 : 40;
|
||||
uint8_t response[resp_len + 4];
|
||||
uint8_t response[EAP_SIM_ROUND(resp_len + 4)];
|
||||
uint8_t *pos = response;
|
||||
|
||||
if (auts) {
|
||||
@ -512,7 +512,7 @@ static void handle_notification(struct eap_state *eap, const uint8_t *pkt,
|
||||
if (value == EAP_SIM_SUCCESS && aka->protected &&
|
||||
aka->state == EAP_AKA_STATE_CHALLENGE) {
|
||||
/* header + MAC + MAC header */
|
||||
uint8_t response[8 + EAP_SIM_MAC_LEN + 4];
|
||||
uint8_t response[EAP_SIM_ROUND(8 + EAP_SIM_MAC_LEN + 4)];
|
||||
uint8_t *pos = response;
|
||||
|
||||
/*
|
||||
@ -564,7 +564,7 @@ static void handle_identity(struct eap_state *eap, const uint8_t *pkt,
|
||||
size_t len)
|
||||
{
|
||||
struct eap_aka_handle *aka = eap_get_data(eap);
|
||||
uint8_t response[8 + strlen(aka->identity) + 4];
|
||||
uint8_t response[EAP_SIM_ROUND(8 + strlen(aka->identity) + 4)];
|
||||
uint8_t *pos = response;
|
||||
|
||||
if (aka->state != EAP_AKA_STATE_UNCONNECTED) {
|
||||
|
Loading…
Reference in New Issue
Block a user