rlm_sql: readclients segmentation fault
Milan Holub
holub at thenet.ch
Thu Apr 19 09:30:17 CEST 2007
Hi Alan,
On Wed, Apr 18, 2007 at 05:09:11PM +0200, Alan DeKok wrote:
> Ah. client_add() doesn't create the necessary structure. I've just
> fixed that.
==> I can confirm it works (cool!)
However here is another bug report:):
* cvs head
* all NASes in nas table(clients.conf not used)
* sending HUP results in segmentation fault when re-building up internal
clients structure:
rlm_sql (sql): Read entry nasname=<IP_IN_NAS_TABLE>,shortname=wlan-gw29,secret=DISABLED
rlm_sql (sql): Adding client <IP_IN_NAS_TABLE> (wlan-gw29) to clients list
Program received signal SIGSEGV, Segmentation fault.
0x40033e93 in rbtree_insertnode (tree=0x81f1c48, Data=0x8276748) at rbtree.c:248
248 result = tree->Compare(Data, Current->Data);
(gdb) bt
#0 0x40033e93 in rbtree_insertnode (tree=0x81f1c48, Data=0x8276748) at rbtree.c:248
#1 0x40033f87 in rbtree_insert (tree=0x81f1c48, Data=0x8276748) at rbtree.c:299
#2 0x0804e64b in client_add (clients=0x815bd28, client=0x8276748) at client.c:232
#3 0x4054ef98 in generate_sql_clients (inst=0x82694f0) at rlm_sql.c:338
#4 0x4054ff6d in rlm_sql_instantiate (conf=0x820a308, instance=0x82694e4) at rlm_sql.c:862
#5 0x080561e5 in find_module_instance (modules=0x8206a80, instname=0x820f728 "sql") at modules.c:307
#6 0x08057cf3 in do_compile_modsingle (parent=0x0, component=1, ci=0x820f708, filename=0x8079f48 "radiusd.conf", grouptype=0,
modname=0xbfffe478) at modcall.c:1195
#7 0x08058308 in compile_modsingle (parent=0x0, component=1, ci=0x820f708, filename=0x8079f48 "radiusd.conf", modname=0xbfffe478)
at modcall.c:1302
#8 0x0805671e in load_component_section (parent=0x0, cs=0x820f3c0, comp=1, filename=0x8079f48 "radiusd.conf") at modules.c:551
#9 0x08056bc0 in setup_modules (reload=1) at modules.c:927
#10 0x08055a9d in read_mainconfig (reload=1) at mainconfig.c:968
#11 0x08058ea2 in main (argc=2, argv=0xbffffbb4) at radiusd.c:540
#0 0x40033e93 in rbtree_insertnode (tree=0x81f1c48, Data=0x8276748) at rbtree.c:248
248 result = tree->Compare(Data, Current->Data);
(gdb) list
243 int result;
244
245 /*
246 * See if two entries are identical.
247 */
248 result = tree->Compare(Data, Current->Data);
249 if (result == 0) {
250 /*
251 * Don't replace the entry.
252 */
(gdb) print Data
$1 = (void *) 0x8276748
(gdb) print Current->Data
Cannot access memory at address 0x29
==> if you need more debug outpu then let me know...
Milan Holub
holub (at) thenet (dot) ch
--------------------------------------
TheNet-Internet Services AG,
im Bernertechnopark, Morgenstr. 129
CH-3018, Bern, Switzerland
031 998 4333, Fax 031 998 4330
http://www.thenet.ch
http://wlan.thenet.ch
--------------------------------------
More information about the Freeradius-Users
mailing list