"Fossies" - the Fresh Open Source Software Archive

Member "xinetd-" (20 Jun 2018, 44217 Bytes) of package /linux/misc/xinetd-

As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "CHANGELOG": 2.3.15_vs_2.3.15.4.

    2 This file describes the changes to xinetd. The base version is 2.0.0.
    4 2.0.0: (not released)
    6 2.0.1: (not released)
    8 2.0.2:
    9 	Changes to the Makefile.
   10 	Trivial mods to the usage() function
   12 2.0.3:
   13 	Changes to the Makefile.
   14 	Fixed a bug in the usage() function
   16 2.0.4:
   17 	Distribution versions of the Makefile no longer contain any 
   18 	references to options.opt
   20 2.0.5:
   21 	1) Clarified what an "unlisted RPC service" is in the man page
   22 	2) Fixed a bug in remote_address_check which caused access to be denied
   23 		for all hosts if no_access was set and only_from was not set.
   24 	3) Fixed a bug which caused arbitrary syslog levels if the log_type
   25 		was specified as SYSLOG in the "defaults" entry
   27 2.0.6:
   28 	bug fix in child.c: replaced strx_sprint with strx_print when naming
   29 	interceptor processes
   32 -------------------------------------------------------------------------------
   34 2.1.0: (not released)
   35 	This was mostly a clean-up of 2.0
   36 	List of changes:
   38 	A. The man page has been split into 3 parts:
   39 			xinetd.man			:	man page describing the program
   40 			xinetd.conf.man	:	man page describing the configuration file 
   41 										This file now includes figures about the
   42 										overhead of interception.
   43 			xinetd.log.man		:	man page describing the log file
   44 	B. New service attributes
   45 			rpc_number			: to support unlisted RPC services
   46 			nice					: to set the nice value of forked servers
   47 	C. The IDONLY service flag was added
   48 	D. Now uses the timer library unless NO_TIMERS is defined. If NO_TIMERS
   49 		is not defined, the following are also available:
   50 			a) a new option, -cc, to do periodic consistency checks
   51 			b) timeout for reconfiguration
   52 	E.	Configuration file man page now mentions that access control is 
   53 		based on IP-address instead of domain address.
   54 	F.	The interception code now sets the TCP_NODELAY option.
   55 	G. The timeout when contacting a remote identification server is
   56 		configurable both when the service request has been accepted and 
   57 		when the request is rejected. In the former case it defaults to
   58 		infinity while in the latter it defaults to 30 sec.
   59 	H. The log line ids are now constants in an include file.
   60 	I. The fsma library is no longer used.
   61 	J. Most structure fields were renamed; certain functions were renamed too.
   62 		Access to structure fields is now via macros.
   63 	K. A bug in not restoring the number of descriptors to the soft limit
   64 		was fixed.
   65 	L. The -pid option works
   66 	M. New internal services:
   67 			"servers"		: lists active servers
   68 			"services"		: lists active services
   70 2.1.1:
   71 	xinetd produces more meaningful messages if it can't start logging
   73 2.1.2:
   74 	Fixed 2 bugs:
   75 		1) xinetd would request a port number for unlisted RPC services
   76 			One could get around this by simply specifying the port attribute
   77 			for the service; the specified value would be ignored anyway.
   78 		2) xinetd initialization might fail sometimes in function msg_init()
   79 			syslog logging was specified (i.e. the option -syslog was used)
   80 			The cause of this bug was that the 
   81 				xlog_control( xlog, XLOG_GETFD, &fd ) 
   82 			operation will not fail for xlogs connected to syslog and
   83 			the value of 'fd' would be used in the subsequent fcntl(). That
   84 			value is arbitrary since 'fd' is a local variable.
   85 			If 'fd' did not happen to refer to an open descriptor, the program 
   86 			would terminate since the fcntl() would fail (btw, the success
   87 			of the fcntl() call would be harmless if 'fd' happened to
   88 			refer to an open descriptor).
   90 2.1.3:
   91 	Bug fix:
   92 		only_from/no_access addresses would get inverted on little-endian
   93 		machines when such addresses were specified using the numeric notation
   94 		(for example, This bug was in the numeric_addr function
   95 		which did not convert the result of inet_addr to host-byte-order.
   96 		A work around for the bug would be to use the factorized address 
   97 		notation (for example, 128.138.45.{3})
   99 2.1.4:
  100 	Bug fixes:
  101 		1) in dgram_echo(), sin_len was not being set before the invocation of
  102 			recvfrom
  103 		2) in finger_shutdown(), it was possible for Srdline() to return NULL
  104 			(if the remote end would close the socket without sending anything).
  105 			If the RECORD option was set in the log_on_failure flags, this
  106 			would cause the forked xinetd process which did the recording to
  107 			die since it would try to dereference a NULL pointer.
  110 2.1.5:
  111 	Bug fixes:
  112 		1) in exec_server() service descriptor might be closed when
  113 		   execing server. This made it impossible to start servers
  114 			for 'nowait' services.  The bug occurred only Ultrix version
  115 			4.3a or (probably) later (bug discovered and fix provided
  116 			by doug@seas.smu.edu)
  118 		2) for systems that supported supplementary group id's, the
  119 			set_credentials() function did not set those group id's
  120 			(they were being inherited from xinetd). Now initgroups(3)
  121 			is called to set the supplementary group id's properly.
  122 			(bug discovered and fix provided by maf+@osu.edu)
  124 2.1.6:
  125 	Bug fixes:
  126 		1) xinetd will crash after reconfiguration if there is a running
  127 			server for a service that was removed from the configuration and
  128 			which logs on exit.
  129 		2) xinetd forked process falls in infinite loop if identd server
  130 			sends a reply that is missing the ending CR-LF.
  131 			(bug discovered and fix provided by Laurent.Wacrenier@gin.obspm.fr).
  133 	We also change the LOGUSER_SUCCESS_TIMEOUT constant in config.h from
  134 	0 seconds (i.e. infinite timeout) to 30 seconds. This avoids infinite
  135 	waits in case the remote host does not send a RST reply when we attempt
  136 	to connect to the IDENTD port, and there is no server listening at
  137 	that port.
  140 2.1.7:
  141 	Bug fix: the HOST flag in the 'log_on_success' attribute was ignored;
  142 				the code was incorrectly checking if the HOST flag was
  143 				set in the log_on_failure attribute
  144 				(bug discovered by frolich@corrine.cpc.cs.ucf.edu)
  147 	Added support for TCP redirect to a remote host.
  148 		--bbraun
  151 	Added support for binding to specific interface.
  152 		--bbraun
  155 	Changed redirect so that a remote port can be specified as well.
  156 		--bbraun
  158 10/98:
  159 	Changed use of varargs to be more modern (and actually work on IRIX 6.5)
  160 	Added use of style address ranges for access control
  161 		--bbraun
  162 11/98:
  163 	Fixed stupid error with logging of ip addresses.  
  164 	Pointed out by Todd R. Eigenschink
  165 11/98:
  166 	Fixed to compile correctly under HPUX
  167 		Includes fixes from Pavel Roskin <pavel_roskin@geocities.com>
  168 11/98:
  169 	Fixed to compile correctly under BSDi
  170 11/98:
  171 	Fixed Linux libc5 to work with RPC.
  172 		Pointed out by Frodo Looijaard <frodol@dds.nl>
  173 11/98:
  174 	Minor jump because I went through many revisions of testing things
  175 	- Fixed littleendian bug with style access control
  176 	- Added support for inet_addr instead of inet_aton, as Solaris 2.5.1
  177 	does not support inet_aton.
  178 		Both the previous bugs were found with the help of
  179 			Thomas E. (tht@inlink.com)
  180 	- Went entirely to stdarg.h version of variable arguement handling,
  181 	since some newer platforms doen't handle varargs.h style very
  182 	gracefully.  If this breaks too many older architectures I'll
  183 	ifdef all the old stuff back in...
  184 11/98:
  185 	Fixed /tmp/xinetd.dump symlink problem pointed out on 
  186 		BugTraq by Balazs Nagy <julian7@KVA.HU>
  187 1/99:
  188 	Fixed compilation problems on BSD systems.
  189 1/99:
  190 	Fixed compilation problems on AIX 4.1.x/powerpc
  191 3/99:
  192 	Fixed compilation problems on FreeBSD 
  193 		Thanks to  Sascha Schumann <schumann@schell.de>
  194 	Fixed a bug in sio/sprint.c
  195 		Thanks to Steven Stanfield <sstanf@reston.wcom.net>
  196 4/99:
  197 	Rudimentary administrative interface added (use the service name
  198 		xadmin).
  199 	Supports the "banner" directive, which is the name of the file
  200 		that will be splatted when a connection is denied.
  201 	Has a fixed open() on the dump file that is much better.
  202 		Thanks to Steven Stanfield <sstanf@reston.wcom.net>
  203 	$REMOTE_HOST environment variable is set to the name of the
  204 		remote host.  Currently, if no name is available, it is set to NULL.
  205 4/99:
  206 	Fixed a problem with shells that don't define $PWD
  207 4/99:
  208 	Fixed a problem I introduced with automagic port selection
  209 	If both a port and a protocol are specified, no checks are done.
  210 		xinetd will believe the config, even if /etc/services says 
  211 		otherwise.
  212 	xadmin service is an internal service now, just like tcp echo, etc.
  213 		Use the INTERNAL flag.
  214 	xadmin service now just calls server_dump when a "show run" command
  215 		is executed.
  216 	Added a NAMEINARGS flag, so that you can use tcpd with xinetd.
  217 		Normally, xinetd takes argv[0] from the "server" directive.
  218 		This prevents tcpd from working properly.  Now, you can use
  219 		tcp wrappers like this:
  220 		service telnet
  221 		{
  222 			scoket_type = stream
  223 			protocol = tcp
  224 			flags = NAMEINARGS
  225 			wait = no
  226 			user = root
  227 			server = /usr/libexec/tcpd
  228 			server_args = /usr/libexec/telnetd
  229 		}
  230 2.1.86b4 4/99:
  231         Added support for libwrap.  Compile with --with-libwrap.  Access 
  232         checking is done with libwrap (if compiled in) first, then with 
  233         xinetd's internal access control.
  234 4/99:
  235 	Some versions of libwrap needed allow_severity.  Added it.
  236 		Changed severity to INFO from WARNING.
  237 7/99:
  238 	Added ability to use names for the bind and redirect
  239 		functions.  They lookup the name, and use the
  240 		first address it returns.  They only do the
  241 		lookup once.
  242 	Added "interface" as an alias to "bind"
  243 	Fixed potential bug with redirection losing data. 
  244 		Pointed out by Solar Designer
  245 	Fixed potential bug in the parsing of xadmin commands.
  246 		Pointed out by Solar Designer
  247 	Changed default location of the dump file to /var/run/xinetd.dump
  248 		configurable in config.h
  249 	Added Solar Designer's per_source feature.  Allows you to limit
  250 		the number of services spawned per source address.
  251 	Added Solar Designer's supplementary groups fix.
  252 7/99:
  253 	Updated the make files to not require absolute paths.  This
  254 		will help with people having problems with the LOCATION
  255 		Makefile variable.
  256 	Updated configure to compile properly with Debian's version
  257 		of libwrap and glibc (look for yp_get_default_domain in nsl)
  258 	If banner directive is used, banner is printed regardless of access
  259 		control.  It is actually printed before access control check 
  260 		take place.  banner_success and banner_fail are added to 
  261 		explicitly give a message depending on access control.
  262 	Added banner_success option.  This is a banner that is printed when
  263 		access to the service is granted.  This is before any attempt
  264 		to execute the server has been made.  The service may still fail
  265 		but it will not be for access control reasons.
  266 	Added banner_fail option.  This is a banner that is printed when 
  267 		access to the service has been denied.  This allows you to 
  268 		inform your users that they are doing something bad and they 
  269 		shouldn't be doing it anymore.
  270 	Added max_load option.  This option allows the operator to specify
  271 		the max load at which to run the service.  If the machine 
  272 		reaches the specified max load level, connections are denied to
  273 		that service.  Each service can have a different max_load, and 
  274 		it can be listed in the default service.  Linux is working,
  275 		Solaris is kind of wierd.  Solaris people should try it, but
  276 		don't use it as a real security mechanism yet.  2.6 and 2.7 
  277 		should be fine.  I'm not sure about 2.5.1 and earlier.
  278 10/99:
  279 	Fixed per_source to actually work properly.
  280 	Added the NODELAY flag.  This will set the TCP_NODELAY sockopt
  281 		on the socket.  If the service is not a TCP service, then
  282 		this flag has no effect.
  283 	Updated the man page with more explicit definition of the "groups"
  284 		attribute.
  285 	Includes xconv.pl to replace itox.  xconv.pl handles most of the
  286 		inetd.conf files I've seen, including the use of tcpd,
  287 		even though it is recommended that you compile with
  288 		libwrap instead of using tcpd.
  289 	Includes a man page to itox donated by Norbert Veber of Debian.
  290 	Updates to configure and Makefile to better handle the configuration
  291 		of install directories.  Again, changes donated by Debian group.
  292 	Updates to itox to handle user.group syntax and checking on "wait".
  293 11/99
  294 	Fixed a problem with the banner_fail parser.
  295 	Added IPv6 support to xinetd.
  296 12/99
  297 	Added the option "cps".  This allows you to disable a service if
  298 		the rate of incoming connections is too great.  This number 
  299 		may be set higher than the instances or per_source number.
  300 		This is used as a last ditch measure, if someone is bombarding
  301 		a service, and either 1) logs are piling up because of failed
  302 		attempts, or 2) way too much is happening, ditch the service.
  303 		This actually does a close() on the socket, so nothing is
  304 		listening to that port anymore.  All connections will fail.
  305 12/99
  306 	Made the options mask_t an unsigned long long (64bits on x86)
  307 		instead of an unsigned.  xinetd was running out of bits
  308 		to store options in.  Eventually, a real solution will
  309 		need to be implemented, but this works for the short term.
  310 		This may break on compilers that don't understand 
  311 		long long's.  Be aware.  Most modern compilers are ok.
  312 	Added the option "enabled", similar to the "disabled" function.
  313 		If "enabled" is used, only the services listed in the
  314 		enabled line are available, regardless of what other
  315 		services are configured.
  316 	Changed the behavior of only_from and no_access.  First, if you
  317 		specify a host by _name_ in only_from or no_access, a lookup
  318 		happens when a client connects.  The _canonical_ name that
  319 		is returned is compared to the name specified in the access
  320 		control option.  If the _names_ match, access is granted
  321 		or denied.  See the readme for more information.
  322 	Added the ability to specify .domain.com to the access control
  323 		options.  This is very similar to tcp wrapper's method
  324 		of specifying domain access.  If the connecting client's
  325 		reverse lookup returns a name that ends in .domain.com
  326 		then access is granted or denied.  See the readme for
  327 		more information.
  328 12/99
  329 	The enable function didn't work.  It worked for one entry, but
  330 		more than 1 entry would not be recognized and xinetd
  331 		would exit with no services available.  I believe this
  332 		has been fixed.
  333 	limits.h is included in parsers.c now, because of LONG_MIN and
  334 		LONG_MAX.  Some setups would automagically include limits.h
  335 		through the other include files, and some wouldn't.  This
  336 		should fix compile problems on those that don't.
  337 	Added a check for sys_siglist in the configuration script.  This
  338 		is better than statically defining #ifdef's in signals.c.
  339 12/99
  340 	Fixed numeric addresses being entered in the only_from field.
  341 		host_addr parser was identifying them and marking them as
  342 		HOST_ADDRs instead of NUMERIC_ADDRS.
  343 1/100
  344 	Fixed year formatting in log to print 00 instead of 100.
  345 1/00
  346 	Fixed the TIMEOFFSET macro in builtins.c so the 'time' service printed
  347 		the correct output.
  348 1/00
  349 	Fixed a problem where banners would not work saying "could not find
  350 		banner: bannername<garbage here>".
  351 1/00
  352 	The dump file was logging the ip address incorrectly for only_from
  353 		addresses.  For some reason xntoa() was reporting the wrong
  354 		address.  Changed to inet_ntoa, and works fine.
  355 	BSDI 4.1 was not compiling correctly, "inet_ntoa" not found.
  356 		This is because BSDI4.x switched to using bind 8 resolver
  357 		libraries, so you have to include <arpa/inet.h> to #define
  358 		all these functions to __func_name.  
  359 	Some BSD's don't let you set the group permissions of a process to NULL,
  360 		so you get the setgroups(0,NULL) error whenever a connection
  361 		is made.  To avoid this, set 'groups = yes' and be aware of the
  362 		extra group permissions the server may be running with.  A message
  363 		to this effect has been added to the syslog error, so confusion is
  364 		minimized.
  365 2/00
  366 	Fixed a syntax error when compiling IPv6 support.
  367 2/00
  368 	Always call no_control_tty().  This calls setsid() and fixes a problem
  369 		under FreeBSD.
  370 2/00
  371 	Bumped version number.
  373 	Added the "include" directive.  You can now include other files
  374 		into your .conf file.  "include filename"
  375 	Added preliminary an inetd compatibility mode.  Start xinetd
  376 		with -inetd-compat and specify /etc/inetd.conf as your
  377 		configuration file.
  379 	Fixed up RPC support
  381 	Incorporated patches for Mac OS X and Tru64 support.
  382 	Also incorporated a patch for the includedir directive.
  384 	Incorporated a patch to allow logging to the AUTHPRIV level.
  385 		patch from Trond Eivind Glomsr.
  386 	Numerous cleanups.  Mostly superficial, but gets rid of *lots*
  387 		of compile warnings when using -Wall.  These cleanups
  388 		may have affected portability issues...
  389 	Support for Darwin!  Now compiles and runs fine.  Note that
  390 		xinetd doing mmap didn't work right (always lost the
  391 		first byte of the file).  Workaround is to disable
  392 		mmapped io for Darwin.
  393 	Added a DISABLE flag for services, that will prevent a service
  394 		from starting.
  395 	Added a "disable" boolean for services that does the same thing
  396 		as the DISABLE flag.
  397 	"groups" can now be specified in the defaults section.
  399 	Implemented better error checking in redirect.c, so hopefully
  400 		it will detect error conditions more reliably and
  401 		prevent lots of child xinetd's running unecisarily.
  402 	Ramon Krikken sent a redirector implementation that replaced
  403 		the two process redirection with a single process using
  404 		select.  Modifications to his patch were integrated.
  405 	includedir parses only regular files, or symlinks to regular
  406 		files, that do not begin with '.'.  
  407 	Added includedir to the xinetd.conf man page.
  409 	Fixed a bug in the access lists.  If you specified a host by
  410 		name in only_from, any connection from a host without
  411 		a reverse dns entry would be accepted.
  413 	Now allows you to specify multiple instances of the same service
  414 		as long as all but one is disabled.
  415 	Fixed a documentation issue in the xinetd.conf man page.
  416 		The user attribute can be specified for an unlisted
  417 		service, just not an internal service.
  418 	When including files with "includedir", it parses the files
  419 		in alphabetical order, as determined by strcmp().
  420 	Under Solaris, I've removed the no_control_tty() call in
  421 		child.c.  This was causing some confusion.  xinetd
  422 		its self still calls no_control_tty().
  423 	Fixed a compile error with --with-inet6
  424 	Changed the exiting behavior: xinetd now kills only the
  425 		RPC services and internal services (like redir) when
  426 		it exits (or does a hard reconfigure).  This keeps things
  427 		like telnet sessions open across restarts of xinetd
  428 		(assuming you are using REUSE).
  430 	Fixed a potential bug in parsing of filenames from includedir.
  431 	Possibly fixed tcp wait=yes handling.
  432 	Fixed man pages so they say they're installed in the sections
  433 		they are really installed into.
  434 	Added .cvsignore to empty directories
  436 	Hopefully fixed a few compile errors on architectures such
  437 		as DUNIX and Darwin.
  438 	When compiled with libwrap support, xinetd passes the server
  439 		name to be checked in hosts.{allow,deny} instead of
  440 		the service name.  Behavior should now match tcpd.
  441 	Incorporated Trond's pidfile patch.  You can now specify -pidfile
  442 		on the command line, and xinetd will make a 
  443 		/var/run/xinetd.pid file.  Note that this _replaces_ the
  444 		-pid option.
  446 	Removed '\n's from syslog messages.  Also moved some of the 
  447 		syslog()'s to pasemsg()'s.
  448 	Added a patch from mob@de.uu.net to make the bind attribute 
  449 		specifiable in the default section.
  450 	Added the KEEPALIVE flag, which sets the SO_KEEPALIVE socketopt
  451 		on tcp sockets.
  452 	Added a patch from Trond at RedHat that will hopefully fix some
  453 		of the remaining tcp wait=yes problems.
  454 	More paranoid handling of access control in addr.c
  455 	Always allow access to the internal pseudo services.
  456 	For internal services and libwrap, access control is performed 
  457 		by the service name (instead of the server, since there
  458 		is no server).
  459 	The last two entries together fix problems with segfaults when
  460 		doing access control.
  461 	If a hostname is specified in only_from, xinetd will try to 
  462 		match the connecting address to any of the IP addresses
  463 		associated with the hostname in only_from.
  464 	For redirection services with libwrap support, the service name
  465 		is used for access control rather than the server name, since
  466 		the server name makes no sense.
  468 	Remove the pidfile when exiting.
  469 	Added a -stayalive option to keep xinetd running even when there are
  470 		no services available.
  472 	Added paranoid access control for the udp internal servers.
  473 		Do not reply to udp packets on dangerous ports 
  474 		(avoid looping echo services).
  475 	For libwrap, if the server isn't specified use the service
  476 		_id_ instead of the service name (this usually is the
  477 		service name).  This makes more sense for things like
  478 		the internal servers (echo-stream instead of using echo,
  479 		which will get echo-stream and echo-dgram)
  480 	Included an rlimit patch from Nick Burrett, which should help
  481 		keep some nasty users at bay.  He's even updated the
  482 		man page.  This patch brings a tear to my eye.
  485 	Moved the libwrap and address checking to the child process.
  486 		The purpose of this is to move the expensive checking
  487 		into the child process (such as name resolution, exec()'ing,
  488 		etc), but leave some of the lighter weigh checking in the
  489 		parent in an attempt to prevent DoS'.
  490 	Incorporated Charles Levert's NOLIBWRAP patch.  This adds a flag,
  491 		NOLIBWRAP, which will turn off libwrap access control for
  492 		a single service.  This is a good thing when you're wanting
  493 		to use tcpd with a service.  It's also useful when wanting
  494 		libwrap for some lesser used services, but the high volume
  495 		ones need higher performance.
  496 	Included Motonobu Ichimura's patches for v6.  The first one sets
  497 		v6 services with incoming v4mapped or compatible addresses
  498 		to AF_INET instead of AF_INET6.  This should make incoming
  499 		v4 connections to v4 servers work correctly.
  500 	Motonobu Ichimura's second patch adds the service attribute
  501 		v6config, which allows a v6 service to only accept v6 
  502 		connections.
  503 	Moved most of the configured defines into a config.h.
  504 		This involved renaming xinetd/config.h to xinetd/xconfig.h
  505 	The configure system actually works with --srcdir now.
  506 		You can build xinetd from a directory other than the source
  507 		directory now.
  508 	Minor cleanups to remove warnings with -Wall
  510 5/20/2001
  511 	Added Steve Grubb's SENSOR patch which provides a SENSOR flag and 
  512 		deny_time attribute. These will help to stop script kiddies 
  513 		doing port scans by turning off all access to all services 
  514 		on all IP addresses until the timeout expires.
  515 	Cleaned up pset stuff in the lib section.
  516 	Continued fixing warnings produced by -Wall
  517 	Added "child" security check for internal services.
  518 	Fixed some possible memory leaks.
  519 	Changed snprintf to the internal strx_nprint() function, standardizing
  520 		on that.  Removed the need for the snprintf() implementation 
  521 		for systems lacking snprintf().
  522 	Another attempt to fix the tcp wait condition.
  523 		TCP wait services were being accept()'d when they shouldn't
  524 		This caused services such as linuxconf, which accept()
  525 		their own connections, to fail.
  526 	Fixed a problem with displaying bound and redirected addresses in
  527 		the xadmin service.
  528 	Don't print banner always and banner success twice.
  529 	Converted to ANSI C style prototypes instead of K&R.
  530 	Use spaces instead of 3 character tabs.
  531 	Use POSIX types for network, time, and other length specific purposes.
  532 	Make the initial log message of compile time options atomic.
  533 	When grow()'ing the environment variables, initialize things to 
  534 		prevent bad pointers.
  535 	Mitigated consequences of possible SIGCHLD race with intercepted 
  536 		services.
  537 	Removed all remnants of varargs syntax, and have completely moved
  538 		to the stdarg style syntax.
  539 	Added BSD/OS loadavg support from Robert Brewer at LavaNet.
  540 	Fixed a potential buffer overflow when using USERID.
  541 		Found by zen-parse.
  542 	Added permissions to the pidfile's open call.
  543 		Suggested by zen-parse.
  544 	Changed xinetd's umask to 022 from 0.
  545 6/13/2001
  546 	Attempted to fix IPv6 support broken in the pre15 release. -Steve Grubb
  547 	Moved remote_address_check ahead of the libwrap checks.  This is needed
  548 		so that SENSORS work without modifying the hosts.allow file if 
  549 		tcp_wrappers is compiled in. -Steve Grubb
  550 	Added missing includes to several library files
  551 	Fixed bug where DISABLE flag was being set/cleared in xflags rather 
  552 		than types. -Matthias Andree
  553 	Fixed memory leak in attr_check. -Steve Grubb
  554         Continued converting to ANSI C prototypes. -Steve Grubb
  555         Fixed reads in service.c to continue through interupts. -Steve Grubb
  556         Corrected Includedir directive. -Solar Designer
  557 	Changed umask to OR 022 with the current umask. -Solar Designer  
  558 	Cleaned up the address list dump to format the different addresses 
  559 		types correctly. -Steve Grubb
  560 	Cleaned up parsing of address lists. -Steve Grubb
  561 	Integrated support for building on OS X.
  562 	Added wait/nowait support to "small services".
  563 	Fixed IPv6 support for "small services".
  564 	Added "umask" keyword to specify service's umask in octal.
  565 	Umask situation is described in the umask section of xinetd.conf.man
  566 	Inspect all configuration files. Will now emit warnings if any are 
  567 		world writeable, symlinks, or not owned by root.-Steve Grubb
  568 2.3.0
  569 	Fixed a bounds checking case in strx* functions.
  570 		Pointed out by Sebastian Krahmer.
  571 2.3.1
  572 	Reworked all headers in xinetd directory. -Steve Grubb
  573 	Fixed redirect & shutdown to read & write through signal 
  574 		interrupts. -Steve Grubb
  575 	Inspect all servers. Prints warnings for things that look funny.
  576 	Applied _many_ security and reliability fixes,
  577 		see AUDIT. -Solar Designer
  578 	Removed the Soft Reconfigure capability.  Soft Reconfigure is now
  579 		the same as Hard Reconfigure (SIGUSR1 = SIGUSR2).
  580 			-Steve Grubb
  581 	Attempt to fix segfaulting seen since 2.3.0.
  582 		-Steve Grubb
  583 	Moved the re-enable service after cps violation to run off of the 
  584 		flags system to avoid re-entrancy issues. -Steve Grubb
  585 	Only call drain if service is active. Deactivated services close 
  586 		the descriptor. -Steve Grubb
  587 	Reorganized flags to process terminating children first, -Steve Grubb
  588 2.3.2
  589 	more K&R -> ANSI prototype -Steve Grubb
  590 	Stop using C++ keywords (even though this is really C...) -Steve Grubb
  591 	Fix a heap overrun in grow().  -teg@redhat.com 
  592 	Fix a parse error with multiple explict masks.
  593 	If protocol is not specified, but socket type is, infer protocol
  594 		from socket type.  -Ahmon Dancy
  595 	Added a check to the return value of env_addstr() in child.c to
  596 		make sure we aren't exec()ing with an invalid environment.
  597 	Wrap the remaining <stdint.h> includes with autoconf macros.
  598 	Removed all unused functions. -Steve Grubb
  599 	Don't use SIGALRM for the cps directive.  Instead, do a generic
  600 		timer routine that evolves around the main event loop.
  601 2.3.3
  602 	Fixed the filelog problem of printing garbage.
  603 	Fixed the RPC parser to correctly handle RPC version ranges again.
  605 2.3.4
  606 	Removed the old flags construct and replaced it with the timers
  607 		added in 2.3.2.  This will handle multiple of the same 
  608 		signals occuring before the event loop cycles.
  609 	Removed all the old timer code that uses SIGALRM, and replace it
  610 		with the timer code from 2.3.2.  The conf timer bit the
  611 		dust along the way, since the event loop hasn't started
  612 		by the time the conf parser started.  It was never built
  613 		anyway, so not a big loss.
  614 	Made xinetd unlink its pidfile properly.
  615 		- Solar Designer
  616 	Enabled loadavg support for Darwin.
  617 	Remove the exit when user or group is specified and xinetd is not root.
  618 		Enables running xinetd as non-root again.
  619 	Fixed various portability issues:
  620 		- strerror for SunOS 4
  621 		- difftime for SunOS 4
  622 		- inet_aton for Solaris 2.5.1
  623 		- uint{16,32,64}_t for systems without them
  624 		- rlim_t for systems without them.
  625 	Moved compat.c into the portable library, where it belonged.
  626 		Added finer testing of the {e,f,g}cvt functions in autoconf.
  627 	Begin transition to combined IPv4/IPv6 support.  Add compatibility
  628 		code from OpenSSH into the portable library.
  629 	Made socket_type or protocol optional (only need to specify one)
  630 	Removed syslog()'s, replaced with internal msg().
  631 	Fixed a parsing bug when specified server is invalid.
  632 	Change the signal handling.  Signal handlers write their signal
  633 		to a pipe, which wakes up the main select(), and the
  634 		signal is then dealt with.
  635 	Removed the looping option.  The cps directive duplicated much
  636 		of the functionality.
  637 	Fixed a bug re-enabling internal wait services.
  638 	Continue syncing IPv4 and IPv6 code.
  639 		Made a flag to specify IPv4 or IPv6 based service.
  640 		Redirect currently only redirects between IPv4<->IPv4 or
  641 			IPv6<->IPv6.  It should handle IPv4<->IPv6 and 
  642 			vice versa
  643 	Fixed the reconfig case where a bind directive changes.
  644 	SIGHUP now reconfigures xinetd.  
  645 	SIGUSR1 now dumps the internal state.
  646 	SIGUSR2 still reconfigures xinetd, but will be deprecated in
  647 		future releases.
  648 	Fixed a warning of redefined SA macro with some tcp wrapper
  649 		header files.
  650 	Make the configuration keyword comparisons case insensitive.
  651 		This allows things like Service foo { blah } instead
  652 		of just service foo { blah }.
  653 	Merged IPv4 and IPv6 support.  The only difference between 
  654 		compiling with IPv6 support is that services default to
  655 		being IPv6.  Manually set the service to IPv6 (or IPv4)
  656 		with the IPv{4,6} service flags.
  657         The only_from numeric address specification works for IPv6 addresses,
  658 		and mixing IPv4 style address specifications will now match
  659 		for IPv4 mapped addresses on IPv6 services.
  660 	Fixed an environment variable setting problem.
  661 	Fixed a misuse of the sio routines in the banner routines.  This
  662 		will probably fix a variety of bugs related to banners.
  663 	More code cleanups. -Steve Grubb.
  664 	Pass the expected size of the address structure used to bind()
  665 		calls rather than the total memory allocated.
  666 	Fix some compile errors and warnings on BSD/OS.
  667 	Prevent some possible unnecissary DNS lookups.
  668 	Makefiles now accept make -j.  This is only mildly useful at the
  669 		moment, since the main chunk of xinetd blocks on all the
  670 		libraries being built first, and the libraries are small
  671 		but somewhat serialized.
  672 	Fixed a problem with the access control on builtin services.
  673 		(Introduced in the development cycle)
  674 	Removed libpq. It is no longer needed. -Steve Grubb
  675 	Removed the %n processing from __sio_converter(). It is not used and 
  676 		would cause a core dump if it was. -Steve Grubb
  677 	Make the man page match the new signal change.  - Steve Grubb
  678 	Fix some potential problems with only_from access.
  679 	Start using "const".  Go const happy.
  680 	All services now essentially default to having the REUSE flag.
  681 		The -reuse option and the REUSE flag are now silently ignored.
  682 	When dumping service configs, print out the redir config information,
  683 		also fixes a hostname lookup problem when using systems
  684 		that have a too strict getnameinfo().
  685 		Also print the CPS directive information.
  686 	Print out symbolic system names that don't have strsignal(), but do
  687 		have sys_siglist[].
  688 	Fix a potential crasher in xtimer_add().
  689 	Add %q and %ll modifiers to the sio library for displaying quad_t's or
  690 		long long's.  
  691 	Restructure the argument parsing a little to reduce global memory usage.
  692 	Fixed bug in service parameter verification. Prior versions did not 
  693 		verify that all require attributes were specified.
  694         Disable the service when a parse error is detected for its 
  695 		configuration. (Steve Grubb)
  696 2.3.5
  697 	Included patch from Trond at RedHat to check signal pipe if there are
  698 		no services running. 
  699 	Update the access_times parser to disable service if there is a parse 
  700 		error. Also corrected ti_add too. -Steve Grubb
  701         Updated all parsers to propagate errors so service will be 
  702 		disabled. -Steve Grubb
  703 	Updated internal services to check the signal pipe 
  704 		periodically. -Steve Grubb
  705 	Updated sendsig to wait for termed children so zombies aren't created
  706 		and ports are clear to rebind to on hard_reconfig. -Steve Grubb
  707         Included a patch from Hendrik Visage for a problem with ident.
  708 2.3.6
  709 	Updated only_from to 'and' both the remote address and the specified
  710 		portion if a network mask type address is used. -Steve Grubb
  711 	Updated explicit_mask to chose NUMERIC_ADDR if mask is 32. -Steve Grubb
  712 	Many parser updates. -Steve Grubb
  713 	Propogate default attributes even if not specified. log_on_success, 
  714 		log_on_failure, passenv were the main items affected by this 
  715 		problem. only_from and no_access now conform to this new
  716 		propogation technique. -Steve Grubb
  717 	Xremove now uses domain names in addition to ip addresses. -Steve Grubb
  718 	Moved sensor code into its own file and changed it to use timer
  719 		facility. -Steve Grubb
  720 	Reworked remote_addr check & addrlist_match to not cache IP addresses 
  721 		and corrected several algorithmic problems. -Steve Grubb
  722 	Off-by-one error corrected in pset_delete. -Steve Grubb
  723 	Updated attrfill to use IPv4 addresses if bind specified. -Steve Grubb
  724 	Fixed bug in libwrap code to check server better for NULL -Steve Grubb
  725 	Added better testing of configuration if NAMEINARGS flag 
  726 		is set. -Steve Grubb
  727 	Updated config.guess & config.sub. -Thomas Seyrat
  728 	Added an rpm spec file. -Steve Grubb
  729 	Removed sio/suite directory. It appears that key files have been 
  730 		deleted in the past so it no longer works. -Steve Grubb
  731         Make the file descriptor buffer allocation dynamic.  This substantially
  732                 reduces xinetd's normal memory footprint (~760KB). -Rob Braun
  733         Work around bugs in Mac OS X's getrlimit/setrlimit which causes them
  734                 to be almost unusable. -Rob Braun
  735 2.3.7
  736 	Added fixes or workarounds for issues introduced after 2.3.3
  737 		including the signal pipe leak into child processes (a
  738 		security hole). -Solar Designer
  739 	Made xinetd unlink its pidfile when there turns out to be no
  740 		services configured on reload. -Solar Designer
  741 2.3.8
  742 	Reworked redirect to better detect problems in its configuration. Also,
  743 		redirect now allows service names for port numbers. -Steve Grubb
  744 	Reworked attribute checking in confparse & updated attr.h. -Steve Grubb
  745 	Ensure that children have the default signal handlers installed.
  746 	Added support for DNS service registration ala Rendezvous.
  747 	Fixed some compile errors on Mac OS X, FreeBSD, and OpenBSD.
  748 	Added preliminary support for tcpmux -Philip Armstrong
  749 	Update the xinetd man page to document the -version option.
  750 	Now ignores the --with-inet6 compile option.
  751 		Services will default to IPv4 unless configured otherwise.
  752 	Bring back the inetd.conf parser in a different form.  Parse all
  753 		the xinetd config files first, then parse /etc/inetd.conf,
  754 		and add services from there (if it exists).
  755 		Use the -inetd_compat option to read inetd.conf.
  756 	IPv6 updates for bind_parser, only_from, and no_access. -Steve Grubb
  757 2.3.9
  758 	Fixed bug uncovered by IPv6 updates for bind parser. In the id_parser,
  759 		a test was being performed for uniqueness. It relied on the
  760 		address already being given.  However, the address may not be
  761 		known if more than one record came back from the getaddrinfo 
  762 		function call. -Steve Grubb
  763 	Added code to service_fill to resolve port if unspecified. -Steve Grubb
  764 	Consolidated duplicate services tests into check_entry. -Steve Grubb
  765 	Fixed a bug with access control & internal services.
  766 	Make sure we byteswap the value returned by time services.
  767 	Fix an omission with the tcpmux integration.
  768 	Fixed a race when there's 1 service configured and it is a wait service.
  769 2.3.10
  770 	Close the service descriptors on fork.  This only matters for internal
  771 		forking services, since anything that calls exec() will get
  772 		those closed automagically.  This will help reduce the file
  773 		discriptors used by the daemon when using some internal services
  774 	Fix a numbering bug with xinetd's internal flag representation that
  775 		was manifesting its self as all services being disabled upon
  776 		recieving a SIGUSR2 (hard reconfig)
  777 	Don't pass a hostname to dns registration calls, it'll pick a hostname
  778 		automagically.
  779 	Remove CLEANUP and other dead code.
  780 	Make sure tcp internal non-forking services close their filedescriptors.
  781 	Added syslog facilities for the xinetd log configuration to match SUS.
  782 		- Steve Grubb
  783 	Start reporting the Per Source value when dumping debugging output
  784 		- Steve Grubb
  785 	Correct the fake-getnameinfo.h to include appropriate macros.
  786 		- Steve Grubb
  787 	Up the default CPS value to 50 from 10.
  788 	Document the default CPS values in the xinetd.conf man page.
  789 	Fix a closing of the connection when there's an error handling the 
  790 		service.  - Steve Grubb
  791 	Fixed a bug in the includedir path where a reference was kept to
  792 		free()'d memory.
  793 	Fixed a bug in the consistency check mechanism where it would
  794 		report the signal pipe as a problem.
  795 	Clear memory before freeing it.  This isn't strictly necessary,
  796 		but aids in debugging.
  797 	Add the pid to debugging messages.
  798 	Remove access control calls for special services.  The access control
  799 		functions must always allow these services anyway.
  800 	Fixed a bug with reconfiguring services using the interface attribute.
  801 		-- Adam Lukosek
  802 	Fixed a bug with deallocating dns registrations.
  803 	Fixed a bug where tcp_wrappers would not identify an internal service
  804 		since the internal service has no executable.  -Steve Grubb
  805 	Sclose was being used on the config file descriptor.  Since sio
  806 		never touches the descriptor, it failed to close it.
  807 		- Steve Grubb
  808 	Fix a potential memory leak with bind_addr and service reconfig.
  809 		- Andrey Alekseyev
  810 	Fix a reconfig timing issue.
  811 		- Andrey Alekseyev
  812 2.3.11
  813 	Fix some compile time errors on Solaris
  814 	Fixed a bounds check in Sdone().  Patch from Dmitry V. Levin
  815 	Added FreeBSD loadavg support.  Patch from Vanilla I. Shu
  816 	TCPMUX parser updates. -Steve Grubb
  817 	TCPMUX was causing core dumps due to changes made in 2.3.10's 
  818 		child_process(), reverted changes. -Philip Armstrong
  819 	Remove RECORD logging option. -Steve Grubb
  820 	Change Sclose to make sure it always closes the fd. -Steve Grubb
  821 	Added better error handling to filelog.c. -Steve Grubb
  822 	Error messages now go to syslog instead of stderr in 
  823 		strparse.c. -Steve Grubb
  824 	Fixed memory leaks found with valgrind. -Steve Grubb
  825 	Correct problems with bind specified in the default 
  826 		section. -Steve Grubb
  827 	Use Sclose to close banner commands. -Jay Fenlason
  828 	Correct banner to match man pages. -Jay Fenlason
  829 2.3.12
  830 	Cleanup some signal handling if not defined. -MARUYAMA Shinichi
  831 	Make ident protocol work properly for multi-homed hosts. -Alan Sundell
  832 	Code cleanup for const warnings. -Steve Grubb
  833 	Make redirect protocol independent. -Cougar
  834 	Make reconfig iterate over all services. Some may be in "not started"
  835 		state and were being missed. -Steve Grubb
  836 	Make redirected, forking builtins, & tcpmux close all listening
  837 		descriptors so reconfig works. -Jay Fenlason
  838 	Add support for the IPV6_V6ONLY socket option.  Don't assume
  839 		a default setting, as the default seems to be in flux.
  840 	Address compare in readjust was wrong. Its now corrected to handle
  841 		each address family separately. -Steve Grubb
  842 	Add command line option to not fork. This will allow xinetd to be
  843 		started by init or daemontools. -Matthias Andree
  844 	Fixed a leak in reconfig. If log_type = file is used for a service and
  845 		SIGHUP is sent to xinetd, it leaked a file descriptor and 
  846 		44 bytes of memory per service using FILE. -Steve Grubb
  847 	Change all close() calls to Sclose() to prevent future 
  848 		problems. -Steve Grubb
  849 	Fixed bug if service name is unparsable and in an included directory
  850 		that caused xinetd to core dump. -Steve Grubb
  851 	Fixed bug where address lists had "version" uninitialized when the 
  852 		list used hostnames with no dots in the name. -Steve Grubb
  853 	Numerous memory leaks when parsing errors occurred. -Steve Grubb
  854 	Remove the servers and xadmin internal services.
  855 	Update addrlist_match to use the address part of the IPv6 address
  856 		structure. -Christof Meerwald 
  857 	Correct looping problems for udp connections rejected by the child
  858 		access controls. -Steve Grubb
  859 	Added TRAFFIC logging option to report total bytes in and out for a 
  860 		redirected service. -Christof Meerwald 
  861 	Correct a double-free condition if a retry was scheduled. -Steve Grubb
  862 	Add filename to parse messages. -Steve Grubb
  863 	Improve port error messages after parsing. -Steve Grubb
  864 	Sclose dump_fd if SIO error causes dump abort. -Steve Grubb
  865 	Smorefds wasn't allocating the proper amount of sio descriptor space
  866 		if the fd was > 5 over its last known fd. -Steve Grubb
  867 2.3.13
  868 	Add NULL entry to success_log_options to properly end the
  869 		 nvlist. -Steve Grubb
  870 	Portability updates to libportable.h. -Matthias Andree
  871 	Occasionally Smorefds didn't allocate more fds as 
  872 		expected. -Jay Fenlason
  873 	Address list parsing considered the comma in factorized addresses to be
  874 		an error. Updated test to allow factorized address. -Steve Grubb
  875 	When parsing inet.conf, the filename wasn't being set for subsequent 
  876 		messages. -Steve Grubb
  877 	Fix addrlist_match to correctly handle IPv4 mapped IPv6 addresses.
  878 		-Christof Meerwald
  879 	Fixed a bug where reloading configuration would core dump if file 
  880 		logging was enabled in defaults and a connection existed when
  881 		SIGHUP was received. -Steve Grubb
  882 	If too many connections hit and exhausts the file descriptors 
  883 		such that accept fails, deactivate the service like the 
  884 		cps access control does. This problem was reported 
  885 		by David Cook. -Steve Grubb
  886 	Updated rpm.spec file and added default config files to contrib 
  887 		directory. -Steve Grubb
  888 	Allow group & user to be specified by numeric value. -Steve Grubb
  890 2.3.14
  891 	Applied patch from Art Haas for gcc 3.5 compat.
  892 	Flush the descriptor after writing a banner. -Jay Fenlason
  893 	Don't assume char is signed in the udp drain() function -Don Provan
  894 	If log remote user is on, a descriptor between 0-2 is likely to
  895 		be opened. Call msg_suspend before dup'ing socket to
  896 		avoid this bug. -Glen Johnson
  897 	Added confparse() RPC patch from RedHat's RHEL4 srpm.
  898 	Fixed some service release bugs with accesses to dangling pointers.
  899 	Updated BACKLOG to 64 from 7
  900 	Updated xconv.pl to understand ":" in inetd.conf files from
  901 		FreeBSD ports patch.
  902 	Added howl support for mdns advertising.
  903 	Added a libwrap service attribute to specify the service name
  904 		to check access via libwrap.
  905 	Make some type cleanups to fix some warnings.
  906 	Parse things as unsigned instead of signed where it makes sense.
  907 		Based on a patch from Tony Ernst.
  908 	Remove the <1024 port check for UDP builtin services.
  909 		This check has been rather antiquated for years.
  911 2.3.15
  912 	If the address we're binding to is a multicast address, do the
  913 		multicast join.
  914 	Merge the Fedora patch to turn off libwrap processing on tcp
  915 		rpc services. Patch xinetd-2.3.12-tcp_rpc.patch.
  916 	Merge the Fedora patch to add labeled networking.
  917 		Patch xinetd-2.3.14-label.patch r1.4.
  918 	Merge the Fedora patch to fix getpeercon() for labeled networking
  919 		in MLS environments.  
  920 		Patch xinetd-2.3.14-contextconf.patch r1.1
  921 	Merge the Fedora patch for int->ssize_t. 
  922 		Patch xinetd-2.3.14-ssize_t.patch r1.1
  923 		Some modifications to this patch were necessary.
  924 	Change compiler flags, -Wconversion generates excessive and
  925 		unnecessary warnings with gcc, particularly all
  926 		cases of ntohs(uint16_t).
  927 		http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6614
  928 		Additionally add -Wno-unused to prevent unnecessary
  929 		warnings regarding unused function parameters when
  930 		the function is a callback conforming to a standard
  931 		interface.
  932 	Change version number to 2.3.15devel, indicating an interim
  933 		developmental source snapshot.
  934 	Merge patch from Thomas Swan regarding CVE-2012-0862
  936 	Remove unused variables a bit
  937 	Restructure the repository for saner file locations
  938 	Redo buildsystem for proper autotools
  939 	Include patches from SUSE, Debian, and Fedora from their packages
  940 	Remove HOWL support completely
  941 	Remove deprecated compatibility detections that are mostly true
  942 	Enable travis build to see if we build on osx (bsd) and linux
  943 	Add possibility to use POLL instead of FD code to alocate