]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/sysklogd-1.4.1-fixes-1.patch
Cleanup: removed unused patches.
[ipfire-2.x.git] / src / patches / sysklogd-1.4.1-fixes-1.patch
diff --git a/src/patches/sysklogd-1.4.1-fixes-1.patch b/src/patches/sysklogd-1.4.1-fixes-1.patch
deleted file mode 100644 (file)
index 68ac87c..0000000
+++ /dev/null
@@ -1,833 +0,0 @@
-Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
-Date: 2005-01-23
-Initial Package Version: 1.4.1
-Upstream Status: Not submitted
-Origin: http://www.infodrom.org/projects/sysklogd/cvs.php3
-Description: This patch is a cvs snapshot update as of 20050123.
-Minus the debain and CVS directories. See the CHANGES.
-
-diff -Naur sysklogd-1.4.1/CHANGES sysklogd-20050123/CHANGES
---- sysklogd-1.4.1/CHANGES     2001-03-11 14:35:51.000000000 -0500
-+++ sysklogd-20050123/CHANGES  2005-01-15 14:14:21.000000000 -0500
-@@ -1,3 +1,42 @@
-+Version 1.4.2
-+
-+ . Dmitry V. Levin <ldv@altlinux.org>
-+   - Close file descriptor in FindSymbolFile() in ksym.c in order not to
-+     leak file descriptors.
-+ . Solar Designer <solar@openwall.com>
-+   - improve crunch_list()
-+   - Prevent potential buffer overflow in reading messages from the
-+     kernel log ringbuffer.
-+   - Ensure that "len" is not placed in a register, and that the
-+     endtty() signal handler is not installed too early which could
-+     cause a segmentation fault or worse.
-+ . Steve Grubb <linux_4ever@yahoo.com>
-+   - fix memory calculation in crunch_list()
-+ . Martin Schulze <joey@infodrom.org>
-+   - klogd will reconnect to the logger (mostly syslogd) after it went
-+     away
-+   - On heavily loaded system syslog will not spit out error messages
-+     anymore when recvfrom() results in EAGAIN
-+   - Makefile improvements
-+   - Local copy of module.h
-+   - Improved sysklogd.8
-+   - Always log with syslogd's timezone and locale
-+   - Remove trailing newline when forwarding messages
-+ . Jon Burgess <Jon_Burgess@eur.3com.com>
-+   - Moved the installation of the signal handler up a little bit so it
-+     guaranteed to be available when the child is forked, hence, fixing a
-+     race condition.  This used to create problems with UML and fast
-+     machines.
-+ . Greg Trounson <gregt@maths.otago.ac.nz>
-+   - Improved README.linux
-+ . Ulf Härnhammar <Ulf.Harnhammar.9485@student.uu.se>
-+   - Bondary check for fscanf() in InitKsyms() and CheckMapVersion()
-+ . Colin Phipps <cph@cph.demon.co.uk>
-+   - Don't block on the network socket in case of package los
-+ . Dirk Mueller <mueller@kde.org>
-+   - Don't crash when filesize limit is reached (e.g. without LFS)
-+
-+
- Version 1.4.1
-  . klogd will set the console log level only if `-c' is given on the
-@@ -30,3 +69,9 @@
-  . Olaf Kirch <okir@caldera.de>
-    - Remove Unix Domain Sockets and switch to Datagram Unix Sockets
-  . Several bugfixes and improvements, please refer to the .c files
-+
-+
-+Local variables:
-+mode: indented-text
-+fill-column: 72
-+End:
-diff -Naur sysklogd-1.4.1/klogd.8 sysklogd-20050123/klogd.8
---- sysklogd-1.4.1/klogd.8     2001-03-11 14:35:51.000000000 -0500
-+++ sysklogd-20050123/klogd.8  2001-03-11 18:00:51.000000000 -0500
-@@ -321,7 +321,7 @@
- .B klogd
- to reload the module symbol information whenever a protection fault
- is detected.  Caution should be used before invoking the program in
--\'paranoid\' mode.  The stability of the kernel and the operating
-+\&'paranoid\&' mode.  The stability of the kernel and the operating
- environment is always under question when a protection fault occurs.
- Since the klogd daemon must execute system calls in order to read the
- module symbol information there is the possibility that the system may
-diff -Naur sysklogd-1.4.1/klogd.c sysklogd-20050123/klogd.c
---- sysklogd-1.4.1/klogd.c     2001-03-11 14:40:10.000000000 -0500
-+++ sysklogd-20050123/klogd.c  2004-04-29 09:29:03.000000000 -0400
-@@ -243,6 +243,9 @@
-  *    people have submitted patches: Troels Walsted Hansen
-  *    <troels@thule.no>, Wolfgang Oertl <Wolfgang.Oertl@uibk.ac.at>
-  *    and Thomas Roessler.
-+ * Thu Apr 29 15:24:07 2004: Solar Designer <solar@openwall.com>
-+ *    Prevent potential buffer overflow in reading messages from the
-+ *    kernel log rinbuffer.
-  */
-@@ -938,7 +941,7 @@
-        * messages into this fresh buffer.
-        */
-       memset(log_buffer, '\0', sizeof(log_buffer));
--      if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer))) < 0 )
-+      if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer)-1)) < 0 )
-       {
-               if ( errno == EINTR )
-                       return;
-diff -Naur sysklogd-1.4.1/ksym.c sysklogd-20050123/ksym.c
---- sysklogd-1.4.1/ksym.c      2000-09-12 17:53:31.000000000 -0400
-+++ sysklogd-20050123/ksym.c   2004-07-16 02:48:27.000000000 -0400
-@@ -105,6 +105,15 @@
-  *
-  * Tue Sep 12 23:48:12 CEST 2000: Martin Schulze <joey@infodrom.ffis.de>
-  *    Close symbol file in InitKsyms() when an error occurred.
-+ *
-+ * Thu Apr 29 18:07:16 CEST 2004: Dmitry Levin <ldv@altlinux.org>
-+ *    Close file descriptor in FindSymbolFile() in order not to leak
-+ *    file descriptors.
-+ *
-+ * Fri Jul 16 08:32:49 CEST 2004: Ulf Härnhammar <Ulf.Harnhammar.9485@student.uu.se>
-+ *    Added boundary check for fscanf() in InitKsyms() and
-+ *    CheckMapVersion() to prevent an unintended crash when reading
-+ *    an incorrect System.map.
-  */
-@@ -236,7 +245,7 @@
-        */
-       while ( !feof(sym_file) )
-       {
--              if ( fscanf(sym_file, "%lx %c %s\n", &address, &type, sym)
-+              if ( fscanf(sym_file, "%lx %c %511s\n", &address, &type, sym)
-                   != 3 )
-               {
-                       Syslog(LOG_ERR, "Error in symbol table input (#1).");
-@@ -344,6 +353,7 @@
-               if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
-                       if (CheckMapVersion(symfile) == 1)
-                               file = symfile;
-+                      fclose (sym_file);
-               }
-               if (sym_file == (FILE *) 0 || file == (char *) 0) {
-                       sprintf (symfile, "%s", *mf);
-@@ -352,6 +362,7 @@
-                       if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
-                               if (CheckMapVersion(symfile) == 1)
-                                       file = symfile;
-+                              fclose (sym_file);
-                       }
-               }
-@@ -533,7 +544,7 @@
-               version = 0;
-               while ( !feof(sym_file) && (version == 0) )
-               {
--                      if ( fscanf(sym_file, "%lx %c %s\n", &address, \
-+                      if ( fscanf(sym_file, "%lx %c %511s\n", &address, \
-                                   &type, sym) != 3 )
-                       {
-                               Syslog(LOG_ERR, "Error in symbol table input (#2).");
-@@ -899,3 +910,11 @@
-       return;
- }
- #endif
-+
-+/*
-+ * Local variables:
-+ *  c-indent-level: 8
-+ *  c-basic-offset: 8
-+ *  tab-width: 8
-+ * End:
-+ */
-diff -Naur sysklogd-1.4.1/ksym_mod.c sysklogd-20050123/ksym_mod.c
---- sysklogd-1.4.1/ksym_mod.c  2000-09-12 17:15:28.000000000 -0400
-+++ sysklogd-20050123/ksym_mod.c       2004-03-31 10:47:08.000000000 -0500
-@@ -78,6 +78,11 @@
-  *
-  * Tue Sep 12 23:11:13 CEST 2000: Martin Schulze <joey@infodrom.ffis.de>
-  *    Changed llseek() to lseek64() in order to skip a libc warning.
-+ *
-+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
-+ *    Removed references to <linux/module.h> since it doesn't work
-+ *    anymore with its recent content from Linux 2.4/2.6, created
-+ *    module.h locally instead.
-  */
-@@ -89,11 +94,12 @@
- #include <errno.h>
- #include <sys/fcntl.h>
- #include <sys/stat.h>
-+#include "module.h"
- #if !defined(__GLIBC__)
- #include <linux/time.h>
--#include <linux/module.h>
-+#include <linux/linkage.h>
- #else /* __GLIBC__ */
--#include <linux/module.h>
-+#include <linux/linkage.h>
- extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
- extern int get_kernel_syms __P ((struct kernel_sym *__table));
- #endif /* __GLIBC__ */
-@@ -107,7 +113,7 @@
- #if !defined(__GLIBC__)
- /*
-- * The following bit uses some kernel/library magic to product what
-+ * The following bit uses some kernel/library magic to produce what
-  * looks like a function call to user level code.  This function is
-  * actually a system call in disguise.  The purpose of the getsyms
-  * call is to return a current copy of the in-kernel symbol table.
-diff -Naur sysklogd-1.4.1/Makefile sysklogd-20050123/Makefile
---- sysklogd-1.4.1/Makefile    1998-10-12 16:25:15.000000000 -0400
-+++ sysklogd-20050123/Makefile 2004-04-29 07:04:03.000000000 -0400
-@@ -4,12 +4,15 @@
- #CFLAGS= -g -DSYSV -Wall
- #LDFLAGS= -g
- CFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
-+# -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
- LDFLAGS= -s
- # Look where your install program is.
- INSTALL = /usr/bin/install
--BINDIR = /usr/sbin
--MANDIR = /usr/man
-+
-+# Destination paths, set prefix=/opt if required
-+BINDIR = $(prefix)/usr/sbin
-+MANDIR = $(prefix)/usr/share/man
- # There is one report that under an all ELF system there may be a need to
- # explicilty link with libresolv.a.  If linking syslogd fails you may wish
-@@ -34,8 +37,9 @@
- # The following define establishes ownership for the man pages.
- # Avery tells me that there is a difference between Debian and
- # Slackware.  Rather than choose sides I am leaving it up to the user.
--MAN_OWNER = root
--# MAN_OWNER = man
-+MAN_USER = root
-+MAN_GROUP = root
-+MAN_PERMS = 644
- # The following define establishes the name of the pid file for the
- # syslogd daemon.  The library include file (paths.h) defines the
-@@ -116,7 +120,7 @@
-       ${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
- install_man:
--      ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
--      ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
--      ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
--      ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
-+      ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} sysklogd.8 ${MANDIR}/man8/sysklogd.8
-+      ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} syslogd.8 ${MANDIR}/man8/syslogd.8
-+      ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
-+      ${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} klogd.8 ${MANDIR}/man8/klogd.8
-diff -Naur sysklogd-1.4.1/module.h sysklogd-20050123/module.h
---- sysklogd-1.4.1/module.h    1969-12-31 19:00:00.000000000 -0500
-+++ sysklogd-20050123/module.h 2004-07-27 07:36:10.000000000 -0400
-@@ -0,0 +1,90 @@
-+/*
-+    module.h - Miscellaneous module definitions
-+    Copyright (c) 1996 Richard Henderson <rth@tamu.edu>
-+    Copyright (c) 2004 Martin Schulze <joey@infodrom.org>
-+
-+    This file is part of the sysklogd package.
-+
-+    This program is free software; you can redistribute it and/or modify
-+    it under the terms of the GNU General Public License as published by
-+    the Free Software Foundation; either version 2 of the License, or
-+    (at your option) any later version.
-+
-+    This program is distributed in the hope that it will be useful,
-+    but WITHOUT ANY WARRANTY; without even the implied warranty of
-+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+    GNU General Public License for more details.
-+
-+    You should have received a copy of the GNU General Public License
-+    along with this program; if not, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+/* ChangeLog:
-+ *
-+ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
-+ *    Created local copy of module.h based on the content of Linux
-+ *    2.2 since <linux/module.h> doesn't work anymore with its
-+ *    recent content from Linux 2.4/2.6.
-+ */
-+
-+#include <asm/atomic.h>
-+
-+#define MODULE_NAME_LEN 60
-+
-+struct kernel_sym
-+{
-+      unsigned long value;
-+      char name[MODULE_NAME_LEN];
-+};
-+
-+
-+struct list_head {
-+      struct list_head *next, *prev;
-+};
-+
-+
-+struct module_info
-+{
-+      unsigned long addr;
-+      unsigned long size;
-+      unsigned long flags;
-+      long usecount;
-+};
-+
-+
-+struct module
-+{
-+      unsigned long size_of_struct;   /* == sizeof(module) */
-+      struct module *next;
-+      const char *name;
-+      unsigned long size;
-+
-+      union
-+      {
-+              int usecount;
-+              long pad;
-+      } uc;                           /* Needs to keep its size - so says rth */
-+
-+      unsigned long flags;            /* AUTOCLEAN et al */
-+
-+      unsigned nsyms;
-+      unsigned ndeps;
-+
-+      struct module_symbol *syms;
-+      struct module_ref *deps;
-+      struct module_ref *refs;
-+      int (*init)(void);
-+      void (*cleanup)(void);
-+      const struct exception_table_entry *ex_table_start;
-+      const struct exception_table_entry *ex_table_end;
-+#ifdef __alpha__
-+      unsigned long gp;
-+#endif
-+      /* Members past this point are extensions to the basic
-+         module support and are optional.  Use mod_opt_member()
-+         to examine them.  */
-+      const struct module_persist *persist_start;
-+      const struct module_persist *persist_end;
-+      int (*can_unload)(void);
-+};
-diff -Naur sysklogd-1.4.1/pidfile.c sysklogd-20050123/pidfile.c
---- sysklogd-1.4.1/pidfile.c   1998-02-10 17:37:12.000000000 -0500
-+++ sysklogd-20050123/pidfile.c        2003-09-27 22:38:18.000000000 -0400
-@@ -87,7 +87,7 @@
-   int fd;
-   int pid;
--  if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
-+  if ( ((fd = open(pidfile, O_RDWR|O_CREAT|O_TRUNC, 0644)) == -1)
-        || ((f = fdopen(fd, "r+")) == NULL) ) {
-       fprintf(stderr, "Can't open or create %s.\n", pidfile);
-       return 0;
-diff -Naur sysklogd-1.4.1/README.1st sysklogd-20050123/README.1st
---- sysklogd-1.4.1/README.1st  1997-06-02 13:21:39.000000000 -0400
-+++ sysklogd-20050123/README.1st       2003-09-04 09:22:23.000000000 -0400
-@@ -1,5 +1,5 @@
--Very important information before using version 1.3
-----------------------------------------------------
-+Important information
-+---------------------
- The included version of syslogd behaves in a slightly different manner
- to the one in former releases.  Please review the following important
-@@ -63,3 +63,10 @@
-   these scripts should remove all old .pid files found in /var/run.
-   This will insure that klogd and syslogd start properly even if prior
-   executions have been terminated harshly.
-+
-+* Large file support, i.e. support to write to log files that are
-+  larger than 2 GB is not part of syslogd, but a matter of the Glibc
-+  emitting different system calls to the kernel interface.  To support
-+  large files you'll have to compile syslogd with the compiler defines
-+  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE so that glibc adjusts the
-+  system calls.
-diff -Naur sysklogd-1.4.1/README.linux sysklogd-20050123/README.linux
---- sysklogd-1.4.1/README.linux        1999-01-18 19:09:12.000000000 -0500
-+++ sysklogd-20050123/README.linux     2004-07-09 13:22:29.000000000 -0400
-@@ -40,12 +40,17 @@
- a useful addition to the software gene pool.
- There is a mailing list covering this package and syslog in general.
--The lists address is sysklogd@Infodrom.North.DE .  To subscribe send a
--mail to Majordomo@Infodrom.North.DE with a line "subscribe sysklogd"
-+The lists address is infodrom-sysklogd@lists.infodrom.org .  To subscribe send a
-+mail to majordomo@lists.infodrom.org with a line "subscribe infodrom-sysklogd"
- in the message body.
--New versions of this package will be available at Joey's ftp server.
--ftp://ftp.infodrom.north.de/pub/people/joey/sysklogd/
-+A second mailing list exists as infodrom-sysklogd-cvs@lists.infodrom.org.  Only
-+CVS messages and diffs are distributed there. Whenever new code is added to
-+sysklogd, CVS generates a mail from these changes which will be sent to
-+this list.  Discussions will take place on the first list.
-+
-+The latest version of this software can be found at:
-+http://www.infodrom.org/projects/sysklogd/download.php3
- Best regards,
-@@ -67,6 +72,6 @@
- Martin Schulze
- Infodrom Oldenburg
--joey@linux.de
-+joey@infodrom.org
--And a host of bug reporters whose contributions cannot be underestimated.
-+And a number of bug reporters whose contributions cannot be underestimated.
-diff -Naur sysklogd-1.4.1/sysklogd.8 sysklogd-20050123/sysklogd.8
---- sysklogd-1.4.1/sysklogd.8  2001-03-11 14:35:51.000000000 -0500
-+++ sysklogd-20050123/sysklogd.8       2004-07-09 13:33:32.000000000 -0400
-@@ -84,7 +84,7 @@
- .B MAXFUNIX
- within the syslogd.c source file.  An example for a chroot() daemon is
- described by the people from OpenBSD at
--http://www.psionic.com/papers/dns.html.
-+<http://www.guides.sk/psionic/dns/>.
- .TP
- .B "\-d"
- Turns on debug mode.  Using this the daemon will not proceed a 
-@@ -117,7 +117,8 @@
- between two \fI-- MARK --\fR lines is 20 minutes.  This can be changed
- with this option.  Setting the
- .I interval
--to zero turns it off entirely.
-+to zero turns it off entirely.  Depending on other log messages
-+generated these lines may not be written consecutively.
- .TP
- .B "\-n"
- Avoid auto-backgrounding.  This is needed especially if the
-@@ -364,8 +365,10 @@
- To avoid this in further times no messages that were received from a
- remote host are sent out to another (or the same) remote host
--anymore.  If there are scenarios where this doesn't make sense, please
--drop me (Joey) a line.
-+anymore.  If you experience are setup in which this doesn't make
-+sense, please use the
-+.B \-h
-+commandline switch.
- If the remote host is located in the same domain as the host, 
- .B syslogd
-diff -Naur sysklogd-1.4.1/syslog.c sysklogd-20050123/syslog.c
---- sysklogd-1.4.1/syslog.c    2001-03-11 14:35:51.000000000 -0500
-+++ sysklogd-20050123/syslog.c 2003-08-27 11:56:01.000000000 -0400
-@@ -47,6 +47,9 @@
-  * Sun Mar 11 20:23:44 CET 2001: Martin Schulze <joey@infodrom.ffis.de>
-  *    Use SOCK_DGRAM for loggin, renables it to work. 
-  *
-+ * Wed Aug 27 17:48:16 CEST 2003: Martin Schulze <joey@Infodrom.org>
-+ *    Improved patch by Michael Pomraning <mjp@securepipe.com> to
-+ *    reconnect klogd to the logger after it went away.
-  */
- #include <sys/types.h>
-@@ -98,6 +101,7 @@
-       register char *p;
-       time_t now;
-       int fd, saved_errno;
-+      int result;
-       char tbuf[2048], fmt_cpy[1024], *stdp = (char *) 0;
-       saved_errno = errno;
-@@ -167,7 +171,16 @@
-       }
-       /* output the message to the local logger */
--      if (write(LogFile, tbuf, cnt + 1) >= 0 || !(LogStat&LOG_CONS))
-+      result = write(LogFile, tbuf, cnt + 1);
-+
-+      if (result == -1
-+          && (errno == ECONNRESET || errno == ENOTCONN || errno == ECONNREFUSED)) {
-+              closelog();
-+              openlog(LogTag, LogStat | LOG_NDELAY, LogFacility);
-+              result = write(LogFile, tbuf, cnt + 1);
-+      }
-+
-+      if (result >= 0 || !(LogStat&LOG_CONS))
-               return;
-       /*
-diff -Naur sysklogd-1.4.1/syslog.conf.5 sysklogd-20050123/syslog.conf.5
---- sysklogd-1.4.1/syslog.conf.5       1999-08-21 06:49:14.000000000 -0400
-+++ sysklogd-20050123/syslog.conf.5    2003-05-22 15:31:20.000000000 -0400
-@@ -64,7 +64,7 @@
- The
- .I facility
- is one of the following keywords:
--.BR auth ", " authpriv ", " cron ", " daemon ", " kern ", " lpr ", "
-+.BR auth ", " authpriv ", " cron ", " daemon ", " ftp ", " kern ", " lpr ", "
- .BR mail ", " mark ", " news ", " security " (same as " auth "), "
- .BR syslog ", " user ", " uucp " and " local0 " through " local7 .
- The keyword 
-@@ -121,12 +121,21 @@
- This 
- .BR syslogd (8)
--has a syntax extension to the original BSD source, that makes its use
-+has a syntax extension to the original BSD source, which makes its use
- more intuitively.  You may precede every priority with an equation sign
--(``='') to specify only this single priority and not any of the
--above.  You may also (both is valid, too) precede the priority with an
--exclamation mark (``!'') to ignore all that priorities, either exact
--this one or this and any higher priority.  If you use both extensions
-+(``='') to specify that
-+.B syslogd
-+should only refer to this single priority and not this priority and
-+all higher priorities.
-+
-+You may also precide the priority with an exclamation mark (``!'') if
-+you want
-+.B syslogd
-+to ignore this priority and all higher priorities.
-+You may even use both, the exclamation mark and the equation sign if
-+you want
-+.B syslogd
-+to ignore only this single priority.  If you use both extensions
- than the exclamation mark must occur before the equation sign, just
- use it intuitively.
-@@ -300,7 +309,7 @@
- .B syslogd
- log all messages that come with either the
- .BR info " or the " notice
--facility into the file
-+priority into the file
- .IR /var/log/messages ,
- except for all messages that use the
- .B mail
-diff -Naur sysklogd-1.4.1/syslogd.c sysklogd-20050123/syslogd.c
---- sysklogd-1.4.1/syslogd.c   2001-03-11 14:40:10.000000000 -0500
-+++ sysklogd-20050123/syslogd.c        2005-01-15 14:13:08.000000000 -0500
-@@ -441,6 +441,39 @@
-  *    Don't return a closed fd if `-a' is called with a wrong path.
-  *    Thanks to Bill Nottingham <notting@redhat.com> for providing
-  *    a patch.
-+ * Thu Apr 13 05:08:10 CEST 2001: Jon Burgess <Jon_Burgess@eur.3com.com>
-+ *    Moved the installation of the signal handler up a little bit
-+ *    so it guaranteed to be available when the child is forked,
-+ *    hence, fixing a  race condition.  This used to create problems
-+ *    with UML and fast machines.
-+ *
-+ * Sat Apr 17 18:03:05 CEST 2004: Steve Grubb <linux_4ever@yahoo.com>
-+ *    Correct memory allocation for for commandline arguments in
-+ *    crunch_list().
-+ *
-+ * Thu Apr 29 12:38:39 CEST 2004: Solar Designer <solar@openwall.com>
-+ *    Applied Openwall paranoia patches to improve crunch_list().
-+ *
-+ * Tue May  4 16:47:30 CEST 2004: Solar Designer <solar@openwall.com>
-+ *    Ensure that "len" is not placed in a register, and that the
-+ *    endtty() signal handler is not installed too early which could
-+ *    cause a segmentation fault or worse.
-+ *
-+ * Tue May  4 16:52:01 CEST 2004: Solar Designer <solar@openwall.com>
-+ *    Adjust the size of a variable to prevent a buffer overflow
-+ *    should _PATH_DEV ever contain something different than "/dev/".
-+ *
-+ * Tue Nov  2 20:28:23 CET 2004: Colin Phipps <cph@cph.demon.co.uk>
-+ *    Don't block on the network socket, in case a packet gets lost
-+ *    between select and recv.
-+ *
-+ * Sun Nov  7 12:28:47 CET 2004: Martin Schulze <joey@infodrom.org>
-+ *    Discard any timestamp information found in received syslog
-+ *    messages.  This will affect local messages sent from a
-+ *    different timezone.
-+ *
-+ * Sun Nov  7 13:47:00 CET 2004: Martin Schulze <joey@infodrom.org>
-+ *    Remove trailing newline when forwarding messages.
-  */
-@@ -890,11 +923,11 @@
-               dprintf("Checking pidfile.\n");
-               if (!check_pid(PidFile))
-               {
-+                      signal (SIGTERM, doexit);
-                       if (fork()) {
-                               /*
-                                * Parent process
-                                */
--                              signal (SIGTERM, doexit);
-                               sleep(300);
-                               /*
-                                * Not reached unless something major went wrong.  5
-@@ -992,6 +1025,7 @@
-       (void) signal(SIGCHLD, reapchild);
-       (void) signal(SIGALRM, domark);
-       (void) signal(SIGUSR1, Debug ? debug_switch : SIG_IGN);
-+      (void) signal(SIGXFSZ, SIG_IGN);
-       (void) alarm(TIMERINTVL);
-       /* Create a partial message table for all file descriptors. */
-@@ -1141,13 +1175,13 @@
-                                */
-                               printchopped(from, line, \
-                                            i + 2,  finet);
--                      } else if (i < 0 && errno != EINTR) {
-+                      } else if (i < 0 && errno != EINTR && errno != EAGAIN) {
-                               dprintf("INET socket error: %d = %s.\n", \
-                                       errno, strerror(errno));
-                               logerror("recvfrom inet");
-                               /* should be harmless now that we set
-                                * BSDCOMPAT on the socket */
--                              sleep(10);
-+                              sleep(1);
-                       }
-               }
- #endif
-@@ -1216,6 +1250,7 @@
- {
-       int fd, on = 1;
-       struct sockaddr_in sin;
-+      int sockflags;
-       fd = socket(AF_INET, SOCK_DGRAM, 0);
-       if (fd < 0) {
-@@ -1241,6 +1276,24 @@
-               close(fd);
-               return -1;
-       }
-+      /* We must not block on the network socket, in case a packet
-+       * gets lost between select and recv, otherise the process
-+       * will stall until the timeout, and other processes trying to
-+       * log will also stall.
-+       */
-+      if ((sockflags = fcntl(fd, F_GETFL)) != -1) {
-+              sockflags |= O_NONBLOCK;
-+              /*
-+               * SETFL could fail too, so get it caught by the subsequent
-+               * error check.
-+               */
-+              sockflags = fcntl(fd, F_SETFL, sockflags);
-+      }
-+      if (sockflags == -1) {
-+              logerror("fcntl(O_NONBLOCK), suspending inet");
-+              close(fd);
-+              return -1;
-+      }
-       if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
-               logerror("bind, suspending inet");
-               close(fd);
-@@ -1254,30 +1307,26 @@
- crunch_list(list)
-       char *list;
- {
--      int count, i;
-+      int i, m, n;
-       char *p, *q;
-       char **result = NULL;
-       p = list;
-       
-       /* strip off trailing delimiters */
--      while (p[strlen(p)-1] == LIST_DELIMITER) {
--              count--;
-+      while (*p && p[strlen(p)-1] == LIST_DELIMITER)
-               p[strlen(p)-1] = '\0';
--      }
-       /* cut off leading delimiters */
--      while (p[0] == LIST_DELIMITER) {
--              count--;
-+      while (p[0] == LIST_DELIMITER)
-               p++; 
--      }
-       
--      /* count delimiters to calculate elements */
--      for (count=i=0; p[i]; i++)
--              if (p[i] == LIST_DELIMITER) count++;
-+      /* count delimiters to calculate the number of elements */
-+      for (n = i = 0; p[i]; i++)
-+              if (p[i] == LIST_DELIMITER) n++;
-       
--      if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) {
-+      if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) {
-               printf ("Sorry, can't get enough memory, exiting.\n");
--              exit(0);
-+              exit(1);
-       }
-       
-       /*
-@@ -1285,30 +1334,28 @@
-        * characters are different from any delimiters,
-        * so we don't have to care about this.
-        */
--      count = 0;
--      while ((q=strchr(p, LIST_DELIMITER))) {
--              result[count] = (char *) malloc((q - p + 1) * sizeof(char));
--              if (result[count] == NULL) {
-+      m = 0;
-+      while ((q = strchr(p, LIST_DELIMITER)) && m < n) {
-+              result[m] = (char *) malloc((q - p + 1) * sizeof(char));
-+              if (result[m] == NULL) {
-                       printf ("Sorry, can't get enough memory, exiting.\n");
--                      exit(0);
-+                      exit(1);
-               }
--              strncpy(result[count], p, q - p);
--              result[count][q - p] = '\0';
-+              memcpy(result[m], p, q - p);
-+              result[m][q - p] = '\0';
-               p = q; p++;
--              count++;
-+              m++;
-       }
--      if ((result[count] = \
--           (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) {
-+      if ((result[m] = strdup(p)) == NULL) {
-               printf ("Sorry, can't get enough memory, exiting.\n");
--              exit(0);
-+              exit(1);
-       }
--      strcpy(result[count],p);
--      result[++count] = NULL;
-+      result[++m] = NULL;
- #if 0
--      count=0;
--      while (result[count])
--              dprintf ("#%d: %s\n", count, StripDomains[count++]);
-+      m = 0;
-+      while (result[m])
-+              dprintf ("#%d: %s\n", m, result[m++]);
- #endif
-       return result;
- }
-@@ -1548,21 +1595,25 @@
-       /*
-        * Check to see if msg looks non-standard.
-+       *
-+       * A message looks like
-+       * Nov 17 11:42:33 CRON[
-+       * 01234567890123456
-+       *    ^  ^  ^  ^  ^
-+       *
-+       * Remote messages are not accompanied by a timestamp.
-+       * Local messages are accompanied by a timestamp (program's timezone)
-        */
-       msglen = strlen(msg);
--      if (msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
--          msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')
--              flags |= ADDDATE;
--
--      (void) time(&now);
--      if (flags & ADDDATE)
--              timestamp = ctime(&now) + 4;
--      else {
--              timestamp = msg;
-+      if (!(msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
-+          msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')) {
-               msg += 16;
-               msglen -= 16;
-       }
-+      (void) time(&now);
-+      timestamp = ctime(&now) + 4;
-+
-       /* extract facility and priority level */
-       if (flags & MARK)
-               fac = LOG_NFACILITIES;
-@@ -1771,7 +1822,7 @@
-                       dprintf("Not sending message to remote.\n");
-               else {
-                       f->f_time = now;
--                      (void) snprintf(line, sizeof(line), "<%d>%s\n", f->f_prevpri, \
-+                      (void) snprintf(line, sizeof(line), "<%d>%s", f->f_prevpri, \
-                               (char *) iov[4].iov_base);
-                       l = strlen(line);
-                       if (l > MAXLINE)
-@@ -1815,7 +1866,7 @@
-                       v->iov_len = 1;
-               }
-       again:
--              /* f->f_file == -1 is an indicator that the we couldn't
-+              /* f->f_file == -1 is an indicator that we couldn't
-                  open the file at startup. */
-               if (f->f_file == -1)
-                       break;
-@@ -1852,7 +1903,7 @@
-                               errno = e;
-                               logerror(f->f_un.f_fname);
-                       }
--              } else if (f->f_flags & SYNC_FILE)
-+              } else if (f->f_type == F_FILE && (f->f_flags & SYNC_FILE))
-                       (void) fsync(f->f_file);
-               break;
-@@ -1891,7 +1942,7 @@
-       register struct filed *f;
-       struct iovec *iov;
- {
--      char p[6 + UNAMESZ];
-+      char p[sizeof (_PATH_DEV) + UNAMESZ];
-       register int i;
-       int ttyf, len;
-       static int reenter = 0;
-@@ -1899,6 +1950,8 @@
-       struct utmp *uptr;
-       char greetings[200];
-+      (void) &len;
-+
-       if (reenter++)
-               return;
-@@ -1913,7 +1966,6 @@
-       if (fork() == 0) {
-               (void) signal(SIGTERM, SIG_DFL);
-               (void) alarm(0);
--              (void) signal(SIGALRM, endtty);
- #ifndef SYSV
-               (void) signal(SIGTTOU, SIG_IGN);
-               (void) sigsetmask(0);
-@@ -1929,7 +1981,7 @@
-                       /* is this slot used? */
-                       if (ut.ut_name[0] == '\0')
-                               continue;
--                      if (ut.ut_type == LOGIN_PROCESS)
-+                      if (ut.ut_type != USER_PROCESS)
-                               continue;
-                       if (!(strcmp (ut.ut_name,"LOGIN"))) /* paranoia */
-                               continue;
-@@ -1959,6 +2011,7 @@
-                               iov[1].iov_len = 0;
-                       }
-                       if (setjmp(ttybuf) == 0) {
-+                              (void) signal(SIGALRM, endtty);
-                               (void) alarm(15);
-                               /* open the terminal */
-                               ttyf = open(p, O_WRONLY|O_NOCTTY);