segmentation fault in rlm_preprocess
hi list! today we built from master and we ran into this: Ready to process requests. rad_recv: Access-Request packet from host 172.20.23.31 port 1814, id=193, length=228 NAS-Port-Type = Wireless-802.16 Proxy-State = 0x323231 WiMAX-Available-In-Client = 99 Service-Type = Framed-User WiMAX-BS-ID = 0x303030303230303630313030 WiMAX-Release = "1.1" Message-Authenticator = 0x6149f02200f787d01064d0305effb1ce WiMAX-Accounting-Capabilities = Flow-Based NAS-IP-Address = 172.20.10.121 WiMAX-Hotlining-Capabilities = Hotline-Profile-Id Calling-Station-Id = "0B4E398C5FF7" User-Name = "test@fr3" Event-Timestamp = "May 30 2013 15:42:48 CEST" NAS-Identifier = "A_NAS" WiMAX-GMT-Timezone-offset = 16777216 EAP-Message = 0x022a000d017465737440667233 Attr-26 = 0x000060b5010301 WiMAX-Idle-Mode-Notification-Cap = Supported (3) # Executing section authorize from file /etc/raddb/sites-enabled/default (3) group authorize { (3) - entering group authorize {...} (3) eap : EAP packet type response id 42 length 13 (3) eap : EAP-Identity reply, returning 'ok' so we can short-circuit the rest of authorize (3) [eap] = ok Breakpoint 1, hints_setup (hints=0x9f9790, request=0xaf9870) at src/modules/rlm_preprocess/rlm_preprocess.c:381 381 { Missing separate debuginfos, use: debuginfo-install freeradius-3.0.0-13.el6.x86_64 (gdb) f #0 hints_setup (hints=0x9f9790, request=0xaf9870) at src/modules/rlm_preprocess/rlm_preprocess.c:381 381 { (gdb) info args hints = 0x9f9790 request = 0xaf9870 (gdb) info frame Stack level 0, frame at 0x7fffffffc910: rip = 0x7fffe7b222a0 in hints_setup (src/modules/rlm_preprocess/rlm_preprocess.c:381); saved rip 0x7fffe7b227eb called by frame at 0x7fffffffcd30 source language c. Arglist at 0x7fffffffc900, args: hints=0x9f9790, request=0xaf9870 Locals at 0x7fffffffc900, Previous frame's sp is 0x7fffffffc910 Saved registers: rip at 0x7fffffffc908 (gdb) n 389 request_pairs = request->packet->vps; (gdb) n 391 if (!hints || !request_pairs) (gdb) n 389 request_pairs = request->packet->vps; (gdb) n 391 if (!hints || !request_pairs) (gdb) n 397 name = (tmp = pairfind(request_pairs, PW_USER_NAME, 0, TAG_ANY)) ? (gdb) n 399 if (!name || name[0] == 0) { (gdb) n 421 pairdelete(&add, PW_STRIP_USER_NAME, 0, TAG_ANY); (gdb) n 410 if (((strcmp(i->name, "DEFAULT") == 0) || (strcmp(i->name, name) == 0)) && (gdb) n 411 (paircompare(request, request_pairs, i->check, NULL) == 0)) { (gdb) n Program received signal SIGSEGV, Segmentation fault. 0x00007ffff75d4a56 in paircompare (request=0xaf9870, req_list=0xaf9ce0, check=0x9f8fe0, rep_list=0x0) at src/main/valuepair.c:495 495 if (!check_item->da->vendor) switch (check_item->da->attr) { (gdb) info args request = 0xaf9870 req_list = 0xaf9ce0 check = 0x9f8fe0 rep_list = 0x0 (gdb) info frame Stack level 0, frame at 0x7fffffffc8b0: rip = 0x7ffff75d4a56 in paircompare (src/main/valuepair.c:495); saved rip 0x7fffe7b223bb called by frame at 0x7fffffffc910 source language c. Arglist at 0x7fffffffc808, args: request=0xaf9870, req_list=0xaf9ce0, check=0x9f8fe0, rep_list=0x0 Locals at 0x7fffffffc808, Previous frame's sp is 0x7fffffffc8b0 Saved registers: rbx at 0x7fffffffc878, rbp at 0x7fffffffc880, r12 at 0x7fffffffc888, r13 at 0x7fffffffc890, r14 at 0x7fffffffc898, r15 at 0x7fffffffc8a0, rip at 0x7fffffffc8a8 (gdb) print check_item->da $1 = (const DICT_ATTR *) 0x1000003ec (gdb) print check_item->da->vendor Cannot access memory at address 0x1000003f4 (gdb) print check_item->da->attr Cannot access memory at address 0x1000003ec it looks like a bug in src/modules/rlm_preprocess/rlm_preprocess.c but we're not so sure about the resolution; has anyone encountered/solved the same issue? thanks+regards, duffy
it looks like a bug in src/modules/rlm_preprocess/rlm_preprocess.c but we're not so sure about the resolution; has anyone encountered/solved the same issue?
This should be on devel, but nevermind. Should be fixed, can you check? -Arran Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team
participants (2)
-
Arran Cudbard-Bell -
duffy