FreeRADIUS Version 0.8.1 (FreeBSD 5.0) openssl-SNAP-20030325 Enterasys R2 AP WindowsXP Supplicant
Hi, I ran into a problem with sending out the eaptls_success on FreeBSD. I got a core dump during a eaptls_compose in the file ${freeradius-0.8.1}/src/modules/rlm_eap/types/rlm_eap_tls/eap_tls.c called from eaptls_success according to the radius debug and a stack trace: >rad_recv: Access-Request packet from host xxx.xxx.xxx.x:1343, id=187, length=142 > Message-Authenticator = 0xef6ef7f16f408a525c8334d5bba244d1 > User-Name = "Administrator" > State = > 0x033dca3d049c26e699531ec3153cdbf90fb7833ebd6278e07924ae84f0a0fec3eb42bf56 > NAS-IP-Address = xxx.xxx.xxx.x > NAS-Port = 2 > NAS-Port-Type = Wireless-802.11 > Calling-Station-Id = "00-02-2d-6a-f0-05" > Framed-MTU = 1000 > EAP-Message = "\002\007\000\006\r" >modcall: entering group authorize > modcall[authorize]: module "preprocess" returns ok > modcall[authorize]: module "eap" returns updated > rlm_realm: No '@' in User-Name = "Administrator", looking up realm NULL > rlm_realm: No such realm NULL > modcall[authorize]: module "suffix" returns noop > users: Matched Administrator at 55 > modcall[authorize]: module "files" returns ok >modcall: group authorize returns updated > rad_check_password: Found Auth-Type EAP >auth: type "EAP" >modcall: entering group authenticate >rlm_eap: Request found, released from the list >rlm_eap: EAP_TYPE - tls >rlm_eap: processing type tls >rlm_eap_tls: Received EAP-TLS ACK message ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > >Breakpoint 5, eaptls_compose (eap_ds=0x80e0920, reply=0xbfbfdaf0) at eap_tls.c: 511 >511 *ptr++ = (uint8_t)(reply->flags & 0xFF); >(gdb) continue >Continuing. >Program received signal SIGSEGV, Segmentation fault. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0x282c5c8f in eaptls_compose (eap_ds=0x80e0920, reply=0xbfbfdaf0) at eap_tls.c: 511 >511 *ptr++ = (uint8_t)(reply->flags & 0xFF); >(gdb) >(gdb) bt >#0 eaptls_compose (eap_ds=0x80e0870, reply=0xbfbfdaf0) at eap_tls.c:511 >#1 0x282c56d4 in eaptls_success (eap_ds=0x80e0870) at eap_tls.c:108 >#2 0x282c58ea in eaptls_ack_handler (handler=0x80e2100) at eap_tls.c:232 >#3 0x282c54f1 in eaptls_authenticate (arg=0x80e0390, handler=0x80e2100) at rlm _eap_tls.c:192 >#4 0x282bfd38 in eaptype_call (eap_type=13, action=INITIATE, type_list=0x80712c0, > handler=0x80e2100) at eap.c:205 >#5 0x282bfe73 in eaptype_select (type_list=0x80712c0, handler=0x80e2100, conft ype=0x8077420 "tls") > at eap.c:280 >#6 0x282bf7f8 in eap_authenticate (instance=0x80e03b0, request=0x80e8500) >at rlm_eap.c:200 >#7 0x08054718 in module_post_auth () >#8 0x080547cb in modcall () >#9 0x08054751 in module_post_auth () >#10 0x0805482c in modcall () >#11 0x080543df in module_authenticate () >#12 0x080516ec in rad_check_password () >#13 0x08051aaa in rad_authenticate () >#14 0x0804ce6f in rad_respond () >#15 0x0804ca19 in rad_process () >#16 0x0804c5b9 in main () >#17 0x0804b885 in _start () The malloc() in eap_tls.c:501 behaves differently on FreeBSD 5.0 than on Linux (RH 8.0) when (reply->length - TLS_HEADER_LEN) is zero. Under FreeBSD I end up with a bad address, thus a segmentation fault. >(gdb) print eap_ds->request->type.data >$4 = (unsigned char *) 0x800 <Error reading address 0x800: Bad address> >(gdb) >radius1# uname -a >FreeBSD radius1.cldc.howard.edu 5.0-RELEASE FreeBSD 5.0-RELEASE #0: Thu >Jan 16 22:16:53 GMT 2003 >[EMAIL PROTECTED]:/usr/obj/usr/src/sys/GENERIC i386 >radius1# >radius1# gcc -v >Using built-in specs. >Configured with: FreeBSD/i386 system compiler >Thread model: posix >gcc version 3.2.1 [FreeBSD] 20021119 (release) >radius1# This seems to be the problem so far. Does there exist a patch or an update to this particular problem with malloc() with FreeBSD? rgrds George - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html