sockets in the situation where all of the following are true:
* /etc/syslogd.conf contained forwarding actions when we were
started up or when we last received a HUP
* /etc/syslogd.conf has had all forwarding actions removed
* we are running with -s
and we receive a HUP.
request:
instead of the -S flag, fix the -s flag to not open a socket
if there are no forwarding rules in /etc/syslog.conf
The behavior of syslogd when -s is specified and there are forwarding rules
should still be made cleaner.
in man page and comments -- for some time it has no longer prevents
an inet socket from being opened, just caused it to be ignored
2.) Fix this problem with `-s' -- syslogd always opens an inet socket, even if
-s is specified and it has nowhere to send to. This socket is then
shutdown(), but there is no way to not have this socket open.
Users setting up paranoid installations can now specify `-S' which
prevents any non-unix-domain sockets from being opened, even if
forwarding is specified in /etc/syslogd.conf.
As per the previous fix, this is not made the default for `-s', as it
also prevents syslogd from forwarding log messages.
3.) document the above in the man page and usage.
Justification: in light of the possibility of future DoS attacks, or the
desire to set up a machine which is relatively uninformative in the face
of port scans, users may quite legitimately want to control what sockets
are open on their machine. Telling such users that they cannot run
syslogd is non-ideal.
on each of them, and don't bother listening on them. this allows messages
to be forwarded even with -s enabled.
XXX: not 100% sure if this is susceptable to a DoS, e.g someone filling
up kernel buffers with a backlog of packets not being read, but shutdown(2)
should prevent that even if it possibly doesn't at this time.
* minor KNF
if given this). this is extremely useful for chrooted daemons that
still want to create log entries via a local mechanism.
- create a new -P option that takes a filename of log sockets (equiv.
of calling syslogd which -p <each line of file>. this is useful
for the case of many chroot areas and keeping this information in
one place rather than having to remember it all.
if no -p options are given, the default (_PATH_LOG) is used as normal.
- ensure hostname from gethostname() is nul-terminated in all cases
- minor KNF
- use MAXHOSTNAMELEN over various other values/defines
- be safe will buffers that hold hostnames