summaryrefslogtreecommitdiff
path: root/sysklogd
diff options
context:
space:
mode:
authorJohannes Winkelmann <jw@smts.ch>2006-02-23 15:26:10 +0000
committerJohannes Winkelmann <jw@smts.ch>2006-02-23 15:26:10 +0000
commite3afe2298e821d7f5860128720e665d8fb3bd641 (patch)
treebfb499432688352b1140b13ad8252c8e4e739006 /sysklogd
downloadcore-e3afe2298e821d7f5860128720e665d8fb3bd641.tar.gz
core-e3afe2298e821d7f5860128720e665d8fb3bd641.tar.xz
create branch for 2.2
Diffstat (limited to 'sysklogd')
-rw-r--r--sysklogd/.footprint22
-rw-r--r--sysklogd/.md5sum5
-rw-r--r--sysklogd/Pkgfile26
-rwxr-xr-xsysklogd/rotatelog27
-rw-r--r--sysklogd/sysklogd-1.4.1.patch586
-rwxr-xr-xsysklogd/syslog11
-rw-r--r--sysklogd/syslog.conf10
7 files changed, 687 insertions, 0 deletions
diff --git a/sysklogd/.footprint b/sysklogd/.footprint
new file mode 100644
index 00000000..65963d19
--- /dev/null
+++ b/sysklogd/.footprint
@@ -0,0 +1,22 @@
+drwxr-xr-x root/root etc/
+drwxr-xr-x root/root etc/cron/
+drwxr-xr-x root/root etc/cron/weekly/
+-rwxr-xr-x root/root etc/cron/weekly/syslog
+-rw-r--r-- root/root etc/syslog.conf
+drwxr-xr-x root/root usr/
+drwxr-xr-x root/root usr/man/
+drwxr-xr-x root/root usr/man/man5/
+-rw-r--r-- root/root usr/man/man5/syslog.conf.5.gz
+drwxr-xr-x root/root usr/man/man8/
+-rw-r--r-- root/root usr/man/man8/klogd.8.gz
+-rw-r--r-- root/root usr/man/man8/sysklogd.8.gz
+-rw-r--r-- root/root usr/man/man8/syslogd.8.gz
+drwxr-xr-x root/root usr/sbin/
+-rwx------ root/root usr/sbin/klogd
+-rwxr-xr-x root/root usr/sbin/rotatelog
+-rwx------ root/root usr/sbin/syslogd
+drwxr-xr-x root/root var/
+drwxr-xr-x root/root var/log/
+-rw-r----- root/root var/log/auth (EMPTY)
+-rw-r----- root/root var/log/mail (EMPTY)
+-rw-r----- root/root var/log/messages (EMPTY)
diff --git a/sysklogd/.md5sum b/sysklogd/.md5sum
new file mode 100644
index 00000000..5f413397
--- /dev/null
+++ b/sysklogd/.md5sum
@@ -0,0 +1,5 @@
+b379693c8b89c99994e58efd49f98a71 rotatelog
+ee4ba45c59bb1098c0b05b5546a46c2f sysklogd-1.4.1.patch
+d214aa40beabf7bdb0c9b3c64432c774 sysklogd-1.4.1.tar.gz
+bf5c13b44ab9fa15cda9bfa9df9b584e syslog
+022ca2758664748ae096d57eac9ac555 syslog.conf
diff --git a/sysklogd/Pkgfile b/sysklogd/Pkgfile
new file mode 100644
index 00000000..6606cb84
--- /dev/null
+++ b/sysklogd/Pkgfile
@@ -0,0 +1,26 @@
+# Description: Kernel and system logging daemons
+# URL: http://www.infodrom.org/projects/sysklogd/
+# Maintainer: Per Lidén <per@fukt.bth.se>
+
+name=sysklogd
+version=1.4.1
+release=5
+source=(http://www.ibiblio.org/pub/Linux/system/daemons/$name-$version.tar.gz \
+ rotatelog syslog syslog.conf $name-$version.patch)
+
+build() {
+ cd $name-$version
+ patch -p1 < ../$name-$version.patch
+ mkdir -p $PKG/usr/sbin \
+ $PKG/etc/cron/weekly \
+ $PKG/var/log \
+ $PKG/usr/man/{man5,man8}
+ make RPM_OPT_FLAGS="$CFLAGS" all
+ make BINDIR=$PKG/usr/sbin MANDIR=$PKG/usr/man install
+ install -m 755 ../rotatelog $PKG/usr/sbin
+ install -m 755 ../syslog $PKG/etc/cron/weekly
+ install -m 644 ../syslog.conf $PKG/etc
+ chmod -R +w $PKG
+ touch $PKG/var/log/{messages,auth,mail}
+ chmod 640 $PKG/var/log/{messages,auth,mail}
+}
diff --git a/sysklogd/rotatelog b/sysklogd/rotatelog
new file mode 100755
index 00000000..7ecb6235
--- /dev/null
+++ b/sysklogd/rotatelog
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# /usr/sbin/rotatelog: rotate logfile
+#
+
+if [ "$1" = "" ]; then
+ echo "usage : `basename $0` <logfile>"
+ exit 1
+fi
+
+if [ ! -f /var/log/$1 ]; then
+ echo "`basename $0`: /var/log/$1 not found"
+ exit 1
+fi
+
+[ -f /var/log/old/$1.9 ] && rm /var/log/old/$1.9
+[ -f /var/log/old/$1.8 ] && mv /var/log/old/$1.8 /var/log/old/$1.9
+[ -f /var/log/old/$1.7 ] && mv /var/log/old/$1.7 /var/log/old/$1.8
+[ -f /var/log/old/$1.6 ] && mv /var/log/old/$1.6 /var/log/old/$1.7
+[ -f /var/log/old/$1.5 ] && mv /var/log/old/$1.5 /var/log/old/$1.6
+[ -f /var/log/old/$1.4 ] && mv /var/log/old/$1.4 /var/log/old/$1.5
+[ -f /var/log/old/$1.3 ] && mv /var/log/old/$1.3 /var/log/old/$1.4
+[ -f /var/log/old/$1.2 ] && mv /var/log/old/$1.2 /var/log/old/$1.3
+[ -f /var/log/old/$1.1 ] && mv /var/log/old/$1.1 /var/log/old/$1.2
+[ -f /var/log/$1 ] && (cp /var/log/$1 /var/log/old/$1.1; echo -n "" > /var/log/$1)
+
+# End of file
diff --git a/sysklogd/sysklogd-1.4.1.patch b/sysklogd/sysklogd-1.4.1.patch
new file mode 100644
index 00000000..85cf6e0c
--- /dev/null
+++ b/sysklogd/sysklogd-1.4.1.patch
@@ -0,0 +1,586 @@
+diff -Nru sysklogd-1.4.1/Makefile sysklogd-1.4.1-new/Makefile
+--- sysklogd-1.4.1/Makefile 1998-10-12 22:25:15.000000000 +0200
++++ sysklogd-1.4.1-new/Makefile 2004-09-21 23:00:34.656626400 +0200
+@@ -3,13 +3,13 @@
+ CC= gcc
+ #CFLAGS= -g -DSYSV -Wall
+ #LDFLAGS= -g
+-CFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
+-LDFLAGS= -s
++CFLAGS= $(RPM_OPT_FLAGS) -DSYSV -D_GNU_SOURCE -Wall
++LDFLAGS=
+
+ # Look where your install program is.
+ INSTALL = /usr/bin/install
+-BINDIR = /usr/sbin
+-MANDIR = /usr/man
++BINDIR = $(TOPDIR)/sbin
++MANDIR = $(TOPDIR)/usr/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
+@@ -106,17 +106,51 @@
+ ${CC} ${CFLAGS} -DTEST -o ksym_test.o -c ksym.c
+
+ clean:
+- rm -f *.o *.log *~ *.orig
++ rm -f *.o *.log *~ *.orig sysklogd-*.tar.gz syslogd klogd
+
+ clobber: clean
+ rm -f syslogd klogd ksym syslog_tst oops_test TAGS tsyslogd tklogd
+
+ install_exec: syslogd klogd
+- ${INSTALL} -m 500 -s syslogd ${BINDIR}/syslogd
+- ${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
++ ${INSTALL} -m 500 syslogd ${BINDIR}/syslogd
++ ${INSTALL} -m 500 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} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
++ ${INSTALL} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
++ ${INSTALL} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
++ ${INSTALL} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
++
++
++## Red Hat specific additions
++
++VER1 = $(shell awk '/VERSION/ { print $$3 }' version.h | sed 's|"||g')
++VER2 = $(shell awk '/PATCHLEVEL/ { print $$3 }' version.h | sed 's|"||g')
++VERSION = $(VER1).$(VER2)
++RELEASE = $(shell awk '/Release:/ { print $$2 }' sysklogd.spec.in)
++CVSTAG = sysklogd-$(subst .,_,$(VERSION))-$(subst .,-,$(RELEASE))
++
++changelog:
++ rcs2log | sed "s|@.*redhat\.com|@redhat.com|" | sed "s|@@|@|" | \
++ sed "s|/mnt/devel/CVS/sysklogd/||g" > redhat/changenew
++ mv redhat/ChangeLog redhat/ChangeLog.old
++ cat redhat/changenew redhat/ChangeLog.old > redhat/ChangeLog
++ rm -f redhat/changenew
++
++tag-archive:
++ @cvs -Q tag -F $(CVSTAG)
++
++create-archive:
++ @rm -rf /tmp/sysklogd
++ @cd /tmp ; cvs -Q -d $(CVSROOT) export -r$(CVSTAG) sysklogd || echo "Um... export aborted."
++ @sed 's/VERSIONSUBST/$(VERSION)/' < /tmp/sysklogd/sysklogd.spec.in > /tmp/sysklogd/sysklogd.spec
++ @rm /tmp/sysklogd/sysklogd.spec.in
++ @mv /tmp/sysklogd /tmp/sysklogd-$(VERSION)rh
++ @cd /tmp ; tar -czSpf sysklogd-$(VERSION)rh.tar.gz sysklogd-$(VERSION)rh
++ @rm -rf /tmp/sysklogd-$(VERSION)rh
++ @cp /tmp/sysklogd-$(VERSION)rh.tar.gz .
++ @rm -f /tmp/sysklogd-$(VERSION)rh.tar.gz
++ @echo ""
++ @echo "The final archive is in sysklogd-$(VERSION)rh.tar.gz"
++
++archive: clean tag-archive create-archive
+diff -Nru sysklogd-1.4.1/klogd.c sysklogd-1.4.1-new/klogd.c
+--- sysklogd-1.4.1/klogd.c 2001-03-11 20:40:10.000000000 +0100
++++ sysklogd-1.4.1-new/klogd.c 2004-09-21 23:00:13.203887712 +0200
+@@ -275,6 +275,10 @@
+ #define ksyslog klogctl
+ #endif
+
++#ifndef _PATH_KLOG
++#define _PATH_KLOG "/proc/kmsg"
++#endif
++
+ #define LOG_BUFFER_SIZE 4096
+ #define LOG_LINE_LENGTH 1000
+
+@@ -291,7 +295,7 @@
+ terminate = 0,
+ caught_TSTP = 0,
+ reload_symbols = 0,
+- console_log_level = -1;
++ console_log_level = 6;
+
+ static int use_syscall = 0,
+ one_shot = 0,
+@@ -509,8 +513,7 @@
+
+
+ /* Set level of kernel console messaging.. */
+- if ( (console_log_level != -1)
+- && (ksyslog(8, NULL, console_log_level) < 0) && \
++ if ( (ksyslog(8, NULL, console_log_level) < 0) && \
+ (errno == EINVAL) )
+ {
+ /*
+@@ -887,8 +890,7 @@
+ value = strtoul(sym_start+1, (char **) 0, 16);
+ *(line-1) = '>'; /* put back delim */
+
+- symbol = LookupSymbol(value, &sym);
+- if ( !symbol_lookup || symbol == (char *) 0 )
++ if ( !symbol_lookup || (symbol = LookupSymbol(value, &sym)) == (char *)0 )
+ {
+ parse_state = PARSING_TEXT;
+ break;
+@@ -938,7 +940,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;
+@@ -1143,8 +1145,11 @@
+ if ( one_shot )
+ {
+ if (symbol_lookup) {
+- InitKsyms(symfile);
+- InitMsyms();
++ symbol_lookup = (InitKsyms(symfile) == 1);
++ symbol_lookup |= InitMsyms();
++ if (symbol_lookup == 0) {
++ Syslog(LOG_WARNING, "cannot find any symbols, turning off symbol lookups\n");
++ }
+ }
+ if ( (logsrc = GetKernelLogSrc()) == kernel )
+ LogKernelLine();
+@@ -1159,8 +1164,11 @@
+ #endif
+ logsrc = GetKernelLogSrc();
+ if (symbol_lookup) {
+- InitKsyms(symfile);
+- InitMsyms();
++ symbol_lookup = (InitKsyms(symfile) == 1);
++ symbol_lookup |= InitMsyms();
++ if (symbol_lookup == 0) {
++ Syslog(LOG_WARNING, "cannot find any symbols, turning off symbol lookups\n");
++ }
+ }
+
+ /* The main loop. */
+diff -Nru sysklogd-1.4.1/ksym.c sysklogd-1.4.1-new/ksym.c
+--- sysklogd-1.4.1/ksym.c 2000-09-12 23:53:31.000000000 +0200
++++ sysklogd-1.4.1-new/ksym.c 2004-09-21 23:00:13.204887560 +0200
+@@ -112,6 +112,7 @@
+ #include <stdlib.h>
+ #include <malloc.h>
+ #include <sys/utsname.h>
++#include <ctype.h>
+ #include "klogd.h"
+ #include "ksyms.h"
+
+@@ -344,6 +345,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 +354,7 @@
+ if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
+ if (CheckMapVersion(symfile) == 1)
+ file = symfile;
++ fclose(sym_file);
+ }
+ }
+
+diff -Nru sysklogd-1.4.1/ksym_mod.c sysklogd-1.4.1-new/ksym_mod.c
+--- sysklogd-1.4.1/ksym_mod.c 2000-09-12 23:15:28.000000000 +0200
++++ sysklogd-1.4.1-new/ksym_mod.c 2004-09-21 23:00:13.205887408 +0200
+@@ -93,7 +93,7 @@
+ #include <linux/time.h>
+ #include <linux/module.h>
+ #else /* __GLIBC__ */
+-#include <linux/module.h>
++#include "module.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__ */
+diff -Nru sysklogd-1.4.1/module.h sysklogd-1.4.1-new/module.h
+--- sysklogd-1.4.1/module.h 1970-01-01 01:00:00.000000000 +0100
++++ sysklogd-1.4.1-new/module.h 2004-09-21 23:00:13.205887408 +0200
+@@ -0,0 +1,62 @@
++
++/* Module definitions for klogd's module support */
++struct kernel_sym
++{
++ unsigned long value;
++ char name[60];
++};
++
++struct module_symbol
++{
++ unsigned long value;
++ const char *name;
++};
++
++struct module_ref
++{
++ struct module *dep; /* "parent" pointer */
++ struct module *ref; /* "child" pointer */
++ struct module_ref *next_ref;
++};
++
++struct module_info
++{
++ unsigned long addr;
++ unsigned long size;
++ unsigned long flags;
++ long usecount;
++};
++
++
++typedef struct { volatile int counter; } atomic_t;
++
++struct module
++{
++ unsigned long size_of_struct; /* == sizeof(module) */
++ struct module *next;
++ const char *name;
++ unsigned long size;
++
++ union
++ {
++ atomic_t 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
++};
++
+diff -Nru sysklogd-1.4.1/sysklogd.8 sysklogd-1.4.1-new/sysklogd.8
+--- sysklogd-1.4.1/sysklogd.8 2001-03-11 20:35:51.000000000 +0100
++++ sysklogd-1.4.1-new/sysklogd.8 2004-09-21 23:00:13.206887256 +0200
+@@ -30,6 +30,7 @@
+ .I domainlist
+ ]
+ .RB [ " \-v " ]
++.RB [ " \-x " ]
+ .LP
+ .SH DESCRIPTION
+ .B Sysklogd
+@@ -152,6 +153,11 @@
+ .TP
+ .B "\-v"
+ Print version and exit.
++.TP
++.B "\-x"
++Disable name lookups when receiving remote messages.
++This avoids deadlocks when the nameserver is running on
++the same machine that runs the syslog daemon.
+ .LP
+ .SH SIGNALS
+ .B Syslogd
+diff -Nru sysklogd-1.4.1/syslog_tst.c sysklogd-1.4.1-new/syslog_tst.c
+--- sysklogd-1.4.1/syslog_tst.c 1997-06-02 19:21:41.000000000 +0200
++++ sysklogd-1.4.1-new/syslog_tst.c 2004-09-21 23:00:13.206887256 +0200
+@@ -42,7 +42,7 @@
+ if ( (nl = strrchr(bufr, '\n')) != \
+ (char *) 0)
+ *nl = '\0';
+- syslog(LOG_INFO, bufr);
++ syslog(LOG_INFO, "%s", bufr);
+ logged += strlen(bufr);
+ if ( logged > 1024 )
+ {
+@@ -54,7 +54,7 @@
+ }
+ else
+ while (argc-- > 1)
+- syslog(LOG_INFO, argv++[1]);
++ syslog(LOG_INFO, "%s", argv++[1]);
+ }
+ else
+ {
+diff -Nru sysklogd-1.4.1/syslogd.c sysklogd-1.4.1-new/syslogd.c
+--- sysklogd-1.4.1/syslogd.c 2001-03-11 20:40:10.000000000 +0100
++++ sysklogd-1.4.1-new/syslogd.c 2004-09-21 23:00:13.209886800 +0200
+@@ -637,8 +637,8 @@
+ * in seconds after previous message is logged. After each flush,
+ * we move to the next interval until we reach the largest.
+ */
+-int repeatinterval[] = { 30, 60 }; /* # of secs before flush */
+-#define MAXREPEAT ((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1)
++time_t repeatinterval[] = { 30, 60 }; /* # of secs before flush */
++#define MAXREPEAT ((int) ((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1))
+ #define REPEATTIME(f) ((f)->f_time + repeatinterval[(f)->f_repeatcount])
+ #define BACKOFF(f) { if (++(f)->f_repeatcount > MAXREPEAT) \
+ (f)->f_repeatcount = MAXREPEAT; \
+@@ -730,6 +730,7 @@
+ int MarkInterval = 20 * 60; /* interval between marks in seconds */
+ int MarkSeq = 0; /* mark sequence number */
+ int NoFork = 0; /* don't fork - don't run in daemon mode */
++int DisableDNS = 0; /* don't look up IP addresses of incoming messages */
+ int AcceptRemote = 0; /* receive messages that come via UDP */
+ char **StripDomains = NULL; /* these domains may be stripped before writing logs */
+ char **LocalHosts = NULL; /* these hosts are logged with their hostname */
+@@ -743,7 +744,7 @@
+ char **crunch_list(char *list);
+ int usage(void);
+ void untty(void);
+-void printchopped(const char *hname, char *msg, int len, int fd);
++void printchopped(const char *hname, char *msg, size_t len, int fd);
+ void printline(const char *hname, char *msg);
+ void printsys(char *msg);
+ void logmsg(int pri, char *msg, const char *from, int flags);
+@@ -786,7 +787,7 @@
+ int len, num_fds;
+ #else /* __GLIBC__ */
+ #ifndef TESTING
+- size_t len;
++ socklen_t len;
+ #endif
+ int num_fds;
+ #endif /* __GLIBC__ */
+@@ -829,7 +830,7 @@
+ funix[i] = -1;
+ }
+
+- while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:v")) != EOF)
++ while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:vx")) != EOF)
+ switch((char)ch) {
+ case 'a':
+ if (nfunix < MAXFUNIX)
+@@ -877,6 +878,9 @@
+ case 'v':
+ printf("syslogd %s.%s\n", VERSION, PATCHLEVEL);
+ exit (0);
++ case 'x':
++ DisableDNS = 1;
++ break;
+ case '?':
+ default:
+ usage();
+@@ -890,11 +894,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
+@@ -906,6 +910,7 @@
+ */
+ exit(1);
+ }
++ signal (SIGTERM, SIG_DFL);
+ num_fds = getdtablesize();
+ for (i= 0; i < num_fds; i++)
+ (void) close(i);
+@@ -1074,9 +1079,9 @@
+ (fd_set *) NULL, (struct timeval *) NULL);
+ if ( restart )
+ {
++ restart = 0;
+ dprintf("\nReceived SIGHUP, reloading syslogd.\n");
+ init();
+- restart = 0;
+ continue;
+ }
+ if (nfds == 0) {
+@@ -1145,8 +1150,7 @@
+ dprintf("INET socket error: %d = %s.\n", \
+ errno, strerror(errno));
+ logerror("recvfrom inet");
+- /* should be harmless now that we set
+- * BSDCOMPAT on the socket */
++ /* should be harmless */
+ sleep(10);
+ }
+ }
+@@ -1174,7 +1178,7 @@
+
+ int usage()
+ {
+- fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
++ fprintf(stderr, "usage: syslogd [-drvxh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
+ " [-s domainlist] [-f conffile]\n");
+ exit(1);
+ }
+@@ -1232,15 +1236,6 @@
+ close(fd);
+ return -1;
+ }
+- /* We need to enable BSD compatibility. Otherwise an attacker
+- * could flood our log files by sending us tons of ICMP errors.
+- */
+- if (setsockopt(fd, SOL_SOCKET, SO_BSDCOMPAT, \
+- (char *) &on, sizeof(on)) < 0) {
+- logerror("setsockopt(BSDCOMPAT), suspending inet");
+- close(fd);
+- return -1;
+- }
+ if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
+ logerror("bind, suspending inet");
+ close(fd);
+@@ -1254,30 +1249,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 +1276,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;
+ }
+@@ -1346,7 +1335,7 @@
+ void printchopped(hname, msg, len, fd)
+ const char *hname;
+ char *msg;
+- int len;
++ size_t len;
+ int fd;
+ {
+ auto int ptlngth;
+@@ -1446,6 +1435,7 @@
+ while ((c = *p++) && q < &line[sizeof(line) - 4]) {
+ if (c == '\n')
+ *q++ = ' ';
++#if 0
+ else if (c < 040) {
+ *q++ = '^';
+ *q++ = c ^ 0100;
+@@ -1454,7 +1444,9 @@
+ *q++ = '0' + ((c & 0300) >> 6);
+ *q++ = '0' + ((c & 0070) >> 3);
+ *q++ = '0' + (c & 0007);
+- } else
++ }
++#endif
++ else
+ *q++ = c;
+ }
+ *q = '\0';
+@@ -1839,7 +1831,7 @@
+ #else
+ && e == EBADF) {
+ #endif
+- f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY);
++ f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY|O_LARGEFILE);
+ if (f->f_file < 0) {
+ f->f_type = F_UNUSED;
+ logerror(f->f_un.f_fname);
+@@ -1929,7 +1921,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;
+@@ -2013,7 +2005,10 @@
+ dprintf("Malformed from address.\n");
+ return ("???");
+ }
+- hp = gethostbyaddr((char *) &f->sin_addr, sizeof(struct in_addr), \
++ if (DisableDNS)
++ hp = 0;
++ else
++ hp = gethostbyaddr((char *) &f->sin_addr, sizeof(struct in_addr), \
+ f->sin_family);
+ if (hp == 0) {
+ dprintf("Host name for your address (%s) unknown.\n",
+@@ -2640,7 +2635,7 @@
+ f->f_file = open(++p, O_RDWR|O_NONBLOCK);
+ f->f_type = F_PIPE;
+ } else {
+- f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
++ f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY|O_LARGEFILE,
+ 0644);
+ f->f_type = F_FILE;
+ }
diff --git a/sysklogd/syslog b/sysklogd/syslog
new file mode 100755
index 00000000..89f71c4b
--- /dev/null
+++ b/sysklogd/syslog
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# /etc/cron/weekly/syslog: rotate log files
+#
+
+/usr/sbin/rotatelog cron
+/usr/sbin/rotatelog auth
+/usr/sbin/rotatelog mail
+/usr/sbin/rotatelog messages
+
+# End of file
diff --git a/sysklogd/syslog.conf b/sysklogd/syslog.conf
new file mode 100644
index 00000000..4222a1b4
--- /dev/null
+++ b/sysklogd/syslog.conf
@@ -0,0 +1,10 @@
+#
+# /etc/syslog.conf
+#
+
+*.emerg *
+authpriv.*;auth.* /var/log/auth
+mail.* -/var/log/mail
+*.info;authpriv,auth,mail.none /var/log/messages
+
+# End of file

Generated by cgit