]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Try to use identity from SIM protocol, not EAP-Identity
authorAlan T. DeKok <aland@freeradius.org>
Tue, 21 Feb 2012 07:57:49 +0000 (08:57 +0100)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 21 Feb 2012 07:57:49 +0000 (08:57 +0100)
src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c

index 908d5b2fd7de125e65077c51ee313c38040025e2..b9e9b08acf45a176d38dc5e8987310388a1a14e6 100644 (file)
@@ -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);