r864 - in trunk: hlfs sysklogd

archaic at linuxfromscratch.org archaic at linuxfromscratch.org
Sun Mar 13 15:19:58 PST 2005


Author: archaic
Date: 2005-03-13 16:19:57 -0700 (Sun, 13 Mar 2005)
New Revision: 864

Added:
   trunk/hlfs/sysklogd-1.4.1-fixes-1.patch
   trunk/hlfs/sysklogd-1.4.1-priv_sep-1.patch
   trunk/sysklogd/sysklogd-1.4.1-fixes-1.patch
   trunk/sysklogd/sysklogd-1.4.1-priv_sep-1.patch
Log:
Added fixes and priv_sep patches for sysklogd (hlfs).

Added: trunk/hlfs/sysklogd-1.4.1-fixes-1.patch
===================================================================
--- trunk/hlfs/sysklogd-1.4.1-fixes-1.patch	2005-03-13 23:17:49 UTC (rev 863)
+++ trunk/hlfs/sysklogd-1.4.1-fixes-1.patch	2005-03-13 23:19:57 UTC (rev 864)
@@ -0,0 +1,833 @@
+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 at altlinux.org>
++   - Close file descriptor in FindSymbolFile() in ksym.c in order not to
++     leak file descriptors.
++ . Solar Designer <solar at 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 at yahoo.com>
++   - fix memory calculation in crunch_list()
++ . Martin Schulze <joey at 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 at 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 at maths.otago.ac.nz>
++   - Improved README.linux
++ . Ulf Härnhammar <Ulf.Harnhammar.9485 at student.uu.se>
++   - Bondary check for fscanf() in InitKsyms() and CheckMapVersion()
++ . Colin Phipps <cph at cph.demon.co.uk>
++   - Don't block on the network socket in case of package los
++ . Dirk Mueller <mueller at 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 at 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 at thule.no>, Wolfgang Oertl <Wolfgang.Oertl at uibk.ac.at>
+  *	and Thomas Roessler.
++ * Thu Apr 29 15:24:07 2004: Solar Designer <solar at 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 at infodrom.ffis.de>
+  *	Close symbol file in InitKsyms() when an error occurred.
++ *
++ * Thu Apr 29 18:07:16 CEST 2004: Dmitry Levin <ldv at 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 at 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 at 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 at 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 at tamu.edu>
++    Copyright (c) 2004 Martin Schulze <joey at 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 at 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 at Infodrom.North.DE .  To subscribe send a
+-mail to Majordomo at Infodrom.North.DE with a line "subscribe sysklogd"
++The lists address is infodrom-sysklogd at lists.infodrom.org .  To subscribe send a
++mail to majordomo at 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 at 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 at linux.de
++joey at 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 at infodrom.ffis.de>
+  *	Use SOCK_DGRAM for loggin, renables it to work.	
+  *
++ * Wed Aug 27 17:48:16 CEST 2003: Martin Schulze <joey at Infodrom.org>
++ *	Improved patch by Michael Pomraning <mjp at 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 at redhat.com> for providing
+  *	a patch.
++ * Thu Apr 13 05:08:10 CEST 2001: Jon Burgess <Jon_Burgess at 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 at yahoo.com>
++ *	Correct memory allocation for for commandline arguments in
++ *	crunch_list().
++ *
++ * Thu Apr 29 12:38:39 CEST 2004: Solar Designer <solar at openwall.com>
++ *	Applied Openwall paranoia patches to improve crunch_list().
++ *
++ * Tue May  4 16:47:30 CEST 2004: Solar Designer <solar at 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 at 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 at 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 at 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 at 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);

