EAP-SIM server: Require SIM/Start response to include identity
Since we always request an identity in the request, the response has to include AT_IDENTITY. This allows the SIM/Start response processing to be simplified a bit. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
336a46aeda
commit
15cfe2b40f
1 changed files with 23 additions and 11 deletions
|
@ -405,19 +405,34 @@ static void eap_sim_process_start(struct eap_sm *sm,
|
||||||
const u8 *identity;
|
const u8 *identity;
|
||||||
size_t identity_len;
|
size_t identity_len;
|
||||||
u8 ver_list[2];
|
u8 ver_list[2];
|
||||||
|
u8 *new_identity;
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "EAP-SIM: Receive start response");
|
wpa_printf(MSG_DEBUG, "EAP-SIM: Receive start response");
|
||||||
|
|
||||||
if (attr->identity) {
|
/*
|
||||||
os_free(sm->identity);
|
* We always request identity in SIM/Start, so the peer is required to
|
||||||
sm->identity = os_malloc(attr->identity_len);
|
* have replied with one.
|
||||||
if (sm->identity) {
|
*/
|
||||||
os_memcpy(sm->identity, attr->identity,
|
if (!attr->identity || attr->identity_len == 0) {
|
||||||
attr->identity_len);
|
wpa_printf(MSG_DEBUG, "EAP-SIM: Peer did not provide any "
|
||||||
sm->identity_len = attr->identity_len;
|
"identity");
|
||||||
}
|
eap_sim_state(data, FAILURE);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
new_identity = os_malloc(attr->identity_len);
|
||||||
|
if (new_identity == NULL) {
|
||||||
|
eap_sim_state(data, FAILURE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
os_free(sm->identity);
|
||||||
|
sm->identity = new_identity;
|
||||||
|
os_memcpy(sm->identity, attr->identity, attr->identity_len);
|
||||||
|
sm->identity_len = attr->identity_len;
|
||||||
|
|
||||||
|
wpa_hexdump_ascii(MSG_DEBUG, "EAP-SIM: Identity",
|
||||||
|
sm->identity, sm->identity_len);
|
||||||
|
|
||||||
identity = NULL;
|
identity = NULL;
|
||||||
identity_len = 0;
|
identity_len = 0;
|
||||||
|
|
||||||
|
@ -453,9 +468,6 @@ static void eap_sim_process_start(struct eap_sm *sm,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_hexdump_ascii(MSG_DEBUG, "EAP-SIM: Identity",
|
|
||||||
identity, identity_len);
|
|
||||||
|
|
||||||
if (data->reauth) {
|
if (data->reauth) {
|
||||||
eap_sim_state(data, REAUTH);
|
eap_sim_state(data, REAUTH);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue