Commit Graph

151 Commits

Author SHA1 Message Date
dwmalone
7383805917 Fix constness warning introduced in syslog.h 1.21. 2001-05-21 22:13:55 +00:00
ru
95f6793be4 mdoc(7) police: uppercase abbreviations in revision 1.34. 2001-05-16 09:43:48 +00:00
dwmalone
5cdcaadd37 Add the ability to specify alternate PID file for syslogd.
PR:		25784
Submitted by:	Jon Villarreal <jonv@ivmg.net>
Reviewed by:	iedowse
2001-05-10 15:48:33 +00:00
ru
ab86af99f4 mdoc(7) police: removed hard sentence break. 2001-04-04 11:33:01 +00:00
cwt
a7847b5606 Document LOG_CONSOLE. 2001-03-27 19:55:53 +00:00
ru
afd506414e - Backout botched attempt to introduce MANSECT feature.
- MAN[1-9] -> MAN.
2001-03-26 14:42:20 +00:00
brian
b80431a105 MAXHOSTNAMELEN includes the NUL 2001-03-09 21:24:13 +00:00
ru
9f97905571 Prepare for mdocNG. 2001-02-26 09:05:48 +00:00
dwmalone
72311a2dd2 This seems to stop syslog console messages looping. The problem
is that LOG_FAC doesn't do quite what you think it does.

PR:		24704
2001-02-04 15:16:08 +00:00
ru
66cd8f698e mdoc(7) police: split punctuation characters + misc fixes. 2001-02-01 16:44:04 +00:00
ru
4bb5f49662 Prepare for mdoc(7)NG. 2000-12-27 15:30:30 +00:00
ru
478cddba1f mdoc(7) police: document IPv6 options in the SYNOPSIS. 2000-12-18 08:42:58 +00:00
ume
6b337143f0 IPv6 support for syslogd.
Reviewed by:	freebsd-current
Obtained from:	NetBSD
2000-12-16 18:25:48 +00:00
phk
bf5f996644 Add the "LOG_CONSOLE" facility and tell syslogd to not log it on
console devices.
2000-11-25 21:00:58 +00:00
ru
71e2293ad4 mdoc(7) police: use the new features of the Nm macro. 2000-11-20 20:10:44 +00:00
dwmalone
40ef4e0113 Syslogd normally converts messages of facility kern to facility
user unless they come directly from the kernel. Document this and
add a flag to syslogd which prevents this conversion.

Sort getopt args while I'm at it.

PR:		21788
Submitted by:	Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
2000-10-17 10:19:42 +00:00
dwmalone
78d7baf251 Fix spelling of comparison. 2000-10-17 10:14:51 +00:00
alfred
a4ea0721fb Add forgotten -n option to SYNOPSIS section
Submitted by: Reinier Bezuidenhout <rbezuide@oskar.nanoteq.co.za>
2000-09-23 22:38:56 +00:00
imp
2720b700ad Fix unexploitable off by one error as mentioned on Bugtraq. 2000-09-19 21:22:20 +00:00
ps
41b31bd1e0 Update the usage string to reflect -n as an option. 2000-08-07 01:09:25 +00:00
ps
045b3ce333 Actually make syslogd understand the new -n option by putting it
in getopt.

Submitted by:	Clive Lin <clive@CirX.ORG>
2000-08-07 01:00:01 +00:00
dwmalone
09a589b8f1 Sort cases in getopt switch statement.
Remove extra parens from my host selection commit.
Add white space after if, while, for and switch.
Get rid of braces around a single statement if.

There should be no functional changes in this commit.

Reviewed by:	sheldonh
2000-08-03 15:19:27 +00:00
dwmalone
91c8cf2367 Replace two calls to strlen+calloc+strcpy with strdup.
Reviewed by:	sheldonh
2000-08-03 15:12:06 +00:00
ps
b0760261f3 Change option -r to -n inline with conventions we use elsewhere.
I guess it serves me right for using a patch directly from Jan
Koum.  :)

Requested by:	many
2000-07-29 04:02:34 +00:00
ps
fd6c9310b6 Add option 'r' to syslogd which will disable dns queries for every
request.  This is useful when you have a large site pointed at a
single syslog server.

Submitted by:	Jan Koum <jkb@yahoo-inc.com>
2000-07-29 01:37:37 +00:00
dwmalone
c0626c7786 Allow syslogd to select messages based on the originating host in
a similar way to the way it can select messages from a given program.

Lines beginning with "+hostname" or "#+hostname" select messaes
from that hostname and lines beginning with "-hostname" or "#-hostname"
match messages not from that hostname.

There are some significant style issues left in the original program
selection code and the man page. This should be cleared up in some
later commits.

Reviewed by:	sheldonh
Based on an original patch by:    Bernd Walter <ticso@cicely8.cicely.de>
Man page stylist:	sheldonh
2000-07-24 14:10:17 +00:00
kris
c8fe54863b Prevent a non-exploitable remote buffer overflow.
Reported by:	twitch <twitch@vicar.org>
Submitted by:	Guido van Rooij <guido@gvr.org>
Reviewed by:	security-officer
2000-06-08 03:54:45 +00:00
jake
961b97d434 Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others
2000-05-26 02:09:24 +00:00
jake
d93fbc9916 Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by:	phk
Reviewed by:	phk
Approved by:	mdodd
2000-05-23 20:41:01 +00:00
ache
2e1592d902 Enable 8bit chars excepting high controls 2000-04-18 01:12:27 +00:00
sheldonh
b2240fc1c0 Remove single-space hard sentence breaks. These degrade the quality
of the typeset output, tend to make diffs harder to read and provide
bad examples for new-comers to mdoc.
2000-03-01 14:09:25 +00:00
joerg
7d18be033d Fix a nit in my previous commit: make SIGHUP and SIGCHLD restartable
as they ought to be.  The description of SA_RESTART was a little
unobvious to me in the man page, so i missed it.  Thanks to Bruce for
spotting this.