Added: trunk/hlfs/sysklogd-1.4.1-priv_sep-1.patch
===================================================================
--- trunk/hlfs/sysklogd-1.4.1-priv_sep-1.patch	2005-03-13 23:17:49 UTC (rev 863)
+++ trunk/hlfs/sysklogd-1.4.1-priv_sep-1.patch	2005-03-13 23:19:57 UTC (rev 864)
@@ -0,0 +1,298 @@
+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://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/sysklogd/
+        sysklogd-1.4.1-caen-owl-klogd-drop-root.diff    v1.1
+        sysklogd-1.4.1-caen-owl-syslogd-drop-root.diff  v1.1
+Description: This patch adds privilege seperation for syslogd and klogd.
+
+diff -Naur sysklogd-1.4.1.orig/klogd.8 sysklogd-1.4.1/klogd.8
+--- sysklogd-1.4.1.orig/klogd.8	2005-01-22 18:49:55.000000000 +0000
++++ sysklogd-1.4.1/klogd.8	2005-01-23 10:59:57.208384154 +0000
+@@ -3,8 +3,9 @@
+ .\" Sun Jul 30 01:35:55 MET: Martin Schulze: Updates
+ .\" Sun Nov 19 23:22:21 MET: Martin Schulze: Updates
+ .\" Mon Aug 19 09:42:08 CDT 1996: Dr. G.W. Wettstein: Updates
++.\" Thu Feb 17 2000: Chris Wing: Unprivileged klogd feature
+ .\"
+-.TH KLOGD 8 "21 August, 1999" "Version 1.4" "Linux System Administration"
++.TH KLOGD 8 "8 October, 2001" "Version 1.4.1+CAEN/OW" "Linux System Administration"
+ .SH NAME
+ klogd \- Kernel Log Daemon
+ .LP
+@@ -17,6 +18,12 @@
+ .RB [ " \-f "
+ .I fname
+ ]
++.RB [ " \-u "
++.I username
++]
++.RB [ " \-j "
++.I chroot_dir
++]
+ .RB [ " \-iI " ]
+ .RB [ " \-n " ]
+ .RB [ " \-o " ]
+@@ -46,6 +53,20 @@
+ .BI "\-f " file
+ Log messages to the specified filename rather than to the syslog facility.
+ .TP
++.BI "\-u " username
++Tells klogd to become the specified user and drop root privileges before
++starting logging.
++.TP
++.BI "\-j " chroot_dir
++Tells klogd to
++.BR chroot (2)
++into this directory after initializing.
++This option is only valid if the \-u option is also used to run klogd
++without root privileges.
++Note that the use of this option will prevent \-i and \-I from working
++unless you set up the chroot directory in such a way that klogd can still
++read the kernel module symbols.
++.TP
+ .BI "\-i \-I"
+ Signal the currently executing klogd daemon.  Both of these switches control
+ the loading/reloading of symbol information.  The \-i switch signals the
+diff -Naur sysklogd-1.4.1.orig/klogd.c sysklogd-1.4.1/klogd.c
+--- sysklogd-1.4.1.orig/klogd.c	2005-01-22 18:49:55.000000000 +0000
++++ sysklogd-1.4.1/klogd.c	2005-01-23 10:59:57.212383035 +0000
+@@ -258,6 +258,8 @@
+ #include <stdarg.h>
+ #include <paths.h>
+ #include <stdlib.h>
++#include <pwd.h>
++#include <grp.h>
+ #include "klogd.h"
+ #include "ksyms.h"
+ #ifndef TESTING
+@@ -308,6 +310,9 @@
+ int debugging = 0;
+ int symbols_twice = 0;
+ 
++char *server_user = NULL;
++char *chroot_dir = NULL;
++int log_flags = 0;
+ 
+ /* Function prototypes. */
+ extern int ksyslog(int type, char *buf, int len);
+@@ -528,8 +533,9 @@
+ 	 * First do a stat to determine whether or not the proc based
+ 	 * file system is available to get kernel messages from.
+ 	 */
+-	if ( use_syscall ||
+-	    ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT)) )
++	if (!server_user &&
++	    (use_syscall ||
++	    ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT))))
+ 	{
+ 	  	/* Initialize kernel logging. */
+ 	  	ksyslog(1, NULL, 0);
+@@ -977,6 +983,27 @@
+ }
+ 
+ 
++static int drop_root(void)
++{
++	struct passwd *pw;
++
++	if (!(pw = getpwnam(server_user))) return -1;
++
++	if (!pw->pw_uid) return -1;
++
++	if (chroot_dir) {
++		if (chroot(chroot_dir)) return -1;
++		if (chdir("/")) return -1;
++	}
++
++	if (setgroups(0, NULL)) return -1;
++	if (setgid(pw->pw_gid)) return -1;
++	if (setuid(pw->pw_uid)) return -1;
++
++	return 0;
++}
++
++
+ int main(argc, argv)
+ 
+ 	int argc;
+@@ -994,7 +1021,7 @@
+ 	chdir ("/");
+ #endif
+ 	/* Parse the command-line. */
+-	while ((ch = getopt(argc, argv, "c:df:iIk:nopsvx2")) != EOF)
++	while ((ch = getopt(argc, argv, "c:df:u:j:iIk:nopsvx2")) != EOF)
+ 		switch((char)ch)
+ 		{
+ 		    case '2':		/* Print lines with symbols twice. */
+@@ -1016,6 +1043,10 @@
+ 		    case 'I':
+ 			SignalDaemon(SIGUSR2);
+ 			return(0);
++		    case 'j':		/* chroot 'j'ail */
++			chroot_dir = optarg;
++			log_flags |= LOG_NDELAY;
++			break;
+ 		    case 'k':		/* Kernel symbol file. */
+ 			symfile = optarg;
+ 			break;
+@@ -1031,6 +1062,9 @@
+ 		    case 's':		/* Use syscall interface. */
+ 			use_syscall = 1;
+ 			break;
++		    case 'u':		/* Run as this user */
++			server_user = optarg;
++			break;
+ 		    case 'v':
+ 			printf("klogd %s.%s\n", VERSION, PATCHLEVEL);
+ 			exit (1);
+@@ -1039,6 +1073,10 @@
+ 			break;
+ 		}
+ 
++	if (chroot_dir && !server_user) {
++		fputs("'-j' is only valid with '-u'", stderr);
++		exit(1);
++	}
+ 
+ 	/* Set console logging level. */
+ 	if ( log_level != (char *) 0 )
+@@ -1136,7 +1174,7 @@
+ 		}
+ 	}
+ 	else
+-		openlog("kernel", 0, LOG_KERN);
++		openlog("kernel", log_flags, LOG_KERN);
+ 
+ 
+ 	/* Handle one-shot logging. */
+@@ -1163,6 +1201,11 @@
+ 		InitMsyms();
+ 	}
+ 
++	if (server_user && drop_root()) {
++		syslog(LOG_ALERT, "klogd: failed to drop root");
++		Terminate();
++	}
++
+         /* The main loop. */
+ 	while (1)
+ 	{
+diff -Naur sysklogd-1.4.1.orig/sysklogd.8 sysklogd-1.4.1/sysklogd.8
+--- sysklogd-1.4.1.orig/sysklogd.8	2005-01-22 18:49:55.000000000 +0000
++++ sysklogd-1.4.1/sysklogd.8	2005-01-23 11:00:07.985367732 +0000
+@@ -29,6 +29,9 @@
+ .RB [ " \-s "
+ .I domainlist
+ ]
++.RB [ " \-u"
++.IB username
++]
+ .RB [ " \-v " ]
+ .LP
+ .SH DESCRIPTION
+@@ -150,6 +153,19 @@
+ no domain would be cut, you will have to specify two domains like:
+ .BR "\-s north.de:infodrom.north.de" .
+ .TP
++.BI "\-u " "username"
++This causes the
++.B syslogd
++daemon to become the named user before starting up logging.
++
++Note that when this option is in use,
++.B syslogd
++will open all log files as root when the daemon is first started;
++however, after a
++.B SIGHUP
++the files will be reopened as the non-privileged user.  You should
++take this into account when deciding the ownership of the log files.
++.TP
+ .B "\-v"
+ Print version and exit.
+ .LP
+diff -Naur sysklogd-1.4.1.orig/syslogd.c sysklogd-1.4.1/syslogd.c
+--- sysklogd-1.4.1.orig/syslogd.c	2005-01-22 18:49:55.000000000 +0000
++++ sysklogd-1.4.1/syslogd.c	2005-01-23 11:05:40.747216393 +0000
+@@ -491,6 +491,10 @@
+ #include <arpa/nameser.h>
+ #include <arpa/inet.h>
+ #include <resolv.h>
++
++#include <pwd.h>
++#include <grp.h>
++
+ #ifndef TESTING
+ #include "pidfile.h"
+ #endif
+@@ -735,6 +739,7 @@
+ char	**LocalHosts = NULL;	/* these hosts are logged with their hostname */
+ int	NoHops = 1;		/* Can we bounce syslog messages through an
+ 				   intermediate host. */
++char	*server_user = NULL;	/* user name to run server as */
+ 
+ extern	int errno;
+ 
+@@ -776,6 +781,21 @@
+ static int create_inet_socket();
+ #endif
+ 
++static int drop_root(void)
++{
++	struct passwd *pw;
++
++	if (!(pw = getpwnam(server_user))) return -1;
++
++	if (!pw->pw_uid) return -1;
++
++	if (initgroups(server_user, pw->pw_gid)) return -1;
++	if (setgid(pw->pw_gid)) return -1;
++	if (setuid(pw->pw_uid)) return -1;
++
++	return 0;
++}
++
+ int main(argc, argv)
+ 	int argc;
+ 	char **argv;
+@@ -829,7 +849,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:u:v")) != EOF)
+ 		switch((char)ch) {
+ 		case 'a':
+ 			if (nfunix < MAXFUNIX)
+@@ -874,6 +894,9 @@
+ 			}
+ 			StripDomains = crunch_list(optarg);
+ 			break;
++		case 'u':
++			server_user = optarg;
++			break;
+ 		case 'v':
+ 			printf("syslogd %s.%s\n", VERSION, PATCHLEVEL);
+ 			exit (0);
+@@ -1021,6 +1044,11 @@
+ 		kill (ppid, SIGTERM);
+ #endif
+ 
++	if (server_user && drop_root()) {
++		dprintf("syslogd: failed to drop root\n");
++		exit(1);
++	}
++
+ 	/* Main loop begins here. */
+ 	for (;;) {
+ 		int nfds;
+@@ -1175,7 +1203,7 @@
+ int usage()
+ {
+ 	fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
+-		" [-s domainlist] [-f conffile]\n");
++		" [-s domainlist] [-f conffile] [-u username]\n");
+ 	exit(1);
+ }
+ 

