From: Alan T. DeKok Date: Tue, 21 Feb 2012 07:57:49 +0000 (+0100) Subject: Try to use identity from SIM protocol, not EAP-Identity X-Git-Tag: release_2_2_0~163 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=177dbabdcef84353768551c0a39d29c566538c06;p=thirdparty%2Ffreeradius-server.git Try to use identity from SIM protocol, not EAP-Identity --- diff --git a/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c b/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c index 908d5b2fd7d..b9e9b08acf4 100644 --- a/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c +++ b/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c @@ -247,8 +247,14 @@ static int eap_sim_sendchallenge(EAP_HANDLER *handler) pairreplace(outvps, newvp); /* make a copy of the identity */ - ess->keys.identitylen = strlen(handler->identity); - memcpy(ess->keys.identity, handler->identity, ess->keys.identitylen); + newvp = pairfind(invps, ATTRIBUTE_EAP_SIM_BASE + PW_EAP_SIM_IDENTITY); + if (newvp) { + ess->keys.identitylen = newvp->length; + memcpy(ess->keys.identity, newvp->vp_octets, newvp->length); + } else { + ess->keys.identitylen = strlen(handler->identity); + memcpy(ess->keys.identity, handler->identity, ess->keys.identitylen); + } /* all set, calculate keys! */ eapsim_calculate_keys(&ess->keys);