Submitted by:	bde
2000-02-29 08:02:29 +00:00
joerg
e52757e9dd Fix a serious bug in syslogd regarding the handling of pipes. The bug
would cause syslogd to eventually kill innocent processes in the
system over time (note: not `could' but `would').  Many thanks to my
colleague Mirko for digging into the kernel structures and providing
me with the debugging framework to find out about the nature of this
bug (and to isolate that syslogd was the culprit) in a rather large
set of distributed machines at client sites where this happened
occasionally.

Whenever a child process was no longer responsive, or when syslogd
receives a SIGHUP so it closes all its logging file descriptors, for
any descriptor that refers to a pipe syslogd enters the data about the
old logging child process into a `dead queue', where it is being
removed from (and the status of the dead kitten being fetched) upon
receipt of a SIGCHLD.  However, there's a high probability that the
SIGCHLD already arrives before the child's data are actually entered
into the dead queue inside the SIGHUP handler, so the SIGCHLD handler
has nothing to fetch and remove and simply continues.  Whenever this
happens, the process'es data remain on the dead queue forever, and
since domark() tried to get rid of totally unresponsive children by
first sending a SIGTERM and later a SIGKILL, it was only a matter of
time until the system had recycled enough PIDs so an innocent process
got shot to death.

Fix the race by masking SIGHUP and SIGCHLD from both handlers mutually.

Add additional bandaids ``just in case'', i. e. don't enter a process
into the dead queue if we can't signal it (this should only happen in
case it is already dead by that time so we can fetch the status
immediately instead of deferring this to the SIGCHLD handler); for the
kill(2) inside domark(), check for an error status (/* Can't happen */
:) and remove it from the dead queue in this case (which if it would
have been there in the first place would have reduced the problem to a
statistically minimal likelihood so i certainly would never have
noticed the bug at all :).

Mirko also reviewed the fix in priciple (mutual blocking of both
signals inside the handlers), but not the actual code.

Reviewed by:	Mirko Kaffka <mirko@interface-business.de>
Approved by:	jkh
2000-02-28 17:49:43 +00:00
peter
6dd3ee93f0 s|/dev/log|/var/run/log| 2000-02-14 13:26:57 +00:00
charnier
eb44a9737f Add section number to .Xr. Use .Pa for filenames.
fprintf -> warnx.
2000-01-23 20:22:23 +00:00
des
4e26c2b9bd Do this the Right Way (tm), i.e. use shutdown() instead of fooling around
with the size of the receive buffer.

Pointed out by:	ru
2000-01-14 15:37:18 +00:00
des
cb9a455cbe Reflect the change in secure mode semantics, and document fascist mode
properly.
2000-01-14 15:10:36 +00:00
des
3663c2376b Slight change of secure mode semantics: instead of reading (and counting)
vogons, set the size of the receive buffer to 1 and rely on the kernel to
simply drop incoming packets. The logging code was buggy anyway.

Use socklen_t instead of int for the length argument to recvfrom.

Add a 'continue' at the end of a loop for ANSI conformance.
2000-01-14 15:09:06 +00:00
ru
acb5ac51e9 Fix page fault in -vv mode.
PR:		16098
Submitted by:	Alan.Judge@indigo.ie
Reviewed by:	ru
2000-01-13 12:59:58 +00:00
peter
efabb9ccb1 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
green
1d06e20aed This is the addition of a syslog(3) security.* top-level category. This
should be used from now on for anything security but not auth-related.
Included are updates for all relevant manpages and also to /etc files,
creating a new /var/log/security. Nothing in the system logs to
/var/log/security yet as of the time of this commit.

Reviewed by:	rgrimes, imp, chris
1999-08-21 18:24:29 +00:00
brian
0fa185e8a0 Make hostname comparisons case insensitive 1999-08-17 01:25:16 +00:00
dt
14f270d531 readklog(): rename variable 'l' to 'len', to avoid possible confusion with 'i'
and '1'.

Requested by:	mckay
1999-05-06 13:57:57 +00:00
des
6c7b6a78d0 Is there a limit to how stupid I can get? 1999-05-04 18:03:59 +00:00
dt
528b186dfe Little fix in previous: watch NUL-termination. 1999-05-02 17:44:16 +00:00
dt
a60c9cfa3a Fight with false newlines in kernel message logs. Output a line into log only
after we read a newline, or we have nothing to read from /dev/klog. Read
/dev/klog in non-blocking mode.
1999-05-02 12:47:09 +00:00
des
83538ea9d0 Implement fascist mode (do not open a datagram socket at all). 1999-04-30 12:51:20 +00:00
cwt
233301419f Ensure a terminating null when processing hostname strings from
arbitrary sources.
Obtained from:	OpenBSD
1998-12-29 23:14:50 +00:00
cwt
c65223bc89 Accept "!*" as a valid all-programs tag line as documented.
PR:		8447
Submitted by:	Gaspar Chilingarov <nightmar@lemming.acc.am>
1998-12-29 20:36:22 +00:00
cwt
1effc86f47 Block SIGHUP during call to gethostbyaddr().
PR: 5548
Reviewed by: Matthew Dillon <dillon@apollo.backplane.com>
Obtained from: OpenBSD
1998-12-28 00:39:14 +00:00
jkh
20107e8f47 Allow either tabs or spaces in configuration files.
PR:		8762
Submitted by:	Igor Roshchin <str@giganda.komkon.org>
1998-12-04 06:49:20 +00:00
dg
60b560b337 When warning about discarding packets in secure mode, include the IP
address of the most recent offender.
1998-11-05 10:51:21 +00:00
julian
ea1d22b2ff Submitted by: archie@whistle.com
quieten cc -Wall
1998-08-25 21:16:47 +00:00
phk
a1a5f020ed Harlan.Stenn@pfcs.com added two (very interesting) options to syslogd for
-current (Thanks Harald). However, on my attempt to try this on -STABLE,
I found that when forwarding to another host the actual messages gets lost.
This is due to a wrong index because when the -v option was added, the
indexes shifted one place.

PR:		7407
Submitted by:	Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
1998-07-27 13:04:14 +00:00
phk
5835aea78c Add -u, -v and -vv options to syslogd, this improves the control and
logging verbosity about facility & priority levels.
PR:		7278
Reviewed by:	phk
Submitted by:	Harlan Stenn <Harlan.Stenn@pfcs.com>
1998-07-22 06:15:19 +00:00
bde
a5b3c3ea4f Fixed printf format errors. 1998-07-06 20:28:08 +00:00
guido
b7d83099ea Fix off by 1 error. 1998-07-02 19:35:40 +00:00
steve
40b850dd41 Note in log file if messages are being forwarded from a
remote machine.

PR:		7055
Submitted by:	Edwin Groothus <edwin@nwm.wan.philips.com>
1998-06-27 21:45:59 +00:00
guido
c183560752 Implement new argument -l (OpenBSD has -a but we already use that).
This allows one to specify additional sockets in the unix domain
that syslogd listens to. Its primary use is to create log sockets in
chroot environments.
Obtained from:OpenBSD (with a bug fixed d
1998-06-25 19:39:19 +00:00
julian
2b2a057da4 Reviewed by: guido@mouse.gvr.org
Submitted by:	Archie@whistle.com
redo the last patch to allow differentiated kernel logging in
a much better way.
1998-06-24 23:50:20 +00:00
julian
538c54fd9e Allow syslogd to separate out kernel log messages with a known
category.
e.g. separate out ipfw entries to a separate file.

Reviewed by:	(briefly) phk
Submitted by:	archie@whistle.com
Obtained from:	Whistle source tree
1998-06-10 04:34:56 +00:00
phk
9abae418f8 Remove a bogus dependency on the size of the inkernel msgbuf.
This change is likely to introduce a few linebreaks in the boot
messages, but that is not easy to solve without breaking syslogd
semantics.  Maybe the right  fix is to return an integral number
of lines from the kernel driver.

Noticed by:	dg
1998-05-19 12:02:41 +00:00
brian
5cc7cdec73 Make syslogd function in non-secure mode.
Log the correct ^2 packet as per the last commit comment.
1998-05-07 00:39:56 +00:00
phk
8ad123ff43 Augment the last change after some deliberation with rgrimes & peter.
It is important that we keep the ability to send packets to a remote
server and that the packets come from our well-known port, also in
that case.

Reviewed by:	peter, rgrimes.
1998-04-24 17:32:23 +00:00
phk
bd583b94c4 Even with '-s', syslogd still creates an AF_INET socket, although
it is not bind(2)ed.

PR:		6366
Reviewed by:	phk
Submitted by:	Soren S. Jorvang <soren@dt.dk>
1998-04-22 06:28:18 +00:00
jraynard
aaccbfd01d Don't assume sigset_t and int are equivalent. Also, get
sigprocmask arguments the right way round.
1998-02-28 15:14:00 +00:00
charnier
a9eeb3d932 Cosmetic in usage string. 1997-10-20 12:55:49 +00:00
joerg
f3ad79066c Documentation for the LOG_NTP facility. While i was at it, added a
bit of a warning about not all systems providing for the same set of
syslog facilities.
1997-10-06 20:37:50 +00:00
brian
c772a08c0b Use snprintf() instead of sprintf() most of the time.
Obtained from: OpenBSD

Make usage() consistent with man page.
1997-09-19 22:22:04 +00:00
joerg
4d85218738 Explain a little more about the piping feature.
PR:		4122
1997-09-14 06:55:15 +00:00
joerg
448c1dca85 Nobody ever seemed to be interested in reviewing these changes, and i
found that my syslogd is now running them for several months...

Add an option to syslogd to restrict the IP addresses that are allowed
to log to this syslogd.  It's too late to develop the inter-syslogd
communications protocol mentioned in the BUGS section, some 10 years
too late.  Thus, restricting the IP address range is about the most
effective change we can do if we want to allow incoming syslog
messages at all.

IMHO, we should encourage the system administrators to use this option,
and thus provide a knob in /etc/rc.* for it, defaulting to -a 127.0.0.1/32
(just as a hint about the usage).

Please state opinions about whether to merge this change into 2.2 or
not (i've got it running on RELENG_2_2 anyway).
1997-05-03 22:17:43 +00:00
jmg
ab82273135 add an Id line, minor mdoc fix ups
add ftp to list of facilities in syslog.conf
Closes PR#3389
Submitted-by: Pius Fischer
1997-04-29 09:09:40 +00:00
pst
1b9955fb24 Whoops -- code inspection showed I forgot to clean up getopt string 1997-04-26 00:03:21 +00:00
pst
0fba6c45e6 Secure mode (-s) incorrectly disabled both sending and receiving of syslog
packets over UDP.  Secure boxes should still be able to send packets.
1997-04-26 00:00:33 +00:00
imp
691010efad compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-31 05:11:47 +00:00
joerg
b66347858f Save and restore the state of the variable Initialized inside die().
Otherwise, the shutdown message will print out with 15 NUL bytes in
front, due to a missing timestamp.
1997-03-14 01:27:02 +00:00
mpp
db4600603e Typo police. 1997-02-22 18:57:36 +00:00
peter
b782f4df30 Revert $FreeBSD$ to $Id$ 1997-02-22 16:15:28 +00:00
joerg
3ff7a4f4f2 The "burn-in" phase has finished: this set of patches seems to run
stable now at a customer's site.

Finally add the ability to syslogd to pipe particular messages through
an arbitrary filtering command.  Idea stolen from IRIX.

This code is courtesy of the interface business GmbH, Dresden.

Comment about whether to also merge this into 2.2 or not, please.

Reviewed by:	(long ago) peter
1997-02-22 12:59:36 +00:00
jkh
808a36ef65 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
jkh
45be390ed2 Unlink LogName before attempting to open it. Since we now have a lovely
bug in syslogd which causes it to die after random amounts of time (widely
reported), this at least allows the administrator to easily restart it
without wondering why it simply exits again each time.
1997-01-03 07:13:20 +00:00
peter
97a86f545b Revert part of the previous change. syslogd (when logging to ttys)
has always held an open file descriptor.  This allowed logging to
spare virtual consoles and being able to switch to them.

My previous change removed this since all writes were done with ttymsg()
which opens it's own fd, and hence syslogd didn't need it's own fd to
send messages on... but this caused an unexpected behavior change.

This should close PR#2176
1996-12-10 17:52:23 +00:00
peter
dcd629b514 Don't close f->f_file on F_TTY types on error returns from ttymsg() since
it wasn't open in the first place..
1996-11-26 02:35:08 +00:00
peter
d0d1530e87 Make the handling of the /dev/ prefix for tty names more consistant.
ttymsg() insists on them not being there.

Also, since ttymsg() opens the tty "on demand", don't keep an fd open
ourselves.  This would interfere with HUPCL etc.

This should close PR#2103 from <xaa@stack.nl>
1996-11-26 02:24:42 +00:00
peter
c21f06e391 put on my flame resistant suit and tempt fate by attempting to fix some of
the races in my previous commits here, and fix some other problems with
syslogd as well.

- if the child process exited early (eg: could not bind to the socket),
  the boot process would hang for 30 seconds.  The parent was not noticing
  that the child had exited.  (my fault)
- when writing to tty devices, instead of treating them like files that
  need \r\n instead of \n, actually use ttymsg() which has specific code
  intended to write to potentially blocking ttys safely.  I had a machine
  lock up last night because /dev/console on a serial port got flow control
  blocked.  Setting comcontrol drainwait fixed everything but syslogd which
  was going into a spin trying to write to the console and completely
  ignoreing everything else.
- fix a couple of nonsensical bits of code while here..  eg: wait3 takes
  a pointer to an int.  There is no sense in declaring it as 'union wait',
  then casting the pointer to (int *), then forgetting about it.
1996-11-18 21:48:29 +00:00
joerg
ccc0f03f6b Back out the entire change from rev 1.11 of syslogd.c. It was bogus.
Correct the man page to reflect the new reality.
1996-10-28 08:25:13 +00:00
julian
b9fc5c00e5 Reviewed by: various (mailing list feedback)
Submitted by:	whistle communications

move the socket from /dev to /var/run by default
TRANSITIONALLY make syslog add a symlink..
I PROMISE I'll remove that as soon as I have the makefiles etc fixed as well.
1996-10-23 20:17:57 +00:00
peter
57a32f2a60 syslogd has always bugged me with it's async startup at boot time.
For me, more often than not, the backgrounded syslogd daemon is not
yet ready to process log messages before other things (such as named)
want to log a heap of them.  It seems that it's the O_SYNC writes of
the stuff coming in from /dev/klog that's the slowdown.

Anyway, instead of using the libc daemon, roll a modified version.  This
one has a timeout.  The child will wait for either the timeout to expire
or the child process to signal it to let it know that it's "ready" and
the /dev/log socket is set up and active, so it's safe to continue the
boot.  It adds a small fraction of a second pause to the boot time, but on
the other hand the overall boot time is *quicker* since the disk is not
being thrashed while the log messages are getting written out synchronously
one by one while other daemons are loading in parallel.

The timeout is in case the child segfaults or something before becoming
fully operational.
1996-10-05 15:20:51 +00:00
pst
b17ff2d106 Add info field.
Closes pr docs/1679.
1996-09-27 20:31:26 +00:00
pst
71d7e65562 Bring in some fixes from NetBSD and re-hack our syslogd to be option-compatible
with theirs (change the -I option to -s (but leave -I in for backwards compat.)
Also eliminate an make sane some magic numbers, and fix a small bug where we'd
send to an unopened socket.

Reviewed by:	wollman
Obtained from:	NetBSD
1996-07-22 16:35:50 +00:00
wollman
a925c2363f Correct synopsis (-d, -I options were missing because -mdoc mistook
the dI in `.Op Fl dI' for the name of an internal mdoc command).
1996-05-20 17:10:03 +00:00
peter
130177c924 With the recent 'make install' change in the kernel build makefiles, an
`interesting' feature of syslogd turned up.  It calls getbootfile() for each
log entry.  Since the kernel makefile now changes kern.bootfile when doing
a 'make install', it's quite startling to see the syslog lines change.

This change makes it call getbootfile() once at startup and cache it,
saving a syscall per loop, and keeping something a little more asthetically
pleasing in /var/log/messages...
1995-11-14 23:39:39 +00:00
wollman
837d69738b Add a command-line option `-I' to disable logging from UDP.
Document `-d' and `-I'.  Add a BUGS section noting that
logging from UDP is an unauthenticated remote disk-filling service,
and probably should be disabled by default in the absence of some sort
of authentication.
1995-10-12 17:18:39 +00:00
paul
75317367c5 Remove unconditional unlink at startup and conditionalised the unlink at exit
so that it only unlinks the file if syslogd knows it created it.

If the path specified for the socket already exists then syslogd
will now exit with an "address already in use" error which is more
sensible than blindly unlinking the existing filename.  This stops
syslogd -d foo/bar from unlinking foo/bar if it's a real file.
1995-09-11 13:55:11 +00:00
pst
502722c991 Fix up warning about const being lost. 1995-08-23 04:54:49 +00:00
rgrimes
4f960dd75f Remove trailing whitespace. 1995-05-30 03:57:47 +00:00
jkh
3b3d4a8c7e Updates from Peter da Silva to match the recent syslogd changes.
Submitted by:	pds
1995-01-04 00:40:38 +00:00
wollman
bd143034a7 Extend syslogd to allow selection of log destinations by program.
Use getbootfile() to determine the kernel name.

Submitted by: Peter da Silva
1994-12-29 22:02:25 +00:00
wollman
d7fca5c189 Get rid of update. Make man page installation work with our scheme
(and rename a few in the process).
1994-08-05 16:31:05 +00:00
dg
6b466831f4 Converted 'vmunix' to 'kernel'. 1994-08-05 09:14:37 +00:00