Segmentation fault due to bind_address = 0.0.0.0

Rainer Poisel tm031051 at fh-stpoelten.ac.at
Mon Apr 3 22:40:05 CEST 2006


Hi,

I got a segmentation fault when i tried to run freeradius (Versions
1.0.4, 1.0.5, 1.1.0 and 1.1.1) on Debian (Sarge) or Suse (10.0) with
options enabled in the attached config-file.

Meanwhile I found out that the segmentation fault happened because of
the following setting:

> bind_address = 0.0.0.0

No I replaced it with the default value

> bind_address = *

and everything is fine :)

Thanks for reading,
best regards,
Rainer
-------------- next part --------------
##
## radiusd.conf	-- FreeRADIUS server configuration file.
##
##	http://www.freeradius.org/
##	$Id: radiusd.conf.in,v 1.161 2003/11/17 18:10:27 kkalev Exp $
##

############# PATHS #############
prefix = /usr/local/freeradius
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/freeradius
raddbdir = ${sysconfdir}/freeradius
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/freeradius
log_file = ${logdir}/radius.log
libdir = ${exec_prefix}/lib/freeradius
pidfile = ${run_dir}/freeradius.pid

############# GLOBAL SETTINGS #############
max_request_time = 30
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 1024
bind_address = 0.0.0.0
hostname_lookups = no
allow_core_dumps = no
regular_expressions	= yes
extended_expressions	= yes
log_stripped_names = no
log_auth = no
log_auth_badpass = no
log_auth_goodpass = no
usercollide = no
lower_pass = no
nospace_user = no
nospace_pass = no
Checkrad = ${sbindir}/checkrad
security {
	max_attributes = 200
	reject_delay = 1
	status_server = no
}
proxy_requests  = yes
$INCLUDE  ${confdir}/clients.conf
thread pool {
	start_servers = 5
	max_servers = 32
	min_spare_servers = 3
	max_spare_servers = 10
	max_requests_per_server = 0
}


############# MODULE SETTINGS #############
modules {
	pap {
		encryption_scheme = crypt
	}
	chap {
		authtype = CHAP
	}
	pam {
		pam_auth = radiusd
	}
	mschap {
		authtype = MS-CHAP
	}
	realm realmslash {
		format = prefix
		delimiter = "/"
	}
	realm suffix {
		format = suffix
		delimiter = "@"
	}
	realm realmpercent {
		format = suffix
		delimiter = "%"
	}
	preprocess {
		huntgroups = ${confdir}/huntgroups
		hints = ${confdir}/hints
		with_ascend_hack = no
		ascend_channels_per_line = 23
		with_ntdomain_hack = no
		with_specialix_jetstream_hack = no
		with_cisco_vsa_hack = no
	}
	files {
		usersfile = ${confdir}/users
		acctusersfile = ${confdir}/acct_users
		compat = no
	}
	detail {
		detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
		detailperm = 0600
	}
	acct_unique {
		key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
	}
	radutmp {
		filename = ${logdir}/radutmp
		username = %{User-Name}
		case_sensitive = yes
		check_with_nas = yes		
		perm = 0600
		callerid = "yes"
	}
	radutmp sradutmp {
		filename = ${logdir}/sradutmp
		perm = 0644
		callerid = "no"
	}
	attr_filter {
		attrsfile = ${confdir}/attrs
	}
	counter daily {
		filename = ${raddbdir}/db.daily
		key = User-Name
		count-attribute = Acct-Session-Time
		reset = daily
		counter-name = Daily-Session-Time
		check-name = Max-Daily-Session
		allowed-servicetype = Framed-User
		cache-size = 5000
	}
	always fail {
		rcode = fail
	}
	always reject {
		rcode = reject
	}
	always ok {
		rcode = ok
		simulcount = 0
		mpp = no
	}
	digest {
	}
	exec {
		wait = yes
		input_pairs = request
	}
	exec echo {
		wait = yes
		program = "/bin/echo %{User-Name}"
		input_pairs = request
		output_pairs = reply
	}
}
authorize {
	preprocess
	realmslash
	suffix
	files
}
preacct {
	preprocess
	suffix
	files
}
accounting {
	acct_unique
	detail
	radutmp
}
session {
	radutmp
}
post-auth {
}
pre-proxy {
}

