This patch seems to be for the Debian source for syslog-ng. You don't have one for the pristine source do you? Also, does anyone know when/if this patch is going into CVS? thanks, Andy Balazs Scheidler wrote:
----- Forwarded message from Aaron Schrab <aaron@schrab.com> -----
From: Aaron Schrab <aaron@schrab.com> To: 78445@bugs.debian.org Cc: control@bugs.debian.org Reply-To: Aaron Schrab <aaron@schrab.com>, 78445@bugs.debian.org Subject: Bug#78445: syslog-ng: The included libol uses va_list incorrectly. Date: Sat, 22 Sep 2001 10:47:33 -0500
tags 78445 patch thanks
The msg_vformat function from libol passes the same va_list to two different functions, expecting that the first won't affect the second. This assumption isn't true on powerpc, so when the second function gets it, there aren't any arguments left to read.
The included patch fixes this by making a copy of the va_list before passing it for the first time.
I checked for other occurences of this problem, but this seems to be the only one. My patched copy has been handling my logging for a few hours now and it seems to work fine. The unpatched one died immediately.
*** /tmp/syslog-ng.diff diff -Pur syslog-ng-1.5.9/debian/libol.patch syslog-ng-1.5.9.ats/debian/libol.patch --- syslog-ng-1.5.9/debian/libol.patch Wed Dec 31 18:00:00 1969 +++ syslog-ng-1.5.9.ats/debian/libol.patch Sat Sep 22 06:06:43 2001 @@ -0,0 +1,37 @@ +diff -ur libol-0.2.24.orig/src/format.h libol-0.2.24/src/format.h +--- libol-0.2.24.orig/src/format.h Sat Jul 10 08:23:09 1999 ++++ libol-0.2.24/src/format.h Sat Sep 22 05:56:59 2001 +@@ -28,6 +28,12 @@ + + #include <stdarg.h> + ++#ifndef va_copy ++# ifdef __va_copy ++# define va_copy __va_copy ++# endif ++#endif ++ + struct ol_string *c_format(const char *format, ...); + UINT32 c_format_length(const char *format, ...); + UINT32 c_format_write(const char *format, UINT32 length, UINT8 *buffer, ...); +diff -ur -x configure libol-0.2.24.orig/src/werror.c libol-0.2.24/src/werror.c +--- libol-0.2.24.orig/src/werror.c Fri Feb 4 13:02:04 2000 ++++ libol-0.2.24/src/werror.c Sat Sep 22 05:58:41 2001 +@@ -117,9 +117,16 @@ + { + UINT8 errorbuf[BUF_SIZE]; + int length; +- ++#ifdef va_copy ++ va_list args_copy; ++ va_copy (args_copy, args); ++#endif ++ + length = c_vformat_length(f, args); + if (length <= BUF_SIZE) { ++#ifdef va_copy ++ va_copy (args, args_copy); ++#endif + c_vformat_write(f, sizeof(errorbuf), errorbuf, args); + MSG_WRITE(level, length, errorbuf); + } diff -Pur syslog-ng-1.5.9/debian/rules syslog-ng-1.5.9.ats/debian/rules --- syslog-ng-1.5.9/debian/rules Sat Sep 22 06:08:56 2001 +++ syslog-ng-1.5.9.ats/debian/rules Sat Sep 22 06:09:13 2001 @@ -17,7 +17,7 @@ rm $(LIBOLDIR)/ltmain.sh $(LIBOLDIR)/config.sub $(LIBOLDIR)/config.guess \ $(LIBOLDIR)/aclocal.m4 $(LIBOLDIR)/missing \ $(LIBOLDIR)/ltconfig $(LIBOLDIR)/mkinstalldirs - (cd $(LIBOLDIR); ./autogen.sh; ./configure --prefix=/usr/lib; $(MAKE) ) + (cd $(LIBOLDIR); patch -p1 < ../debian/libol.patch; ./autogen.sh; ./configure --prefix=/usr/lib; $(MAKE) ) echo "libol: Done" # mv -f ltmain.sh ltmain.sh.save # mv -f config.sub config.sub.save
-- System Information Debian Release: testing/unstable Architecture: powerpc Kernel: Linux frell 2.4.10-pre10-ben0 #1 Thu Sep 20 00:45:23 CDT 2001 ppc Locale: LANG=C, LC_CTYPE=en_US
Versions of packages syslog-ng depends on: ii libc6 2.2.4-1 GNU C Library: Shared libraries an
----- End forwarded message -----
-- Bazsi PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1
_______________________________________________ syslog-ng maillist - syslog-ng@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/syslog-ng
-- Andrew Dixon Software Engineer Seranoa Networks 978.897.3434 x231