Bjarni Hardarson wrote:
Hi list!
Recently upgraded from 1.1.3 to 1.1.4 to support EAP-PEAP for Windows Vista clients. That works fine but now I got problems with missing reply attributes for Mac OSX clients using EAP-TTLS.
FreeRADIUS sends an Access-Challenge with the correct attributes but they are missing from the final Access-Accept.
Please try the attached patch. If it works, I'll add it to 1.1.5. Alan DeKok. -- http://deployingradius.com - The web site of the book http://deployingradius.com/blog/ - The blog ? src/modules/rlm_eap/radeapclient Index: src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h =================================================================== RCS file: /source/radiusd/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h,v retrieving revision 1.5.4.1 diff -u -r1.5.4.1 eap_ttls.h --- src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h 6 Feb 2006 16:23:57 -0000 1.5.4.1 +++ src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h 16 Feb 2007 08:33:25 -0000 @@ -27,6 +27,7 @@ typedef struct ttls_tunnel_t { VALUE_PAIR *username; VALUE_PAIR *state; + VALUE_PAIR *reply; int authenticated; int default_eap_type; int copy_request_to_tunnel; Index: src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c =================================================================== RCS file: /source/radiusd/src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c,v retrieving revision 1.17.2.2.2.3 diff -u -r1.17.2.2.2.3 ttls.c --- src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c 18 Oct 2006 21:49:47 -0000 1.17.2.2.2.3 +++ src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c 16 Feb 2007 08:33:25 -0000 @@ -611,6 +611,9 @@ DEBUG2(" TTLS: Got MS-CHAP2-Success, tunneling it to the client in a challenge."); rcode = RLM_MODULE_HANDLED; t->authenticated = TRUE; + + t->reply = reply->vps; + reply->vps = NULL; } else { /* no MS-CHAP2-Success */ /* * Can only have EAP-Message if there's @@ -643,8 +646,13 @@ */ if (t->use_tunneled_reply) { pairdelete(&reply->vps, PW_PROXY_STATE); - pairadd(&request->reply->vps, reply->vps); - reply->vps = NULL; + + if (!t->reply) { + pairadd(&request->reply->vps, reply->vps); + reply->vps = NULL; + } else { + pairadd(&request->reply->vps, reply->vps); + } } break;