From e3afe2298e821d7f5860128720e665d8fb3bd641 Mon Sep 17 00:00:00 2001 From: Johannes Winkelmann Date: Thu, 23 Feb 2006 15:26:10 +0000 Subject: create branch for 2.2 --- sysklogd/.footprint | 22 ++ sysklogd/.md5sum | 5 + sysklogd/Pkgfile | 26 ++ sysklogd/rotatelog | 27 ++ sysklogd/sysklogd-1.4.1.patch | 586 ++++++++++++++++++++++++++++++++++++++++++ sysklogd/syslog | 11 + sysklogd/syslog.conf | 10 + 7 files changed, 687 insertions(+) create mode 100644 sysklogd/.footprint create mode 100644 sysklogd/.md5sum create mode 100644 sysklogd/Pkgfile create mode 100755 sysklogd/rotatelog create mode 100644 sysklogd/sysklogd-1.4.1.patch create mode 100755 sysklogd/syslog create mode 100644 sysklogd/syslog.conf (limited to 'sysklogd') 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 + +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` " + 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 + #include + #include ++#include + #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 + #include + #else /* __GLIBC__ */ +-#include ++#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 -- cgit v1.2.3