From aa07f62f10d3dd32c462d585cc88854d2122703a Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 25 Apr 2009 04:21:30 +0200 Subject: Fix compiler warnings Include for memcpy and strlen. --- runtime/vm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/runtime/vm.c b/runtime/vm.c index bc6c3dd2..f1fbcc2e 100644 --- a/runtime/vm.c +++ b/runtime/vm.c @@ -25,6 +25,7 @@ #include "config.h" #include +#include #include #include "rsyslog.h" -- cgit From 547e50c9fc9e009c54c5aa021ca9d9a8399d744a Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Tue, 12 May 2009 09:34:27 +0200 Subject: patch from Michael Biebl did not apply completely - manually done... --- tcps_sess.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tcps_sess.c b/tcps_sess.c index f5420fc0..3024c313 100644 --- a/tcps_sess.c +++ b/tcps_sess.c @@ -29,6 +29,7 @@ */ #include "config.h" #include +#include #include #include #include -- cgit From b47d95286bd78282c57fdc200f81d17b187a45dd Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Tue, 12 May 2009 12:03:00 +0200 Subject: bugfix: potential segfault issue when multiple $UDPServerRun directives are specified. Thanks to Michael Biebl for helping to debug this one. --- ChangeLog | 2 ++ plugins/imudp/imudp.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4bf5c000..c8b6cbfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ Version 3.22.1 [v3-stable] (rgerhards), 2009-04-?? - bugfix: light and full delay watermarks had invalid values, badly affecting performance for delayable inputs +- bugfix: potential segfault issue when multiple $UDPServerRun directives + are specified. Thanks to Michael Biebl for helping to debug this one. --------------------------------------------------------------------------- Version 3.22.0 [v3-stable] (rgerhards), 2009-04-21 This is the first stable release that includes the full functionality diff --git a/plugins/imudp/imudp.c b/plugins/imudp/imudp.c index e9e82b20..79d51263 100644 --- a/plugins/imudp/imudp.c +++ b/plugins/imudp/imudp.c @@ -101,7 +101,7 @@ static rsRetVal addListner(void __attribute__((unused)) *pVal, uchar *pNewVal) udpLstnSocks = newSocks; } else { /* we need to add them */ - if((tmpSocks = malloc(sizeof(int) * 1 + newSocks[0] + udpLstnSocks[0])) == NULL) { + if((tmpSocks = malloc(sizeof(int) * (1 + newSocks[0] + udpLstnSocks[0]))) == NULL) { dbgprintf("out of memory trying to allocate udp listen socket array\n"); /* in this case, we discard the new sockets but continue with what we * already have -- cgit From 362c006f0ff9f917adfa8a60931e339d31b4699a Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Tue, 19 May 2009 09:18:51 +0200 Subject: relaxed GnuTLS version requirement to 1.4.0 after confirmation from the field that this version is sufficient. I always thought so (I think I developed under 1.4.x), but had no longer an environment to verify. Most imporantly, this means that Centos users will have much less trouble building rsyslog/tls support. --- ChangeLog | 2 ++ configure.ac | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c8b6cbfa..d3f6fd3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ Version 3.22.1 [v3-stable] (rgerhards), 2009-04-?? affecting performance for delayable inputs - bugfix: potential segfault issue when multiple $UDPServerRun directives are specified. Thanks to Michael Biebl for helping to debug this one. +- relaxed GnuTLS version requirement to 1.4.0 after confirmation from the + field that this version is sufficient --------------------------------------------------------------------------- Version 3.22.0 [v3-stable] (rgerhards), 2009-04-21 This is the first stable release that includes the full functionality diff --git a/configure.ac b/configure.ac index 38e7dcbc..9f7e27a0 100644 --- a/configure.ac +++ b/configure.ac @@ -517,7 +517,7 @@ AC_ARG_ENABLE(gnutls, [enable_gnutls=no] ) if test "x$enable_gnutls" = "xyes"; then - PKG_CHECK_MODULES(GNUTLS, gnutls >= 2.0.0) + PKG_CHECK_MODULES(GNUTLS, gnutls >= 1.4.0) fi AM_CONDITIONAL(ENABLE_GNUTLS, test x$enable_gnutls = xyes) AC_SUBST(GNUTLS_CFLAGS) -- cgit From d8ba1a0d9f1f90c250cc2405f87be151ac609968 Mon Sep 17 00:00:00 2001 From: varmojfekoj Date: Thu, 28 May 2009 16:01:34 +0200 Subject: bugfix: internal messages were emitted to whatever file had fd2 ...when rsyslogd ran in forked mode (as usual!) Signed-off-by: Rainer Gerhards --- ChangeLog | 3 +++ tools/syslogd.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d3f6fd3d..6e7f552d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +- bugfix: internal messages were emitted to whatever file had fd2 when + rsyslogd ran in forked mode (as usual!) + Thanks to varmojfekoj for the patch --------------------------------------------------------------------------- Version 3.22.1 [v3-stable] (rgerhards), 2009-04-?? - bugfix: light and full delay watermarks had invalid values, badly diff --git a/tools/syslogd.c b/tools/syslogd.c index b0d6fa25..1840030b 100644 --- a/tools/syslogd.c +++ b/tools/syslogd.c @@ -925,7 +925,7 @@ logmsgInternal(int iErr, int pri, uchar *msg, int flags) * permits us to process unmodified config files which otherwise contain a * supressor statement. */ - if(bErrMsgToStderr || iConfigVerify) { + if(((Debug || NoFork) && bErrMsgToStderr) || iConfigVerify) { fprintf(stderr, "rsyslogd: %s\n", msg); } -- cgit From 23dac82b684e966490de707a44144b3ad0ce2323 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Thu, 28 May 2009 17:59:11 +0200 Subject: small enhancement: config validation run now exits with code 1 if an error is detected. This change is considered important but small enough to apply it directly to the stable version. [But it is a border case, the change requires more code than I had hoped. Thus I have NOT tried to actually catch all cases, this is left for the current devel releases, if necessary] --- ChangeLog | 6 ++++++ runtime/conf.c | 6 ++++++ tests/DevNull.cfgtest | 1 - tests/Makefile.am | 6 +++++- tests/NoExistFile.cfgtest | 1 - tests/testsuites/invalid.conf | 3 +++ tests/testsuites/valid.conf | 3 +++ tests/validation-run.sh | 38 ++++++++++++++++++++++++++++++++++++++ tools/syslogd.c | 10 +++++++++- 9 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 tests/testsuites/invalid.conf create mode 100644 tests/testsuites/valid.conf create mode 100755 tests/validation-run.sh diff --git a/ChangeLog b/ChangeLog index 6e7f552d..86ac485f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,12 @@ - bugfix: internal messages were emitted to whatever file had fd2 when rsyslogd ran in forked mode (as usual!) Thanks to varmojfekoj for the patch +- small enhancement: config validation run now exits with code 1 if an + error is detected. This change is considered important but small enough + to apply it directly to the stable version. [But it is a border case, + the change requires more code than I had hoped. Thus I have NOT tried + to actually catch all cases, this is left for the current devel + releases, if necessary] --------------------------------------------------------------------------- Version 3.22.1 [v3-stable] (rgerhards), 2009-04-?? - bugfix: light and full delay watermarks had invalid values, badly diff --git a/runtime/conf.c b/runtime/conf.c index f71d5669..da6026c5 100644 --- a/runtime/conf.c +++ b/runtime/conf.c @@ -395,6 +395,7 @@ processConfFile(uchar *pConfFile) uchar cbuf[CFGLNSIZ]; uchar *cline; int i; + int bHadAnError = 0; ASSERT(pConfFile != NULL); if((cf = fopen((char*)pConfFile, "r")) == NULL) { @@ -456,6 +457,7 @@ processConfFile(uchar *pConfFile) snprintf((char*)szErrLoc, sizeof(szErrLoc) / sizeof(uchar), "%s, line %d", pConfFile, iLnNbr); errmsg.LogError(0, NO_ERRCODE, "the last error occured in %s", (char*)szErrLoc); + bHadAnError = 1; } } @@ -475,6 +477,10 @@ finalize_it: dbgprintf("error %d processing config file '%s'; os error (if any): %s\n", iRet, pConfFile, errStr); } + + if(bHadAnError && (iRet == RS_RET_OK)) { /* a bit dirty, enhance in future releases */ + iRet = RS_RET_ERR; + } RETiRet; } diff --git a/tests/DevNull.cfgtest b/tests/DevNull.cfgtest index d30d936b..7822b6df 100644 --- a/tests/DevNull.cfgtest +++ b/tests/DevNull.cfgtest @@ -1,3 +1,2 @@ rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs will run, but no output whatsoever is created. [try http://www.rsyslog.com/e/2103 ] rsyslogd: EMERGENCY CONFIGURATION ACTIVATED - fix rsyslog config file! -rsyslogd: End of config validation run. Bye. diff --git a/tests/Makefile.am b/tests/Makefile.am index 14e7c195..802a3ccb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,10 +1,14 @@ check_PROGRAMS = rt_init rscript -TESTS = $(check_PROGRAMS) cfg.sh +TESTS = $(check_PROGRAMS) cfg.sh \ + validation-run.sh TESTS_ENVIRONMENT = RSYSLOG_MODDIR='$(abs_top_builddir)'/runtime/.libs/ #TESTS = $(check_PROGRAMS) test_files = testbench.h runtime-dummy.c EXTRA_DIST=1.rstest 2.rstest err1.rstest \ + validation-run.sh \ + testsuites/invalid.conf \ + testsuites/valid.conf \ cfg.sh \ cfg1.cfgtest \ cfg1.testin \ diff --git a/tests/NoExistFile.cfgtest b/tests/NoExistFile.cfgtest index 4cbcc029..88d3123f 100644 --- a/tests/NoExistFile.cfgtest +++ b/tests/NoExistFile.cfgtest @@ -1,3 +1,2 @@ rsyslogd: CONFIG ERROR: could not interpret master config file '/This/does/not/exist'. [try http://www.rsyslog.com/e/2013 ] rsyslogd: EMERGENCY CONFIGURATION ACTIVATED - fix rsyslog config file! -rsyslogd: End of config validation run. Bye. diff --git a/tests/testsuites/invalid.conf b/tests/testsuites/invalid.conf new file mode 100644 index 00000000..8a865ba5 --- /dev/null +++ b/tests/testsuites/invalid.conf @@ -0,0 +1,3 @@ +# This is an invalid config file that shall trigger an exit code +# with the config verification run +$invalid diff --git a/tests/testsuites/valid.conf b/tests/testsuites/valid.conf new file mode 100644 index 00000000..250f0546 --- /dev/null +++ b/tests/testsuites/valid.conf @@ -0,0 +1,3 @@ +# This is an invalid config file that shall trigger an exit code +# with the config verification run +*.* /tmp/data.log diff --git a/tests/validation-run.sh b/tests/validation-run.sh new file mode 100755 index 00000000..10981290 --- /dev/null +++ b/tests/validation-run.sh @@ -0,0 +1,38 @@ +# check if the configuration test run detects invalid config files. +# +# Part of the testbench for rsyslog. +# +# Copyright 2009 Rainer Gerhards and Adiscon GmbH. +# +# This file is part of rsyslog. +# +# Rsyslog 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 3 of the License, or +# (at your option) any later version. +# +# Rsyslog 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 Rsyslog. If not, see . +# +# A copy of the GPL can be found in the file "COPYING" in this distribution. +#set -x +echo "testing a failed configuration verification run" +../tools/rsyslogd -u2 -c3 -N1 -f$srcdir/testsuites/invalid.conf +if [ $? -ne 1 ]; then + exit 1 +fi +echo testing a valid config verification run +../tools/rsyslogd -u2 -c3 -N1 -f$srcdir/testsuites/valid.conf +if [ $? -ne 0 ]; then + exit 1 +fi +echo testing empty config file +../tools/rsyslogd -u2 -c3 -N1 -f/dev/null +if [ $? -ne 1 ]; then + exit 1 +fi diff --git a/tools/syslogd.c b/tools/syslogd.c index 1840030b..01d3af71 100644 --- a/tools/syslogd.c +++ b/tools/syslogd.c @@ -2237,6 +2237,7 @@ init(void) DEFiRet; rsRetVal localRet; int iNbrActions; + int bHadConfigErr = 0; char cbuf[BUFSIZ]; char bufStartUpMsg[512]; struct sigaction sigAct; @@ -2287,9 +2288,11 @@ init(void) if(localRet != RS_RET_OK) { errmsg.LogError(0, localRet, "CONFIG ERROR: could not interpret master config file '%s'.", ConfFile); + bHadConfigErr = 1; } else if(iNbrActions == 0) { errmsg.LogError(0, RS_RET_NO_ACTIONS, "CONFIG ERROR: there are no active actions configured. Inputs will " "run, but no output whatsoever is created."); + bHadConfigErr = 1; } if(localRet != RS_RET_OK || iNbrActions == 0) { @@ -2355,8 +2358,13 @@ init(void) /* we are done checking the config - now validate if we should actually run or not. * If not, terminate. -- rgerhards, 2008-07-25 */ - if(iConfigVerify) + if(iConfigVerify) { + if(bHadConfigErr) { + /* a bit dirty, but useful... */ + exit(1); + } ABORT_FINALIZE(RS_RET_VALIDATION_RUN); + } /* switch the message object to threaded operation, if necessary */ if(MainMsgQueType == QUEUETYPE_DIRECT || iMainMsgQueueNumWorkers > 1) { -- cgit