Okay the segfault
Program received signal SIGSEGV, Segmentation fault.
0xb7c0d349 in free () from /lib/libc.so.6
(gdb) bt
#0 0xb7c0d349 in free () from /lib/libc.so.6
#1 0xb7a794ed in do_confstart (u=0x83d3f68) at os_confinfo.c:426
#2 0x080679ab in do_run_cmd (service=0x80d9c58 "OperServ", u=0x83d3f68, c=0x83d5e80, cmd=0xbfdb8f10 "confinfo") at commands.c:101
The reason.. you can't free what is an int pointer..
char *my_userdb = NULL;
Directive confvalues26[] = {
{ "UseRDB", { { PARAM_SET, PARAM_RELOAD, &my_userdb } } }
};
once passed to the parser my_userdb becomes an int pointer, not a char pointer, you can not free what is an int, redeclare as
int my_userdb = 0;
and remove the free(my_userdb); and your segfaults will go away