Added: trunk/sysklogd/sysklogd-1.4.1-fixes-1.patch
===================================================================
--- trunk/sysklogd/sysklogd-1.4.1-fixes-1.patch	2005-03-13 23:17:49 UTC (rev 863)
+++ trunk/sysklogd/sysklogd-1.4.1-fixes-1.patch	2005-03-13 23:19:57 UTC (rev 864)
@@ -0,0 +1 @@
+link ../hlfs/sysklogd-1.4.1-fixes-1.patch
\ No newline at end of file


Property changes on: trunk/sysklogd/sysklogd-1.4.1-fixes-1.patch
___________________________________________________________________
Name: svn:special
   + *

Added: trunk/sysklogd/sysklogd-1.4.1-priv_sep-1.patch
===================================================================
--- trunk/sysklogd/sysklogd-1.4.1-priv_sep-1.patch	2005-03-13 23:17:49 UTC (rev 863)
+++ trunk/sysklogd/sysklogd-1.4.1-priv_sep-1.patch	2005-03-13 23:19:57 UTC (rev 864)
@@ -0,0 +1 @@
+link ../hlfs/sysklogd-1.4.1-priv_sep-1.patch
\ No newline at end of file


Property changes on: trunk/sysklogd/sysklogd-1.4.1-priv_sep-1.patch
___________________________________________________________________
Name: svn:special
   + *




More information about the patches mailing list