-------------- next part --------------
pumba:/etc/freeradius# gdb /usr/local/freeradius/sbin/radiusd 
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) set args -X
(gdb) run
Starting program: /usr/local/freeradius-1.0.5/sbin/radiusd -X
[Thread debugging using libthread_db enabled]
[New Thread -1212021056 (LWP 10020)]
Starting - reading configuration files ...
reread_config:  reading radiusd.conf
Config:   including file: /etc/freeradius/clients.conf
main: prefix = "/usr/local/freeradius"
main: localstatedir = "/var"
main: logdir = "/var/log/freeradius"
main: libdir = "/usr/local/freeradius/lib/freeradius"
main: radacctdir = "/var/log/freeradius/radacct"
main: hostname_lookups = no
main: max_request_time = 30
main: cleanup_delay = 5
main: max_requests = 1024
main: delete_blocked_requests = 0
main: port = 1812
main: allow_core_dumps = no
main: log_stripped_names = no
main: log_file = "/var/log/freeradius/radius.log"
main: log_auth = no
main: log_auth_badpass = no
main: log_auth_goodpass = no
main: pidfile = "/var/run/freeradius/freeradius.pid"
Can't find IP address for host 0.0.0.0
read_config_files:  reading dictionary
read_config_files:  reading naslist
Using deprecated naslist file.  Support for this will go away soon.
read_config_files:  reading clients
read_config_files:  reading realms
radiusd:  entering modules setup
Module: Library search path is /usr/local/freeradius/lib/freeradius
Module: Loaded preprocess 
preprocess: huntgroups = "/etc/freeradius/huntgroups"
preprocess: hints = "/etc/freeradius/hints"
preprocess: with_ascend_hack = no
preprocess: ascend_channels_per_line = 23
preprocess: with_ntdomain_hack = no
preprocess: with_specialix_jetstream_hack = no
preprocess: with_cisco_vsa_hack = no
Module: Instantiated preprocess (preprocess) 
Module: Loaded realm 
realm: format = "prefix"
realm: delimiter = "/"
realm: ignore_default = no
realm: ignore_null = no
Module: Instantiated realm (realmslash) 
realm: format = "suffix"
realm: delimiter = "@"
realm: ignore_default = no
realm: ignore_null = no
Module: Instantiated realm (suffix) 
Module: Loaded files 
files: usersfile = "/etc/freeradius/users"
files: acctusersfile = "/etc/freeradius/acct_users"
files: preproxy_usersfile = "/etc/freeradius/preproxy_users"
files: compat = "no"
Module: Instantiated files (files) 
Module: Loaded Acct-Unique-Session-Id 
acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
Module: Instantiated acct_unique (acct_unique) 
Module: Loaded detail 
detail: detailfile = "/var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d"
detail: detailperm = 384
detail: dirperm = 493
detail: locking = no
Module: Instantiated detail (detail) 
Module: Loaded radutmp 
radutmp: filename = "/var/log/freeradius/radutmp"
radutmp: username = "%{User-Name}"
radutmp: case_sensitive = yes
radutmp: check_with_nas = yes
radutmp: perm = 384
radutmp: callerid = yes
Module: Instantiated radutmp (radutmp) 
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.
rad_recv: Access-Request packet from host 192.168.1.81:1923, id=8, length=48
User-Name = "meathome"
User-Password = "\250\357A\207\215\322\307\340\346\355\026\024\t(\251+"

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212021056 (LWP 10020)]
0x0804c60c in rad_respond (request=0x81106d8, fun=0x8052f80 <rad_authenticate>) at radiusd.c:1630
1630            if(strcmp(mainconfig.do_lower_user, "before") == 0)
(gdb) display mainconfig              
1: mainconfig = {next = 0x0, config_dead_time = 0, myip = 0, log_auth = 0, log_auth_badpass = 0, log_auth_goodpass = 0, do_usercollide = 0, 
allow_core_dumps = 0, debug_level = 0, proxy_requests = 0, post_proxy_authorize = 0, wake_all_if_all_dead = 0, proxy_synchronous = 0, 
proxy_dead_time = 0, proxy_retry_count = 0, proxy_retry_delay = 0, proxy_fallback = 0, reject_delay = 0, status_server = 0, 
max_request_time = 30, cleanup_delay = 5, max_requests = 1024, kill_unresponsive_children = 0, do_lower_user = 0x0, do_lower_pass = 0x0, 
do_nospace_user = 0x0, do_nospace_pass = 0x0, nospace_time = 0x0, log_file = 0x8066560 "/var/log/freeradius/radius.log", checkrad = 0x0, 
pid_file = 0x8066588 "/var/run/freeradius/freeradius.pid", uid_name = 0x0, gid_name = 0x0, listen = 0x8069630, config = 0x8066088, 
clients = 0x810a528, realms = 0x0}
(gdb) quit


More information about the Freeradius-Users mailing list