diff --git a/backport-Deallocate-outchannel-resources-in-rsconf-destructor.patch b/backport-Deallocate-outchannel-resources-in-rsconf-destructor.patch deleted file mode 100644 index 0e1b8309527601967264d502b7a7506c16c256fd..0000000000000000000000000000000000000000 --- a/backport-Deallocate-outchannel-resources-in-rsconf-destructor.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 4fc5ed645a125661ce773ecf5376df5062305976 Mon Sep 17 00:00:00 2001 -From: alakatos -Date: Tue, 30 Nov 2021 18:13:23 +0100 -Subject: [PATCH] Deallocate outchannel resources in rsconf destructor - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/4fc5ed645a125661ce773ecf5376df5062305976 ---- - outchannel.c | 4 ++++ - runtime/rsconf.c | 1 + - 2 files changed, 5 insertions(+) - -diff --git a/outchannel.c b/outchannel.c -index db78d93763..ba5809f4af 100644 ---- a/outchannel.c -+++ b/outchannel.c -@@ -272,6 +272,10 @@ void ochDeleteAll(void) - pOch = pOch->pNext; - if(pOchDel->pszName != NULL) - free(pOchDel->pszName); -+ if(pOchDel->pszFileTemplate != NULL) -+ free(pOchDel->pszFileTemplate); -+ if(pOchDel->cmdOnSizeLimit != NULL) -+ free(pOchDel->cmdOnSizeLimit); - free(pOchDel); - } - } -diff --git a/runtime/rsconf.c b/runtime/rsconf.c -index 3042a16849..6eb7042526 100644 ---- a/runtime/rsconf.c -+++ b/runtime/rsconf.c -@@ -240,6 +240,7 @@ CODESTARTobjDestruct(rsconf) - tplDeleteAll(pThis); - dynstats_destroyAllBuckets(); - perctileBucketsDestruct(); -+ ochDeleteAll(); - free(pThis->globals.mainQ.pszMainMsgQFName); - free(pThis->globals.pszConfDAGFile); - lookupDestroyCnf(); diff --git a/backport-Fix-Segmentation-fault-in-close-journal.patch b/backport-Fix-Segmentation-fault-in-close-journal.patch deleted file mode 100644 index c63971948fe51f77b3f9266d1753cb26debeebbb..0000000000000000000000000000000000000000 --- a/backport-Fix-Segmentation-fault-in-close-journal.patch +++ /dev/null @@ -1,29 +0,0 @@ -From eab250be3701b6aa5ccc65f2f79fd5b41f08b2b2 Mon Sep 17 00:00:00 2001 -From: "t.feng" -Date: Mon, 8 Aug 2022 11:36:59 +0800 -Subject: [PATCH] Fix Segmentation fault in close journal - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/eab250be3701b6aa5ccc65f2f79fd5b41f08b2b2 - ---- - plugins/imjournal/imjournal.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c -index 53034fe..6fb3b7a 100644 ---- a/plugins/imjournal/imjournal.c -+++ b/plugins/imjournal/imjournal.c -@@ -1001,7 +1001,9 @@ CODESTARTafterRun - persistJournalState(); - } - closeJournal(); -- ratelimitDestruct(ratelimiter); -+ if (ratelimiter) { -+ ratelimitDestruct(ratelimiter); -+ } - ENDafterRun - - --- -2.23.0 \ No newline at end of file diff --git a/backport-Fix-memory-leak-when-SetString.patch b/backport-Fix-memory-leak-when-SetString.patch deleted file mode 100644 index 48aadd4cd0a10c98666cb3b337af39006b271145..0000000000000000000000000000000000000000 --- a/backport-Fix-memory-leak-when-SetString.patch +++ /dev/null @@ -1,32 +0,0 @@ -From b3ba1d7280bab1b623e1b2aaf390bbae8aa8c484 Mon Sep 17 00:00:00 2001 -From: seuzw930 <76191785+seuzw930@users.noreply.github.com> -Date: Sun, 14 Aug 2022 16:52:53 +0800 -Subject: [PATCH] Fix memory leak when SetString - -During SetString reassign to pThis->szVal.psz, pThis->szVal.psz might not null. It resulted in memory leak and this patch fixes this behaviour. - -The problem is mentioned here: -https://github.com/rsyslog/rsyslog/issues/4961From f65b8860358b7aaca76d3abe086ac2bf80e2079b Mon Sep 17 00:00:00 2001 - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/b3ba1d7280bab1b623e1b2aaf390bbae8aa8c484 ---- - runtime/prop.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/runtime/prop.c b/runtime/prop.c -index 866b691..c4de5d7 100644 ---- a/runtime/prop.c -+++ b/runtime/prop.c -@@ -84,6 +84,9 @@ static rsRetVal SetString(prop_t *pThis, const uchar *psz, const int len) - if(len < CONF_PROP_BUFSIZE) { - memcpy(pThis->szVal.sz, psz, len + 1); - } else { -+ if(pThis->szVal.psz != NULL) { -+ free(pThis->szVal.psz); -+ } - CHKmalloc(pThis->szVal.psz = malloc(len + 1)); - memcpy(pThis->szVal.psz, psz, len + 1); - } --- -2.27.0 diff --git a/backport-Fix-memory-leak-when-free-action-worker-data-table.patch b/backport-Fix-memory-leak-when-free-action-worker-data-table.patch deleted file mode 100644 index 811d203e30a42711c12d44f7bcb45f46aaeed210..0000000000000000000000000000000000000000 --- a/backport-Fix-memory-leak-when-free-action-worker-data-table.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 63e5d6845aedd649eee1f807e85784a066163ad0 Mon Sep 17 00:00:00 2001 -From: seuzw930 <76191785+seuzw930@users.noreply.github.com> -Date: Mon, 18 Jul 2022 15:43:17 +0800 -Subject: [PATCH] Fix memory leak when free action worker data table - -During free action worker data table when action destruct, worker instance in worker data table were not null. It resulted in memory leak and this patch fixes this behaviour. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/d59feba46b8d8c2c3c5c25c6fc6e99f93bdae8b9 ---- - action.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - -diff --git a/action.c b/action.c -index e0d05ed..4cea500 100644 ---- a/action.c -+++ b/action.c -@@ -326,6 +326,20 @@ actionResetQueueParams(void) - RETiRet; - } - -+/* free action worker data table -+*/ -+static void freeWrkrDataTable(action_t * const pThis) -+{ -+ int freeSpot; -+ for(freeSpot = 0; freeSpot < pThis->wrkrDataTableSize; ++freeSpot) { -+ if(pThis->wrkrDataTable[freeSpot] != NULL) { -+ pThis->pMod->mod.om.freeWrkrInstance(pThis->wrkrDataTable[freeSpot]); -+ pThis->wrkrDataTable[freeSpot] = NULL; -+ } -+ } -+ free(pThis->wrkrDataTable); -+ return; -+} - - /* destructs an action descriptor object - * rgerhards, 2007-08-01 -@@ -363,7 +377,7 @@ rsRetVal actionDestruct(action_t * const pThis) - free(pThis->pszName); - free(pThis->ppTpl); - free(pThis->peParamPassing); -- free(pThis->wrkrDataTable); -+ freeWrkrDataTable(pThis); - - finalize_it: - free(pThis); --- -2.33.0 - diff --git a/backport-Fix-memory-leak-when-globally-de-initialize-GnuTLS.patch b/backport-Fix-memory-leak-when-globally-de-initialize-GnuTLS.patch deleted file mode 100644 index f0a09ccd50e6eb2c76e3b9f6018da363b365a022..0000000000000000000000000000000000000000 --- a/backport-Fix-memory-leak-when-globally-de-initialize-GnuTLS.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 81236d6ec506dd84c78e6c09fc39d5019ea483f2 Mon Sep 17 00:00:00 2001 -From: seuzw930 <76191785+seuzw930@users.noreply.github.com> -Date: Thu, 7 Jul 2022 20:47:11 +0800 -Subject: [PATCH] Fix memory leak when globally de-initialize GnuTLS - -During globally de-initialize GnuTLS, server anon credentials and server DH parameters for anon mode were not null. It resulted in memory leak and this patch fixes this behaviour. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/8e13d9d718d26b15263ecd53e26fed1a2af3f3e9 ---- - runtime/nsd_gtls.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c -index 01b0ec6..8f13810 100644 ---- a/runtime/nsd_gtls.c -+++ b/runtime/nsd_gtls.c -@@ -1307,6 +1307,8 @@ static rsRetVal - gtlsGlblExit(void) - { - DEFiRet; -+ gnutls_anon_free_server_credentials(anoncredSrv); -+ gnutls_dh_params_deinit(dh_params); - gnutls_global_deinit(); - RETiRet; - } --- -2.33.0 - diff --git a/backport-Fix-non-null-terminated-string-used-with-strlen.patch b/backport-Fix-non-null-terminated-string-used-with-strlen.patch deleted file mode 100644 index 862853b45cab74d9faf04d9407ae59a2f31074bb..0000000000000000000000000000000000000000 --- a/backport-Fix-non-null-terminated-string-used-with-strlen.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 6aeec7bf83135224400362598f0cc7ebef655195 Mon Sep 17 00:00:00 2001 -From: David Buckley -Date: Tue, 12 Apr 2022 17:38:49 +0100 -Subject: [PATCH] Fix non-null-terminated-string used with strlen - -The `failedmsg_entry` expects a null-terminated string in `key`, but -here we allocate with malloc and copy a string-with-length-n into only -the first n bytes. If the final byte is null, this is by coincidence -only. - -We've observed this by means of seeing random binary data appended to -keys submitted to kafka apparently at random, and this looks like a -smoking gun. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/2c8c9db065cef3b5086c90c3782ac48da40c8b2f ---- - plugins/omkafka/omkafka.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/plugins/omkafka/omkafka.c b/plugins/omkafka/omkafka.c -index 850dfc0..e6cb2ea 100644 ---- a/plugins/omkafka/omkafka.c -+++ b/plugins/omkafka/omkafka.c -@@ -350,6 +350,7 @@ const size_t msglen, const char *const topicname) - return NULL; - } - memcpy(etry->key, key, keylen); -+ etry->key[keylen] = '\0'; - } else { - etry->key=NULL; - } --- -2.33.0 - diff --git a/backport-Fixes-4395-by-correctly-checking-for-EPIPE.patch b/backport-Fixes-4395-by-correctly-checking-for-EPIPE.patch deleted file mode 100644 index 63fa974f2b542e2b858c5898d3bb51fb880c8378..0000000000000000000000000000000000000000 --- a/backport-Fixes-4395-by-correctly-checking-for-EPIPE.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 640af90afaf13bef5a99a458ed8e862359588d8f Mon Sep 17 00:00:00 2001 -From: Kailash Sethuraman -Date: Thu, 13 Jan 2022 13:52:46 -0500 -Subject: [PATCH] Fixes #4395 by correctly checking for EPIPE. - -kmsg is a unique device, which can recover from EPIPE errors. -The original code checked for this, but checked the return value for the libc -read call, which always returns -1 and sets the appropriate errno. - -This meant that when an EPIPE error actually happened, the fd was infinitely retried. The 'for loop' was broken out of, but the readikmsg() function is repeatedly called. - -Note: there is an additional bug here. The readikmsg function needs better error checking on the fd. I suspect that this was rarely an issue because /dev/kmsg goes truly invalid when the system is actually shutting down. - -The fix here is to check the return value as well as the errno. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/feb6420148c351072a190990622b58124fd44506 ---- - contrib/imkmsg/kmsg.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/contrib/imkmsg/kmsg.c b/contrib/imkmsg/kmsg.c -index beb4076..5a3f45e 100644 ---- a/contrib/imkmsg/kmsg.c -+++ b/contrib/imkmsg/kmsg.c -@@ -214,7 +214,7 @@ readkmsg(void) - if (i > 0) { - /* successful read of message of nonzero length */ - pRcv[i] = '\0'; -- } else if (i == -EPIPE) { -+ } else if (i < 0 && errno == EPIPE) { - imkmsgLogIntMsg(LOG_WARNING, - "imkmsg: some messages in circular buffer got overwritten"); - continue; --- -2.33.0 - diff --git a/backport-Simplified-and-fixed-IPv4-digit-detection.patch b/backport-Simplified-and-fixed-IPv4-digit-detection.patch deleted file mode 100644 index 50c88f13f9e704931219d9e851a11ef7de508224..0000000000000000000000000000000000000000 --- a/backport-Simplified-and-fixed-IPv4-digit-detection.patch +++ /dev/null @@ -1,218 +0,0 @@ -From a335ec06f0897a71356afee3362f67e68b91a3de Mon Sep 17 00:00:00 2001 -From: Andre lorbach -Date: Thu, 28 Jul 2022 16:17:41 +0200 -Subject: [PATCH] mmanon: Simplified and fixed IPv4 digit detection. - -- Fixed an issue with numbers above int64 in syntax_ipv4. - Numbers that were up to 256 above the max of an int64 - could incorrectly be detected as valid ipv4 digit. -- Simplified the IPv4 digit detection function and renamed - to isPosByte. -- added testcasse for malformed IPvc4 addresses - -closes: https://github.com/rsyslog/rsyslog/issues/4940 - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/a335ec06f0897a71356afee3362f67e68b91a3de ---- - plugins/mmanon/mmanon.c | 55 ++++++++++++++------------ - tests/Makefile.am | 2 + - tests/mmanon_recognize_ipv4.sh | 4 ++ - tests/mmanon_simple_mallformed_ipv4.sh | 37 +++++++++++++++++ - 4 files changed, 73 insertions(+), 25 deletions(-) - create mode 100755 tests/mmanon_simple_mallformed_ipv4.sh - -diff --git a/plugins/mmanon/mmanon.c b/plugins/mmanon/mmanon.c -index a2ebd7b..4f83076 100644 ---- a/plugins/mmanon/mmanon.c -+++ b/plugins/mmanon/mmanon.c -@@ -22,6 +22,7 @@ - #include "config.h" - #include "rsyslog.h" - #include -+#include - #include - #include - #include -@@ -388,72 +389,76 @@ getHexVal(char c) - } - - --/* returns -1 if no integer found, else integer */ --static int64_t --getPosInt(const uchar *const __restrict__ buf, -+/* returns 1 if valid IPv4 digit, 0 if not */ -+static int -+isPosByte(const uchar *const __restrict__ buf, - const size_t buflen, - size_t *const __restrict__ nprocessed) - { -- int64_t val = 0; -+ int val = 0; /* Default means no byte found */ - size_t i; -- for(i = 0 ; i < buflen ; i++) { -- if('0' <= buf[i] && buf[i] <= '9') -- val = val*10 + buf[i]-'0'; -- else -+ for(i = 0 ; i < buflen; i++) { -+ if('0' <= buf[i] && buf[i] <= '9') { -+ /* Maximum 3 digits for single IPv4 Number, we only copy up to 4 numbers -+ * but process forward to non digits */ -+ if (i < 4) { -+ val = val*10 + buf[i]-'0'; -+ } -+ } else - break; - } - *nprocessed = i; -- if(i == 0) -- val = -1; -- return val; -+ /* Return 1 if more than 1 and less the 4 digits and between 0 and 255 */ -+ if( i > 0 && -+ i < 4 && -+ (val >= 0 && val <= 255)) { -+ return 1; -+ } else { -+ return 0; -+ } - } - - /* 1 - is IPv4, 0 not */ -- - static int - syntax_ipv4(const uchar *const __restrict__ buf, - const size_t buflen, - size_t *const __restrict__ nprocessed) - { -- int64_t val; -- size_t nproc; -+ size_t nproc = 0; - size_t i; - int r = 0; -- -- val = getPosInt(buf, buflen, &i); -- if(val < 0 || val > 255) -+ if(isPosByte(buf, buflen, &i) == 0) { - goto done; -- -+ } - if(i >= buflen || buf[i] != '.') { - goto done; - } - i++; -- val = getPosInt(buf+i, buflen-i, &nproc); -- if(val < 0 || val > 255) -+ if(isdigit(buf[i]) == 0 || isPosByte(buf+i, buflen-i, &nproc) == 0) { - goto done; -+ } - i += nproc; - - if(i >= buflen || buf[i] != '.') { - goto done; - } - i++; -- val = getPosInt(buf+i, buflen-i, &nproc); -- if(val < 0 || val > 255) -+ if(isdigit(buf[i]) == 0 || isPosByte(buf+i, buflen-i, &nproc) == 0) { - goto done; -+ } - i += nproc; - - if(i >= buflen || buf[i] != '.') { - goto done; - } - i++; -- val = getPosInt(buf+i, buflen-i, &nproc); -- if(val < 0 || val > 255) -+ if(isdigit(buf[i]) == 0 || isPosByte(buf+i, buflen-i, &nproc) == 0) { - goto done; -+ } - i += nproc; - - *nprocessed = i; - r = 1; -- - done: - return r; - } -diff --git a/tests/Makefile.am b/tests/Makefile.am -index d3b040b..5e4f4fe 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -587,6 +587,7 @@ TESTS += \ - mmanon_simple_12_ipv4.sh \ - mmanon_simple_33_ipv4.sh \ - mmanon_simple_8_ipv4.sh \ -+ mmanon_simple_mallformed_ipv4.sh \ - mmanon_random_128_ipv6.sh \ - mmanon_zero_128_ipv6.sh \ - mmanon_zero_96_ipv6.sh \ -@@ -1872,6 +1873,7 @@ EXTRA_DIST= \ - mmanon_simple_12_ipv4.sh \ - mmanon_simple_33_ipv4.sh \ - mmanon_simple_8_ipv4.sh \ -+ mmanon_simple_mallformed_ipv4.sh \ - mmanon_random_128_ipv6.sh \ - mmanon_zero_128_ipv6.sh \ - mmanon_zero_96_ipv6.sh \ -diff --git a/tests/mmanon_recognize_ipv4.sh b/tests/mmanon_recognize_ipv4.sh -index fb7eb9f..cd9dcca 100755 ---- a/tests/mmanon_recognize_ipv4.sh -+++ b/tests/mmanon_recognize_ipv4.sh -@@ -2,6 +2,10 @@ - # add 2016-11-22 by Jan Gerhards, released under ASL 2.0 - - . ${srcdir:=.}/diag.sh init -+ -+#export RSYSLOG_DEBUG="debug nostdout noprintmutexaction" -+#export RSYSLOG_DEBUGLOG="$RSYSLOG_DYNNAME.debuglog" -+ - generate_conf - add_conf ' - template(name="outfmt" type="string" string="%msg%\n") -diff --git a/tests/mmanon_simple_mallformed_ipv4.sh b/tests/mmanon_simple_mallformed_ipv4.sh -new file mode 100755 -index 0000000..7ef8899 ---- /dev/null -+++ b/tests/mmanon_simple_mallformed_ipv4.sh -@@ -0,0 +1,37 @@ -+#!/bin/bash -+# add 2022-07-28 by Andre Lorbach, released under ASL 2.0 -+ -+. ${srcdir:=.}/diag.sh init -+#export USE_VALGRIND="YES" # this test only makes sense with valgrind enabled -+#export RS_TEST_VALGRIND_EXTRA_OPTS="--keep-debuginfo=yes" -+ -+#export RSYSLOG_DEBUG="debug nostdout noprintmutexaction" -+#export RSYSLOG_DEBUGLOG="$RSYSLOG_DYNNAME.debuglog" -+ -+generate_conf -+add_conf ' -+template(name="outfmt" type="string" string="%msg%\n") -+ -+module(load="../plugins/mmanon/.libs/mmanon") -+module(load="../plugins/imtcp/.libs/imtcp") -+input(type="imtcp" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port" ruleset="testing") -+ -+ruleset(name="testing") { -+ action(type="mmanon" ipv4.bits="32" ipv4.mode="simple") -+ action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outfmt") -+}' -+ -+startup -+tcpflood -m1 -M "\"<129>Mar 10 01:00:00 172.20.245.8 tag: 165874883373.1.15599155266856607338.91@whatever -+<129>Mar 10 01:00:00 172.20.245.8 tag: 1.165874883373.15599155266856607338.91@whatever -+<129>Mar 10 01:00:00 172.20.245.8 tag: 15599155266856607338.165874883373.1.91@whatever -+<129>Mar 10 01:00:00 172.20.245.8 tag: 91.165874883373.1.15599155266856607338.@whatever\"" -+ -+shutdown_when_empty -+wait_shutdown -+export EXPECTED=' 165874883373.1.15599155266856607338.91@whatever -+ 1.165874883373.15599155266856607338.91@whatever -+ 15599155266856607338.165874883373.1.91@whatever -+ 91.165874883373.1.15599155266856607338.@whatever' -+cmp_exact -+exit_test --- -2.27.0 diff --git a/backport-Terminate-all-tcpsrv-threads-properly.patch b/backport-Terminate-all-tcpsrv-threads-properly.patch deleted file mode 100644 index 132f0fb46c674ddbe373ce4f34f17c33665e6bb9..0000000000000000000000000000000000000000 --- a/backport-Terminate-all-tcpsrv-threads-properly.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 178a36c9b497a78855e1eda03550c3089473ace7 Mon Sep 17 00:00:00 2001 -From: Gabor Orosz -Date: Fri, 14 Jan 2022 19:58:17 +0000 -Subject: [PATCH] Terminate all tcpsrv threads properly - -Graceful shutdown of Rsyslog could lead to segmentation faults when -multiple imtcp inputs are being used. That is because the rest of the -tcpsrv threads are left behind running, while their underlying objects -are being disposed by the main thread as part of the module -de-initialization. - -Signed-off-by: Gabor Orosz -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/178a36c9b497a78855e1eda03550c3089473ace7 ---- - plugins/imtcp/imtcp.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c -index 0e689a28d8..a6256acad8 100644 ---- a/plugins/imtcp/imtcp.c -+++ b/plugins/imtcp/imtcp.c -@@ -1007,6 +1007,7 @@ CODESTARTrunInput - iRet = tcpsrv.Run(tcpsrv_root->tcpsrv); - - /* de-init remaining servers */ -+ etry = tcpsrv_root->next; - while(etry != NULL) { - stopSrvWrkr(etry); - etry = etry->next; diff --git a/backport-add-support-for-permittedPeers-setting-at-input.patch b/backport-add-support-for-permittedPeers-setting-at-input.patch deleted file mode 100644 index cd44222b9ceb65cbadb76e1304e49344ef2e3b77..0000000000000000000000000000000000000000 --- a/backport-add-support-for-permittedPeers-setting-at-input.patch +++ /dev/null @@ -1,210 +0,0 @@ -From f83306fe2a58708455e5f3b83679aca22f1283d2 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Fri, 22 Oct 2021 18:02:23 +0200 -Subject: [PATCH] imtcp: add support for permittedPeers setting at input() - level - -The permittedPeers settig was actually forgotten during the refactoring -of TLS input() level settings. This functionality is now added. - -closes: https://github.com/rsyslog/rsyslog/issues/4706 -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/f83306fe2a58708455e5f3b83679aca22f1283d2 ---- - plugins/imtcp/imtcp.c | 53 +++++++++++++++++++++++++++---------------- - runtime/nsd_ossl.c | 1 + - runtime/tcps_sess.c | 2 ++ - 3 files changed, 36 insertions(+), 20 deletions(-) - -diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c -index 06774069c4..98a060e4c9 100644 ---- a/plugins/imtcp/imtcp.c -+++ b/plugins/imtcp/imtcp.c -@@ -63,7 +63,7 @@ - #include "tcpsrv.h" - #include "ruleset.h" - #include "rainerscript.h" --#include "net.h" /* for permittedPeers, may be removed when this is removed */ -+#include "net.h" - #include "parserif.h" - - MODULE_TYPE_INPUT -@@ -144,6 +144,7 @@ struct instanceConf_s { - uchar *pszStrmDrvrCAFile; - uchar *pszStrmDrvrKeyFile; - uchar *pszStrmDrvrCertFile; -+ permittedPeers_t *pPermPeersRoot; - uchar *gnutlsPriorityString; - int iStrmDrvrExtendedCertCheck; - int iStrmDrvrSANPreference; -@@ -183,7 +184,7 @@ struct modConfData_s { - uchar *pszStrmDrvrCAFile; - uchar *pszStrmDrvrKeyFile; - uchar *pszStrmDrvrCertFile; -- struct cnfarray *permittedPeers; -+ permittedPeers_t *pPermPeersRoot; - sbool configSetViaV2Method; - sbool bPreserveCase; /* preserve case of fromhost; true by default */ - }; -@@ -251,6 +252,7 @@ static struct cnfparamdescr inppdescr[] = { - { "streamdriver.cafile", eCmdHdlrString, 0 }, - { "streamdriver.keyfile", eCmdHdlrString, 0 }, - { "streamdriver.certfile", eCmdHdlrString, 0 }, -+ { "permittedpeer", eCmdHdlrArray, 0 }, - { "gnutlsprioritystring", eCmdHdlrString, 0 }, - { "keepalive", eCmdHdlrBinary, 0 }, - { "keepalive.probes", eCmdHdlrNonNegInt, 0 }, -@@ -365,6 +367,7 @@ createInstance(instanceConf_t **pinst) - inst->pszStrmDrvrCAFile = NULL; - inst->pszStrmDrvrKeyFile = NULL; - inst->pszStrmDrvrCertFile = NULL; -+ inst->pPermPeersRoot = NULL; - inst->gnutlsPriorityString = NULL; - inst->iStrmDrvrMode = loadModConf->iStrmDrvrMode; - inst->iStrmDrvrExtendedCertCheck = loadModConf->iStrmDrvrExtendedCertCheck; -@@ -451,6 +454,7 @@ addListner(modConfData_t *modConf, instanceConf_t *inst) - { - DEFiRet; - uchar *psz; /* work variable */ -+ permittedPeers_t *peers; - - tcpsrv_t *pOurTcpsrv; - CHKiRet(tcpsrv.Construct(&pOurTcpsrv)); -@@ -508,8 +512,10 @@ addListner(modConfData_t *modConf, instanceConf_t *inst) - ? modConf->pszStrmDrvrCertFile : inst->pszStrmDrvrCertFile; - CHKiRet(tcpsrv.SetDrvrCertFile(pOurTcpsrv, psz)); - -- if(pPermPeersRoot != NULL) { -- CHKiRet(tcpsrv.SetDrvrPermPeers(pOurTcpsrv, pPermPeersRoot)); -+ peers = (inst->pPermPeersRoot == NULL) -+ ? modConf->pPermPeersRoot : inst->pPermPeersRoot; -+ if(peers != NULL) { -+ CHKiRet(tcpsrv.SetDrvrPermPeers(pOurTcpsrv, peers)); - } - - /* initialized, now add socket and listener params */ -@@ -608,6 +614,12 @@ CODESTARTnewInpInst - inst->pszStrmDrvrName = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL); - } else if(!strcmp(inppblk.descr[i].name, "gnutlsprioritystring")) { - inst->gnutlsPriorityString = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL); -+ } else if(!strcmp(inppblk.descr[i].name, "permittedpeer")) { -+ for(int j = 0 ; j < pvals[i].val.d.ar->nmemb ; ++j) { -+ uchar *const peer = (uchar*) es_str2cstr(pvals[i].val.d.ar->arr[j], NULL); -+ CHKiRet(net.AddPermittedPeer(&inst->pPermPeersRoot, peer)); -+ free(peer); -+ } - } else if(!strcmp(inppblk.descr[i].name, "flowcontrol")) { - inst->bUseFlowControl = (int) pvals[i].val.d.n; - } else if(!strcmp(inppblk.descr[i].name, "disablelfdelimiter")) { -@@ -689,7 +701,7 @@ CODESTARTbeginCnfLoad - loadModConf->pszStrmDrvrCAFile = NULL; - loadModConf->pszStrmDrvrKeyFile = NULL; - loadModConf->pszStrmDrvrCertFile = NULL; -- loadModConf->permittedPeers = NULL; -+ loadModConf->pPermPeersRoot = NULL; - loadModConf->configSetViaV2Method = 0; - loadModConf->bPreserveCase = 1; /* default to true */ - bLegacyCnfModGlobalsPermitted = 1; -@@ -780,7 +792,11 @@ CODESTARTsetModCnf - } else if(!strcmp(modpblk.descr[i].name, "streamdriver.name")) { - loadModConf->pszStrmDrvrName = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL); - } else if(!strcmp(modpblk.descr[i].name, "permittedpeer")) { -- loadModConf->permittedPeers = cnfarrayDup(pvals[i].val.d.ar); -+ for(int j = 0 ; j < pvals[i].val.d.ar->nmemb ; ++j) { -+ uchar *const peer = (uchar*) es_str2cstr(pvals[i].val.d.ar->arr[j], NULL); -+ CHKiRet(net.AddPermittedPeer(&loadModConf->pPermPeersRoot, peer)); -+ free(peer); -+ } - } else if(!strcmp(modpblk.descr[i].name, "preservecase")) { - loadModConf->bPreserveCase = (int) pvals[i].val.d.n; - } else { -@@ -818,6 +834,11 @@ CODESTARTendCnfLoad - pModConf->iKeepAliveProbes = cs.iKeepAliveProbes; - pModConf->iKeepAliveIntvl = cs.iKeepAliveIntvl; - pModConf->iKeepAliveTime = cs.iKeepAliveTime; -+ if(pPermPeersRoot != NULL) { -+ assert(pModConf->pPermPeersRoot == NULL); -+ pModConf->pPermPeersRoot = pPermPeersRoot; -+ pPermPeersRoot = NULL; /* memory handed over! */ -+ } - if((cs.pszStrmDrvrAuthMode == NULL) || (cs.pszStrmDrvrAuthMode[0] == '\0')) { - loadModConf->pszStrmDrvrAuthMode = NULL; - } else { -@@ -860,15 +881,8 @@ ENDcheckCnf - - BEGINactivateCnfPrePrivDrop - instanceConf_t *inst; -- int i; - CODESTARTactivateCnfPrePrivDrop - runModConf = pModConf; -- if(runModConf->permittedPeers != NULL) { -- for(i = 0 ; i < runModConf->permittedPeers->nmemb ; ++i) { -- setPermittedPeer(NULL, (uchar*) -- es_str2cstr(runModConf->permittedPeers->arr[i], NULL)); -- } -- } - for(inst = runModConf->root ; inst != NULL ; inst = inst->next) { - addListner(runModConf, inst); - } -@@ -899,10 +913,10 @@ CODESTARTfreeCnf - free(pModConf->pszStrmDrvrCAFile); - free(pModConf->pszStrmDrvrKeyFile); - free(pModConf->pszStrmDrvrCertFile); -- if(pModConf->permittedPeers != NULL) { -- cnfarrayContentDestruct(pModConf->permittedPeers); -- free(pModConf->permittedPeers); -+ if(pModConf->pPermPeersRoot != NULL) { -+ net.DestructPermittedPeers(&pModConf->pPermPeersRoot); - } -+ - for(inst = pModConf->root ; inst != NULL ; ) { - free((void*)inst->pszBindRuleset); - free((void*)inst->pszStrmDrvrAuthMode); -@@ -914,6 +928,9 @@ CODESTARTfreeCnf - free((void*)inst->gnutlsPriorityString); - free((void*)inst->pszInputName); - free((void*)inst->dfltTZ); -+ if(inst->pPermPeersRoot != NULL) { -+ net.DestructPermittedPeers(&inst->pPermPeersRoot); -+ } - del = inst; - inst = inst->next; - free(del); -@@ -1026,10 +1043,6 @@ ENDisCompatibleWithFeature - - BEGINmodExit - CODESTARTmodExit -- if(pPermPeersRoot != NULL) { -- net.DestructPermittedPeers(&pPermPeersRoot); -- } -- - /* release objects we used */ - objRelease(net, LM_NET_FILENAME); - objRelease(netstrm, LM_NETSTRMS_FILENAME); -diff --git a/runtime/nsd_ossl.c b/runtime/nsd_ossl.c -index 110e11038b..03ebc0ab33 100644 ---- a/runtime/nsd_ossl.c -+++ b/runtime/nsd_ossl.c -@@ -612,6 +612,7 @@ osslChkPeerFingerprint(nsd_ossl_t *pThis, X509 *pCert) - dbgprintf("osslChkPeerFingerprint: peer's certificate MATCH found: %s\n", pPeer->pszID); - bFoundPositiveMatch = 1; - } else { -+ dbgprintf("osslChkPeerFingerprint: NOMATCH peer certificate: %s\n", pPeer->pszID); - pPeer = pPeer->pNext; - } - } -diff --git a/runtime/tcps_sess.c b/runtime/tcps_sess.c -index b12d873019..9e5dbcc5cb 100644 ---- a/runtime/tcps_sess.c -+++ b/runtime/tcps_sess.c -@@ -444,8 +444,10 @@ processDataRcvd(tcps_sess_t *pThis, - } - } else { - assert(pThis->inputState == eInMsg); -+ #if 0 // set to 1 for ultra-verbose - DBGPRINTF("DEBUG: processDataRcvd c=%c remain=%d\n", - c, pThis->iOctetsRemain); -+ #endif - - if(( ((c == '\n') && !pThis->pSrv->bDisableLFDelim) - || ((pThis->pSrv->addtlFrameDelim != TCPSRV_NO_ADDTL_DELIMITER) diff --git a/backport-add-test-for-legacy-permittedPeer-statement.patch b/backport-add-test-for-legacy-permittedPeer-statement.patch deleted file mode 100644 index 45a316d698f50076a6bfefe43eeb8142635be880..0000000000000000000000000000000000000000 --- a/backport-add-test-for-legacy-permittedPeer-statement.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 202e10e24ca658f91c3aef87c017e8f0525744b5 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Mon, 25 Oct 2021 09:18:44 +0200 -Subject: [PATCH] testbench: add test for legacy permittedPeer statement - -This is required to ensure backwards compatibility when doing changes -to the networking subsystem. So far this was not covered by any test. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/202e10e24ca658f91c3aef87c017e8f0525744b5 ---- - tests/Makefile.am | 2 ++ - tests/imtcp-tls-gtls-x509name-legacy.sh | 33 +++++++++++++++++++++++++ - 2 files changed, 35 insertions(+) - create mode 100755 tests/imtcp-tls-gtls-x509name-legacy.sh - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index a68b6eb..9cc18a4 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -1267,6 +1267,7 @@ TESTS += \ - imtcp-tls-gtls-x509fingerprint.sh \ - imtcp-tls-gtls-x509name-invld.sh \ - imtcp-tls-gtls-x509name.sh \ -+ imtcp-tls-gtls-x509name-legacy.sh \ - imtcp-drvr-in-input-basic.sh \ - imtcp-multi-drvr-basic.sh \ - imtcp-multi-drvr-basic-parallel.sh -@@ -2130,6 +2131,7 @@ EXTRA_DIST= \ - imtcp-tls-gtls-x509fingerprint.sh \ - imtcp-tls-gtls-x509name-invld.sh \ - imtcp-tls-gtls-x509name.sh \ -+ imtcp-tls-gtls-x509name-legacy.sh \ - imtcp-drvr-in-input-basic.sh \ - imtcp-multi-drvr-basic.sh \ - imtcp-multi-drvr-basic-parallel.sh \ -diff --git a/tests/imtcp-tls-gtls-x509name-legacy.sh b/tests/imtcp-tls-gtls-x509name-legacy.sh -new file mode 100755 -index 0000000..c2c9bdd ---- /dev/null -+++ b/tests/imtcp-tls-gtls-x509name-legacy.sh -@@ -0,0 +1,33 @@ -+#!/bin/bash -+# This file is part of the rsyslog project, released under ASL 2.0 -+. ${srcdir:=.}/diag.sh init -+export NUMMESSAGES=1 -+generate_conf -+add_conf ' -+global( defaultNetstreamDriverCAFile="'$srcdir/tls-certs/ca.pem'" -+ defaultNetstreamDriverCertFile="'$srcdir/tls-certs/cert.pem'" -+ defaultNetstreamDriverKeyFile="'$srcdir/tls-certs/key.pem'" -+) -+ -+ -+# NOTE: we intentionally use legacy statements here! This *IS* what we want to test! -+$ModLoad ../plugins/imtcp/.libs/imtcp -+$inputTcpserverStreamdriverPermittedPeer rsyslog-client -+ -+input(type="imtcp" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port" -+ StreamDriver.Name="gtls" -+ StreamDriver.Mode="1" -+ StreamDriver.AuthMode="x509/name") -+ -+template(name="outfmt" type="string" string="%msg:F,58:2%\n") -+:msg, contains, "msgnum:" action( type="omfile" -+ template="outfmt" -+ file=`echo $RSYSLOG_OUT_LOG`) -+' -+startup -+tcpflood -p'$TCPFLOOD_PORT' -m$NUMMESSAGES -Ttls -x$srcdir/tls-certs/ca.pem -Z$srcdir/tls-certs/cert.pem -z$srcdir/tls-certs/key.pem -+wait_file_lines -+shutdown_when_empty -+wait_shutdown -+seq_check -+exit_test --- -2.27.0 - diff --git a/backport-core-bugfix-correct-local-host-name-after-config-processing.patch b/backport-core-bugfix-correct-local-host-name-after-config-processing.patch deleted file mode 100644 index ee809fe5574ab847b2f6ced1e09fc0b5044af012..0000000000000000000000000000000000000000 --- a/backport-core-bugfix-correct-local-host-name-after-config-processing.patch +++ /dev/null @@ -1,258 +0,0 @@ -From ba00a9f25293f72137c9a85010276cca014ae7f0 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Wed, 31 Aug 2022 17:37:07 +0200 -Subject: [PATCH] core bugfix: correct local host name after config processing - -rsyslog.conf may affect the host's local name. These changes were -so far only activated after the first HUP. This patch now ensures -that the configured local host name is applied correctly throughout -all processing, including early startup. - -This patch causes a slight change of behaviour. However, the behaviour -was inconsitent before. Now it is consistent and according to the config. - -Please note: this patch also exposes a global entry point via "regular" -dynamic loading as this makes things much easier to do. This is in-line -with ongoing simplification effort. - -Finally, we also remove a CI test that we do no longer need because -the problem covered is now addressed differently and the original issue -can no longer occur. - -closes https://github.com/rsyslog/rsyslog/issues/4975 - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/ba00a9f25293f72137c9a85010276cca014ae7f0 ---- - runtime/glbl.c | 16 +++++++++++--- - runtime/glbl.h | 3 ++- - runtime/rsyslog.h | 2 +- - tests/Makefile.am | 6 ------ - tests/hostname-getaddrinfo-fail.sh | 34 ------------------------------ - tools/iminternal.c | 7 +++++- - tools/rsyslogd.c | 10 ++------- - 7 files changed, 24 insertions(+), 54 deletions(-) - delete mode 100755 tests/hostname-getaddrinfo-fail.sh - -diff --git a/runtime/glbl.c b/runtime/glbl.c -index 52a598f..4feefc4 100644 ---- a/runtime/glbl.c -+++ b/runtime/glbl.c -@@ -619,8 +619,8 @@ SetLocalHostName(uchar *const newname) - - /* return our local hostname. if it is not set, "[localhost]" is returned - */ --static uchar* --GetLocalHostName(void) -+uchar* -+glblGetLocalHostName(void) - { - uchar *pszRet; - -@@ -910,6 +910,8 @@ CODESTARTobjQueryInterface(glbl) - pIf->GetOption_DisallowWarning = getOption_DisallowWarning; - pIf->SetParseHOSTNAMEandTAG = setParseHOSTNAMEandTAG; - pIf->GetParseHOSTNAMEandTAG = getParseHOSTNAMEandTAG; -+ pIf->GetLocalHostName = glblGetLocalHostName; -+ pIf->SetLocalHostName = SetLocalHostName; - #define SIMP_PROP(name) \ - pIf->Get##name = Get##name; \ - pIf->Set##name = Set##name; -@@ -917,7 +919,6 @@ CODESTARTobjQueryInterface(glbl) - SIMP_PROP(DropMalPTRMsgs); - SIMP_PROP(mainqCnfObj); - SIMP_PROP(LocalFQDNName) -- SIMP_PROP(LocalHostName) - SIMP_PROP(LocalDomain) - SIMP_PROP(StripDomains) - SIMP_PROP(LocalHosts) -@@ -1541,6 +1542,15 @@ glblDoneLoadCnf(void) - stddbg = -1; - } - -+ /* we have now read the config. We need to query the local host name now -+ * as it was set by the config. -+ * -+ * Note: early messages are already emited, and have "[localhost]" as -+ * hostname. These messages are currently in iminternal queue. Once they -+ * are taken from that queue, the hostname will be adapted. -+ */ -+ queryLocalHostname(); -+ - finalize_it: RETiRet; - } - -diff --git a/runtime/glbl.h b/runtime/glbl.h -index 9ccf7b6..4cb5770 100644 ---- a/runtime/glbl.h -+++ b/runtime/glbl.h -@@ -8,7 +8,7 @@ - * Please note that there currently is no glbl.c file as we do not yet - * have any implementations. - * -- * Copyright 2008-2019 Rainer Gerhards and Adiscon GmbH. -+ * Copyright 2008-2022 Rainer Gerhards and Adiscon GmbH. - * - * This file is part of the rsyslog runtime library. - * -@@ -162,5 +162,6 @@ const uchar* glblGetOperatingStateFile(void); - int glblGetOversizeMsgInputMode(void); - int glblReportOversizeMessage(void); - void glblReportChildProcessExit(const uchar *name, pid_t pid, int status); -+uchar *glblGetLocalHostName(void); - - #endif /* #ifndef GLBL_H_INCLUDED */ -diff --git a/runtime/rsyslog.h b/runtime/rsyslog.h -index 6492eea..58f8219 100644 ---- a/runtime/rsyslog.h -+++ b/runtime/rsyslog.h -@@ -757,8 +757,8 @@ rsRetVal rsrtInit(const char **ppErrObj, obj_if_t *pObjIF); - rsRetVal rsrtExit(void); - int rsrtIsInit(void); - void rsrtSetErrLogger(void (*errLogger)(const int, const int, const uchar*)); -- - void dfltErrLogger(const int, const int, const uchar *errMsg); -+rsRetVal queryLocalHostname(void); - - - /* this define below is (later) intended to be used to implement empty -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 5e4f4fe..34b5b38 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -175,7 +175,6 @@ TESTS += \ - timestamp-mysql.sh \ - timestamp-pgsql.sh \ - timestamp-subseconds.sh \ -- hostname-getaddrinfo-fail.sh \ - msleep_usage_output.sh \ - mangle_qi_usage_output.sh \ - minitcpsrv_usage_output.sh \ -@@ -1608,10 +1607,6 @@ TESTS += \ - endif - endif # ENABLE_OMAMQP1 - --# test samples... --#empty-hostname.log: hostname-getaddrinfo-fail.log --#hostname-getaddrinfo-fail.log: empty-hostname.log -- - endif # if ENABLE_TESTBENCH - - TESTS_ENVIRONMENT = RSYSLOG_MODDIR='$(abs_top_builddir)'/runtime/.libs/ -@@ -1648,7 +1643,6 @@ EXTRA_DIST= \ - config_enabled-off.sh \ - empty-app-name.sh \ - empty-hostname.sh \ -- hostname-getaddrinfo-fail.sh \ - hostname-with-slash-pmrfc5424.sh \ - hostname-with-slash-pmrfc3164.sh \ - pmrfc3164-msgFirstSpace.sh \ -diff --git a/tests/hostname-getaddrinfo-fail.sh b/tests/hostname-getaddrinfo-fail.sh -deleted file mode 100755 -index d14a1c3..0000000 ---- a/tests/hostname-getaddrinfo-fail.sh -+++ /dev/null -@@ -1,34 +0,0 @@ --#!/bin/bash --# This test check what happens if we cannot doe getaddrinfo early --# in rsyslog startup (this has caused an error in the past). Even more --# importantly, it checks that error messages can be issued very early --# during startup. --# Note that we use the override of the hostname to ensure we do not --# accidentally get an acceptable FQDN-type hostname during testing. --# --# IMPORTANT: We cannot use the regular plumbing here, as our preload --# interferes with socket operations (we cannot bind the port for some --# reason). As we do not necessarily need the full plumbing for this --# simple test, we emulate what we need. It's a bit ugly, but actually --# the simplest way forward. --# --# This is part of the rsyslog testbench, licensed under ASL 2.0 --. ${srcdir:=.}/diag.sh init --skip_platform "AIX" "we cannot preload required dummy lib" -- --echo 'action(type="omfile" file="'$RSYSLOG_DYNNAME'.out.log")' > ${RSYSLOG_DYNNAME}.conf --LD_PRELOAD=".libs/liboverride_gethostname_nonfqdn.so:.libs/liboverride_getaddrinfo.so" \ -- ../tools/rsyslogd -C -n -i$RSYSLOG_DYNNAME.pid -M../runtime/.libs:../.libs -f${RSYSLOG_DYNNAME}.conf & --wait_process_startup $RSYSLOG_DYNNAME --sleep 1 # wait a bit so that rsyslog can do some processing... --kill $(cat $RSYSLOG_DYNNAME.pid ) -- --grep " nonfqdn " < $RSYSLOG_DYNNAME.out.log --if [ ! $? -eq 0 ]; then -- echo "expected hostname \"nonfqdn\" not found in logs, $RSYSLOG_DYNNAME.out.log is:" -- cat $RSYSLOG_DYNNAME.out.log -- error_exit 1 --fi; -- --echo EVERYTHING OK - error messages are just as expected! --exit_test -diff --git a/tools/iminternal.c b/tools/iminternal.c -index 52e9df8..c4dd548 100644 ---- a/tools/iminternal.c -+++ b/tools/iminternal.c -@@ -6,7 +6,7 @@ - * - * File begun on 2007-08-03 by RGerhards - * -- * Copyright 2007-2017 Rainer Gerhards and Adiscon GmbH. -+ * Copyright 2007-2022 Rainer Gerhards and Adiscon GmbH. - * - * This file is part of rsyslog. - * -@@ -37,6 +37,7 @@ - #include "syslogd.h" - #include "linkedlist.h" - #include "iminternal.h" -+#include "unicode-helper.h" - - static linkedList_t llMsgs; - static pthread_mutex_t mutList = PTHREAD_MUTEX_INITIALIZER; -@@ -137,6 +138,10 @@ rsRetVal iminternalRemoveMsg(smsg_t **ppMsg) - - pthread_mutex_lock(&mutList); - CHKiRet(llGetNextElt(&llMsgs, &llCookie, (void*)&pThis)); -+ if(!strcmp((char*)pThis->pMsg->pszHOSTNAME, "[localhost]")) { -+ /* early (pre-conf) startup message detected, need to set real hostname now */ -+ MsgSetHOSTNAME(pThis->pMsg, glblGetLocalHostName(), ustrlen(glblGetLocalHostName())); -+ } - *ppMsg = pThis->pMsg; - pThis->pMsg = NULL; /* we do no longer own it - important for destructor */ - -diff --git a/tools/rsyslogd.c b/tools/rsyslogd.c -index 8410d44..9dedd2f 100644 ---- a/tools/rsyslogd.c -+++ b/tools/rsyslogd.c -@@ -3,7 +3,7 @@ - * because it was either written from scratch by me (rgerhards) or - * contributors who agreed to ASL 2.0. - * -- * Copyright 2004-2019 Rainer Gerhards and Adiscon -+ * Copyright 2004-2022 Rainer Gerhards and Adiscon - * - * This file is part of rsyslog. - * -@@ -231,7 +231,7 @@ setsid(void) - #endif - - --static rsRetVal -+rsRetVal - queryLocalHostname(void) - { - uchar *LocalHostName = NULL; -@@ -1384,12 +1384,6 @@ initAll(int argc, char **argv) - exit(1); /* "good" exit, leaving at init for fatal error */ - } - -- /* get our host and domain names - we need to do this early as we may emit -- * error log messages, which need the correct hostname. -- rgerhards, 2008-04-04 -- * But we need to have imInternal up first! -- */ -- queryLocalHostname(); -- - /* we now can emit error messages "the regular way" */ - - if(getenv("TZ") == NULL) { --- -2.27.0 diff --git a/backport-fix-memory-leak-in-afterRun-Code.patch b/backport-fix-memory-leak-in-afterRun-Code.patch deleted file mode 100644 index c042006fe985ecdeaf7df8750c540d845c43ee7c..0000000000000000000000000000000000000000 --- a/backport-fix-memory-leak-in-afterRun-Code.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 1ac3312e5a1e809158a0cccd5a332d3a67562a4f Mon Sep 17 00:00:00 2001 -From: Andre lorbach -Date: Mon, 22 Nov 2021 23:08:08 +0100 -Subject: [PATCH] imtcp: fix memory leak in afterRun Code - -- tcpsrv_etry_t was left in memory, is now freed -- Fix copy&paste error for pszLstnPortFileName init -- Free cnf_params if createInstance init fails - -closes: https://github.com/rsyslog/rsyslog/issues/4646 -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/1ac3312e5a1e809158a0cccd5a332d3a67562a4f ---- - plugins/imtcp/imtcp.c | 18 ++++++++++-------- - 1 file changed, 10 insertions(+), 8 deletions(-) - -diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c -index 98a060e4c9..0e689a28d8 100644 ---- a/plugins/imtcp/imtcp.c -+++ b/plugins/imtcp/imtcp.c -@@ -350,7 +350,7 @@ createInstance(instanceConf_t **pinst) - instanceConf_t *inst = NULL; - - DEFiRet; -- CHKmalloc(inst = malloc(sizeof(instanceConf_t))); -+ CHKmalloc(inst = (instanceConf_t*) calloc(1, sizeof(instanceConf_t))); - CHKmalloc(inst->cnf_params = (tcpLstnParams_t*) calloc(1, sizeof(tcpLstnParams_t))); - inst->next = NULL; - inst->pszBindRuleset = NULL; -@@ -400,6 +400,7 @@ createInstance(instanceConf_t **pinst) - *pinst = inst; - finalize_it: - if(iRet != RS_RET_OK) { -+ free(inst->cnf_params); - free(inst); - } - RETiRet; -@@ -431,7 +432,7 @@ static rsRetVal addInstance(void __attribute__((unused)) *pVal, uchar *pNewVal) - CHKmalloc(inst->cnf_params->pszAddr = ustrdup(cs.lstnIP)); - } - if((cs.lstnPortFile == NULL) || (cs.lstnPortFile[0] == '\0')) { -- inst->cnf_params->pszAddr = NULL; -+ inst->cnf_params->pszLstnPortFileName = NULL; - } else { - CHKmalloc(inst->cnf_params->pszLstnPortFileName = ustrdup(cs.lstnPortFile)); - } -@@ -706,7 +707,6 @@ CODESTARTbeginCnfLoad - loadModConf->bPreserveCase = 1; /* default to true */ - bLegacyCnfModGlobalsPermitted = 1; - /* init legacy config variables */ -- cs.pszStrmDrvrAuthMode = NULL; - resetConfigVariables(NULL, NULL); /* dummy parameters just to fulfill interface def */ - ENDbeginCnfLoad - -@@ -906,9 +906,9 @@ ENDactivateCnf - BEGINfreeCnf - instanceConf_t *inst, *del; - CODESTARTfreeCnf -+ free(pModConf->gnutlsPriorityString); - free(pModConf->pszStrmDrvrName); - free(pModConf->pszStrmDrvrAuthMode); -- free(pModConf->gnutlsPriorityString); - free(pModConf->pszStrmDrvrPermitExpiredCerts); - free(pModConf->pszStrmDrvrCAFile); - free(pModConf->pszStrmDrvrKeyFile); -@@ -1024,12 +1024,14 @@ ENDwillRun - BEGINafterRun - CODESTARTafterRun - tcpsrv_etry_t *etry = tcpsrv_root; -+ tcpsrv_etry_t *del; - while(etry != NULL) { - iRet = tcpsrv.Destruct(&etry->tcpsrv); - // TODO: check iRet, reprot error -+ del = etry; - etry = etry->next; -+ free(del); - } -- - net.clearAllowedSenders(UCHAR_CONSTANT("TCP")); - ENDafterRun - -@@ -1068,11 +1070,11 @@ resetConfigVariables(uchar __attribute__((unused)) *pp, void __attribute__((unus - cs.iAddtlFrameDelim = TCPSRV_NO_ADDTL_DELIMITER; - cs.maxFrameSize = 200000; - cs.bDisableLFDelim = 0; -- free(cs.pszInputName); -- cs.pszInputName = NULL; -+ cs.bPreserveCase = 1; - free(cs.pszStrmDrvrAuthMode); - cs.pszStrmDrvrAuthMode = NULL; -- cs.bPreserveCase = 1; -+ free(cs.pszInputName); -+ cs.pszInputName = NULL; - free(cs.lstnPortFile); - cs.lstnPortFile = NULL; - return RS_RET_OK; diff --git a/backport-gnutls-bugfix-Fix-error-handling-in-gtlsRecordRecv.patch b/backport-gnutls-bugfix-Fix-error-handling-in-gtlsRecordRecv.patch deleted file mode 100644 index 0f932a3e5cab223b9478300b0709b92a8a842366..0000000000000000000000000000000000000000 --- a/backport-gnutls-bugfix-Fix-error-handling-in-gtlsRecordRecv.patch +++ /dev/null @@ -1,268 +0,0 @@ -From 325203e4e2b2cc53283d9dbdff0aa677aded1e0d Mon Sep 17 00:00:00 2001 -From: Andre lorbach -Date: Wed, 9 Mar 2022 17:58:05 +0100 -Subject: [PATCH] gnutls bugfix: Fix error handling in gtlsRecordRecv - -There was a rare possibility that the E_AGAIN/E_INTERRUPT handling -could cause an infinite loop (100% CPU Usage), for example when a TLS -handshake is interrupted at a certain stage. - -- After gnutls_record_recv is called, and E_AGAIN/E_INTERRUPT error - occurs, we need to do additional read/write direction handling - with gnutls_record_get_direction. -- After the second call of gnutls_record_recv (Expand buffer) - we needed to also check the eror codes for E_AGAIN/E_INTERRUPT - to do propper errorhandling. -- Add extra debug output based on ossl driver. -- Potential fix for 100% CPU Loop Receiveloop after gtlsRecordRecv - in doRetry call. - -see also: https://github.com/rsyslog/rsyslog/issues/4818 - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/aefcfa4d0f6e213c9fac814c3e6bd53970b7e90e ---- - runtime/nsd_gtls.c | 39 ++++++++++++++++++++++++++++++--------- - runtime/nsd_gtls.h | 5 +++++ - runtime/nsdsel_gtls.c | 28 +++++++++++++++++++++------- - runtime/tcpsrv.c | 11 +++++++---- - tests/imtcp-tls-basic.sh | 3 +++ - 5 files changed, 66 insertions(+), 20 deletions(-) - -diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c -index 6fc300c..01b0ec6 100644 ---- a/runtime/nsd_gtls.c -+++ b/runtime/nsd_gtls.c -@@ -550,8 +550,10 @@ gtlsRecordRecv(nsd_gtls_t *pThis) - DEFiRet; - - ISOBJ_TYPE_assert(pThis, nsd_gtls); -- DBGPRINTF("gtlsRecordRecv: start\n"); - -+ DBGPRINTF("gtlsRecordRecv: start (Pending Data: %zd | Wanted Direction: %s)\n", -+ gnutls_record_check_pending(pThis->sess), -+ (gnutls_record_get_direction(pThis->sess) == gtlsDir_READ ? "READ" : "WRITE") ); - lenRcvd = gnutls_record_recv(pThis->sess, pThis->pszRcvBuf, NSD_GTLS_MAX_RCVBUF); - if(lenRcvd >= 0) { - DBGPRINTF("gtlsRecordRecv: gnutls_record_recv received %zd bytes\n", lenRcvd); -@@ -575,14 +577,30 @@ gtlsRecordRecv(nsd_gtls_t *pThis) - (NSD_GTLS_MAX_RCVBUF+lenRcvd)); - pThis->lenRcvBuf = NSD_GTLS_MAX_RCVBUF+lenRcvd; - } else { -- goto sslerr; -+ if (lenRcvd == GNUTLS_E_AGAIN || lenRcvd == GNUTLS_E_INTERRUPTED) { -+ goto sslerragain; /* Go to ERR AGAIN handling */ -+ } else { -+ /* Do all other error handling */ -+ int gnuRet = lenRcvd; -+ ABORTgnutls; -+ } - } - } - } else if(lenRcvd == GNUTLS_E_AGAIN || lenRcvd == GNUTLS_E_INTERRUPTED) { --sslerr: -- pThis->rtryCall = gtlsRtry_recv; -- dbgprintf("GnuTLS receive requires a retry (this most probably is OK and no error condition)\n"); -- ABORT_FINALIZE(RS_RET_RETRY); -+sslerragain: -+ /* Check if the underlaying file descriptor needs to read or write data!*/ -+ if (gnutls_record_get_direction(pThis->sess) == gtlsDir_READ) { -+ pThis->rtryCall = gtlsRtry_recv; -+ dbgprintf("GnuTLS receive requires a retry, this most probably is OK and no error condition\n"); -+ ABORT_FINALIZE(RS_RET_RETRY); -+ } else { -+ uchar *pErr = gtlsStrerror(lenRcvd); -+ LogError(0, RS_RET_GNUTLS_ERR, "GnuTLS receive error %zd has wrong read direction(wants write) " -+ "- this could be caused by a broken connection. GnuTLS reports: %s\n", -+ lenRcvd, pErr); -+ free(pErr); -+ ABORT_FINALIZE(RS_RET_GNUTLS_ERR); -+ } - } else { - int gnuRet = lenRcvd; - ABORTgnutls; -@@ -2031,6 +2049,7 @@ static rsRetVal - Send(nsd_t *pNsd, uchar *pBuf, ssize_t *pLenBuf) - { - int iSent; -+ int wantsWriteData = 0; - nsd_gtls_t *pThis = (nsd_gtls_t*) pNsd; - DEFiRet; - ISOBJ_TYPE_assert(pThis, nsd_gtls); -@@ -2051,10 +2070,12 @@ Send(nsd_t *pNsd, uchar *pBuf, ssize_t *pLenBuf) - break; - } - if(iSent != GNUTLS_E_INTERRUPTED && iSent != GNUTLS_E_AGAIN) { -+ /* Check if the underlaying file descriptor needs to read or write data!*/ -+ wantsWriteData = gnutls_record_get_direction(pThis->sess); - uchar *pErr = gtlsStrerror(iSent); -- LogError(0, RS_RET_GNUTLS_ERR, "unexpected GnuTLS error %d - this " -- "could be caused by a broken connection. GnuTLS reports: %s \n", -- iSent, pErr); -+ LogError(0, RS_RET_GNUTLS_ERR, "unexpected GnuTLS error %d, wantsWriteData=%d - this " -+ "could be caused by a broken connection. GnuTLS reports: %s\n", -+ iSent, wantsWriteData, pErr); - free(pErr); - gnutls_perror(iSent); - ABORT_FINALIZE(RS_RET_GNUTLS_ERR); -diff --git a/runtime/nsd_gtls.h b/runtime/nsd_gtls.h -index a3ef59f..b9988ae 100644 ---- a/runtime/nsd_gtls.h -+++ b/runtime/nsd_gtls.h -@@ -33,6 +33,11 @@ typedef enum { - gtlsRtry_recv = 2 - } gtlsRtryCall_t; /**< IDs of calls that needs to be retried */ - -+typedef enum { -+ gtlsDir_READ = 0, /**< GNUTLS wants READ */ -+ gtlsDir_WRITE = 1 /**< GNUTLS wants WRITE */ -+} gtlsDirection_t; -+ - typedef nsd_if_t nsd_gtls_if_t; /* we just *implement* this interface */ - - /* the nsd_gtls object */ -diff --git a/runtime/nsdsel_gtls.c b/runtime/nsdsel_gtls.c -index 6ed7187..01cfb05 100644 ---- a/runtime/nsdsel_gtls.c -+++ b/runtime/nsdsel_gtls.c -@@ -81,6 +81,7 @@ Add(nsdsel_t *pNsdsel, nsd_t *pNsd, nsdsel_waitOp_t waitOp) - - ISOBJ_TYPE_assert(pThis, nsdsel_gtls); - ISOBJ_TYPE_assert(pNsdGTLS, nsd_gtls); -+ DBGPRINTF("Add on nsd %p:\n", pNsdGTLS); - if(pNsdGTLS->iMode == 1) { - if(waitOp == NSDSEL_RD && gtlsHasRcvInBuffer(pNsdGTLS)) { - ++pThis->iBufferRcvReady; -@@ -99,6 +100,7 @@ Add(nsdsel_t *pNsdsel, nsd_t *pNsd, nsdsel_waitOp_t waitOp) - } - } - -+ dbgprintf("nsdsel_gtls: reached end on nsd %p, calling nsdsel_ptcp.Add with waitOp %d... \n", pNsdGTLS, waitOp); - /* if we reach this point, we need no special handling */ - CHKiRet(nsdsel_ptcp.Add(pThis->pTcp, pNsdGTLS->pTcp, waitOp)); - -@@ -120,7 +122,8 @@ Select(nsdsel_t *pNsdsel, int *piNumReady) - if(pThis->iBufferRcvReady > 0) { - /* we still have data ready! */ - *piNumReady = pThis->iBufferRcvReady; -- dbgprintf("nsdsel_gtls: doing dummy select, data present\n"); -+ dbgprintf("nsdsel_gtls: doing dummy select for %p->iBufferRcvReady=%d, data present\n", -+ pThis, pThis->iBufferRcvReady); - } else { - iRet = nsdsel_ptcp.Select(pThis->pTcp, piNumReady); - } -@@ -138,7 +141,7 @@ doRetry(nsd_gtls_t *pNsd) - DEFiRet; - int gnuRet; - -- dbgprintf("GnuTLS requested retry of %d operation - executing\n", pNsd->rtryCall); -+ dbgprintf("doRetry: GnuTLS requested retry of %d operation - executing\n", pNsd->rtryCall); - - /* We follow a common scheme here: first, we do the systen call and - * then we check the result. So far, the result is checked after the -@@ -151,7 +154,7 @@ doRetry(nsd_gtls_t *pNsd) - case gtlsRtry_handshake: - gnuRet = gnutls_handshake(pNsd->sess); - if(gnuRet == GNUTLS_E_AGAIN || gnuRet == GNUTLS_E_INTERRUPTED) { -- dbgprintf("GnuTLS handshake retry did not finish - " -+ dbgprintf("doRetry: GnuTLS handshake retry did not finish - " - "setting to retry (this is OK and can happen)\n"); - FINALIZE; - } else if(gnuRet == 0) { -@@ -167,9 +170,20 @@ doRetry(nsd_gtls_t *pNsd) - } - break; - case gtlsRtry_recv: -- dbgprintf("retrying gtls recv, nsd: %p\n", pNsd); -- CHKiRet(gtlsRecordRecv(pNsd)); -- pNsd->rtryCall = gtlsRtry_None; /* we are done */ -+ dbgprintf("doRetry: retrying gtls recv, nsd: %p\n", pNsd); -+ iRet = gtlsRecordRecv(pNsd); -+ if (iRet == RS_RET_RETRY) { -+ // Check if there is pending data -+ size_t stBytesLeft = gnutls_record_check_pending(pNsd->sess); -+ if (stBytesLeft > 0) { -+ // We are in retry and more data waiting, finalize it -+ goto finalize_it; -+ } else { -+ dbgprintf("doRetry: gtlsRecordRecv returned RETRY, but there is no pending" -+ "data on nsd: %p\n", pNsd); -+ } -+ } -+ pNsd->rtryCall = gtlsRtry_None; /* no more data, we are done */ - gnuRet = 0; - break; - case gtlsRtry_None: -@@ -241,7 +255,7 @@ IsReady(nsdsel_t *pNsdsel, nsd_t *pNsd, nsdsel_waitOp_t waitOp, int *pbIsReady) - * socket. -- rgerhards, 2010-11-20 - */ - if(pThis->iBufferRcvReady) { -- dbgprintf("nsd_gtls: dummy read, buffer not available for this FD\n"); -+ dbgprintf("nsd_gtls: dummy read, %p->buffer not available for this FD\n", pThis); - *pbIsReady = 0; - FINALIZE; - } -diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c -index 61c9444..06b9abe 100644 ---- a/runtime/tcpsrv.c -+++ b/runtime/tcpsrv.c -@@ -596,14 +596,15 @@ doReceive(tcpsrv_t *pThis, tcps_sess_t **ppSess, nspoll_t *pPoll) - int oserr = 0; - - ISOBJ_TYPE_assert(pThis, tcpsrv); -- DBGPRINTF("netstream %p with new data\n", (*ppSess)->pStrm); -+ prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); -+ DBGPRINTF("netstream %p with new data from remote peer %s\n", (*ppSess)->pStrm, pszPeer); - /* Receive message */ - iRet = pThis->pRcvData(*ppSess, buf, sizeof(buf), &iRcvd, &oserr); - switch(iRet) { - case RS_RET_CLOSED: - if(pThis->bEmitMsgOnClose) { - errno = 0; -- prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); -+ // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(0, RS_RET_PEER_CLOSED_CONN, "Netstream session %p closed by remote " - "peer %s.\n", (*ppSess)->pStrm, pszPeer); - } -@@ -619,13 +620,13 @@ doReceive(tcpsrv_t *pThis, tcps_sess_t **ppSess, nspoll_t *pPoll) - /* in this case, something went awfully wrong. - * We are instructed to terminate the session. - */ -- prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); -+ // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(oserr, localRet, "Tearing down TCP Session from %s", pszPeer); - CHKiRet(closeSess(pThis, ppSess, pPoll)); - } - break; - default: -- prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); -+ // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(oserr, iRet, "netstream session %p from %s will be closed due to error", - (*ppSess)->pStrm, pszPeer); - CHKiRet(closeSess(pThis, ppSess, pPoll)); -@@ -835,6 +836,8 @@ RunSelect(tcpsrv_t *pThis, nsd_epworkset_t workset[], size_t sizeWorkset) - while(iTCPSess != -1) { - /* TODO: access to pNsd is NOT really CLEAN, use method... */ - CHKiRet(nssel.Add(pSel, pThis->pSessions[iTCPSess]->pStrm, NSDSEL_RD)); -+ DBGPRINTF("tcpsrv process session %d:\n", iTCPSess); -+ - /* now get next... */ - iTCPSess = TCPSessGetNxtSess(pThis, iTCPSess); - } -diff --git a/tests/imtcp-tls-basic.sh b/tests/imtcp-tls-basic.sh -index 8643389..58c5946 100755 ---- a/tests/imtcp-tls-basic.sh -+++ b/tests/imtcp-tls-basic.sh -@@ -4,6 +4,9 @@ - . ${srcdir:=.}/diag.sh init - export NUMMESSAGES=50000 - export QUEUE_EMPTY_CHECK_FUNC=wait_seq_check -+# uncomment for debugging support: -+#export RSYSLOG_DEBUG="debug nostdout noprintmutexaction" -+#export RSYSLOG_DEBUGLOG="$RSYSLOG_DYNNAME.debuglog" - generate_conf - add_conf ' - global( defaultNetstreamDriverCAFile="'$srcdir'/tls-certs/ca.pem" --- -2.33.0 - diff --git a/backport-imptcp-bugfix-worker-thread-starvation-on-extreme-tr.patch b/backport-imptcp-bugfix-worker-thread-starvation-on-extreme-tr.patch deleted file mode 100644 index e3a7e2e789de961cd1c2a50d46dff6a8073a2e37..0000000000000000000000000000000000000000 --- a/backport-imptcp-bugfix-worker-thread-starvation-on-extreme-tr.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 54cbda6cde9bf667d699f7b0093d48a3983edb42 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Fri, 4 Mar 2022 11:39:11 +0100 -Subject: [PATCH] imptcp bugfix: worker thread starvation on extreme traffic - -When connectes were totally busy, without any pause, the assigened worker -did never terminate its reading loop. As such, it could not service any -other conenctions. If this happened multiple time and to all configured -workers, all other connections could not be processed at all. This extreme -scenario is very unlikely, as the whole issue is relatively unlikely. - -In practice, the issue could lead to somewhat degraded performance and -resolved itself after some time (in practice no connection is 100% busy -for an extended period of time). - -Note that this patch sets a fixed limit of 16 iterations for very busy -connections. This sounds like a good compromise between non-starvation -and performance. The exact number may be made configurable if there -is really need to. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/34e72ced504458d804f8d1049be67ea8cc00a4b4 ---- - plugins/imptcp/imptcp.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/plugins/imptcp/imptcp.c b/plugins/imptcp/imptcp.c -index e47a7c9..72e32dd 100644 ---- a/plugins/imptcp/imptcp.c -+++ b/plugins/imptcp/imptcp.c -@@ -10,7 +10,7 @@ - * - * File begun on 2010-08-10 by RGerhards - * -- * Copyright 2007-2018 Rainer Gerhards and Adiscon GmbH. -+ * Copyright 2007-2022 Rainer Gerhards and Adiscon GmbH. - * - * This file is part of rsyslog. - * -@@ -1391,7 +1391,7 @@ addEPollSock(epolld_type_t typ, void *ptr, int sock, epolld_t **pEpd) - epd->ptr = ptr; - epd->sock = sock; - *pEpd = epd; -- epd->ev.events = EPOLLIN|EPOLLET|EPOLLONESHOT; -+ epd->ev.events = EPOLLIN|EPOLLONESHOT; - epd->ev.data.ptr = (void*) epd; - - if(epoll_ctl(epollfd, EPOLL_CTL_ADD, sock, &(epd->ev)) != 0) { -@@ -1938,11 +1938,12 @@ sessActivity(ptcpsess_t *const pSess, int *const continue_polling) - int remsock = 0; /* init just to keep compiler happy... :-( */ - sbool bEmitOnClose = 0; - char rcvBuf[128*1024]; -+ int runs = 0; - DEFiRet; - - DBGPRINTF("imptcp: new activity on session socket %d\n", pSess->sock); - -- while(1) { -+ while(runs++ < 16) { - lenBuf = sizeof(rcvBuf); - lenRcv = recv(pSess->sock, rcvBuf, lenBuf, 0); - --- -2.33.0 - diff --git a/backport-rsyslogd-adjust-the-order-of-doHUP-and-processImInte.patch b/backport-rsyslogd-adjust-the-order-of-doHUP-and-processImInte.patch deleted file mode 100644 index 0cfb6e97a7d933003b7ee26a59b1309b7108eb33..0000000000000000000000000000000000000000 --- a/backport-rsyslogd-adjust-the-order-of-doHUP-and-processImInte.patch +++ /dev/null @@ -1,46 +0,0 @@ -From e2d129880b6830bf7d26ab46d957b944f73f96e1 Mon Sep 17 00:00:00 2001 -From: Yun Zhou -Date: Thu, 24 Mar 2022 16:34:09 +0800 -Subject: [PATCH] rsyslogd: adjust the order of doHUP() and processImInternal() - -After call doHUP(), probably there is a internal log in the list. However, it -will not be wrote out immediately, because the mainloop will be blocked at -pselect in wait_timeout() until a long timeout or next message occur. -More deadly, the log may be lost if the deamon exits unexpectedly. - -We might as well put processImInternal() after doHUP(), so that the message -will be flushed out immediately. - -Fixes: 723f6fdfa6(rsyslogd: Fix race between signals and main loop timeout) -Signed-off-by: Yun Zhou -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/857f77906f95681aa15c7ba3f88cbda8952f7e5f ---- - tools/rsyslogd.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tools/rsyslogd.c b/tools/rsyslogd.c -index 9a126dd..8410d44 100644 ---- a/tools/rsyslogd.c -+++ b/tools/rsyslogd.c -@@ -1966,8 +1966,6 @@ mainloop(void) - sigaddset(&sigblockset, SIGUSR1); - - do { -- processImInternal(); -- - pthread_sigmask(SIG_BLOCK, &sigblockset, &origmask); - if(bChildDied) { - reapChild(); -@@ -1988,6 +1986,8 @@ mainloop(void) - g_bRecordQueue = 0; - } - -+ processImInternal(); -+ - if(bFinished) - break; /* exit as quickly as possible */ - --- -2.33.0 - diff --git a/backport-tcpsrv-cleanup-remove-commented-out-code.patch b/backport-tcpsrv-cleanup-remove-commented-out-code.patch deleted file mode 100644 index de3ac4ff5cca54e295890056da2a5d03f431d6ed..0000000000000000000000000000000000000000 --- a/backport-tcpsrv-cleanup-remove-commented-out-code.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 22bef1c86200e594fd6d5d42fb10647d1303874f Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Tue, 23 Aug 2022 14:45:11 +0200 -Subject: [PATCH] tcpsrv: cleanup - remove commented out code - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/22bef1c86200e594fd6d5d42fb10647d1303874f ---- - runtime/tcpsrv.c | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c -index 2c91c2e..2feb2cc 100644 ---- a/runtime/tcpsrv.c -+++ b/runtime/tcpsrv.c -@@ -604,7 +604,6 @@ doReceive(tcpsrv_t *pThis, tcps_sess_t **ppSess, nspoll_t *pPoll) - case RS_RET_CLOSED: - if(pThis->bEmitMsgOnClose) { - errno = 0; -- // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(0, RS_RET_PEER_CLOSED_CONN, "Netstream session %p closed by remote " - "peer %s.\n", (*ppSess)->pStrm, pszPeer); - } -@@ -620,13 +619,11 @@ doReceive(tcpsrv_t *pThis, tcps_sess_t **ppSess, nspoll_t *pPoll) - /* in this case, something went awfully wrong. - * We are instructed to terminate the session. - */ -- // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(oserr, localRet, "Tearing down TCP Session from %s", pszPeer); - CHKiRet(closeSess(pThis, ppSess, pPoll)); - } - break; - default: -- // prop.GetString((*ppSess)->fromHostIP, &pszPeer, &lenPeer); - LogError(oserr, iRet, "netstream session %p from %s will be closed due to error", - (*ppSess)->pStrm, pszPeer); - CHKiRet(closeSess(pThis, ppSess, pPoll)); --- -2.27.0 diff --git a/backport-tcpsrv-do-not-decrease-number-of-to-be-processed-fds.patch b/backport-tcpsrv-do-not-decrease-number-of-to-be-processed-fds.patch deleted file mode 100644 index 6c70e5ee08f53b02c7c971a26f5f372fda43b126..0000000000000000000000000000000000000000 --- a/backport-tcpsrv-do-not-decrease-number-of-to-be-processed-fds.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d909290dc2d9ffab86409e054abd1abaaf998571 Mon Sep 17 00:00:00 2001 -From: Iwan Timmer -Date: Fri, 29 Apr 2022 15:14:27 +0200 -Subject: [PATCH] tcpsrv: do not decrease number of to be processed fds on - error - -nfds should only be decreased for processed streams and not for -streams returning an error code, like RS_RET_RETRY. - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/6ffc14fd450b90872272871130d29ab3ecf85f6f ---- - runtime/tcpsrv.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c -index 06b9abe..2c91c2e 100644 ---- a/runtime/tcpsrv.c -+++ b/runtime/tcpsrv.c -@@ -880,7 +880,8 @@ RunSelect(tcpsrv_t *pThis, nsd_epworkset_t workset[], size_t sizeWorkset) - processWorkset(pThis, NULL, iWorkset, workset); - iWorkset = 0; - } -- --nfds; /* indicate we have processed one */ -+ if(bIsReady) -+ --nfds; /* indicate we have processed one */ - } - iTCPSess = TCPSessGetNxtSess(pThis, iTCPSess); - } --- -2.33.0 - diff --git a/backport-testbench-skip-omfwd_fast_imuxsock.sh-if-liblogging-stdlog-is-not-available.patch b/backport-testbench-skip-omfwd_fast_imuxsock.sh-if-liblogging-stdlog-is-not-available.patch deleted file mode 100644 index 53052356021bdca99ef0a2de419265a956987c67..0000000000000000000000000000000000000000 --- a/backport-testbench-skip-omfwd_fast_imuxsock.sh-if-liblogging-stdlog-is-not-available.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 62167fe37ee7af43d9eca49c8e025fa89959db20 Mon Sep 17 00:00:00 2001 -From: Michael Biebl -Date: Tue, 19 Oct 2021 23:00:50 +0200 -Subject: [PATCH] testbench: skip omfwd_fast_imuxsock.sh if liblogging-stdlog - is not available - -Fixes #4712 - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/440fd1d51c5aa7763d3d810b542a7e373a6738eb ---- - tests/omfwd_fast_imuxsock.sh | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/tests/omfwd_fast_imuxsock.sh b/tests/omfwd_fast_imuxsock.sh -index bb35b58..10f9f19 100755 ---- a/tests/omfwd_fast_imuxsock.sh -+++ b/tests/omfwd_fast_imuxsock.sh -@@ -4,6 +4,13 @@ - . ${srcdir:=.}/diag.sh init - skip_platform "SunOS" "We have no ATOMIC BUILTINS, so OverallQueueSize counting of imdiag is NOT threadsafe and the counting will fail on SunOS" - -+./syslog_caller -fsyslog_inject-l -m0 > /dev/null 2>&1 -+no_liblogging_stdlog=$? -+if [ $no_liblogging_stdlog -ne 0 ];then -+ echo "liblogging-stdlog not available - skipping test" -+ exit 77 -+fi -+ - # export RSYSLOG_DEBUG="debug nologfuncflow noprintmutexaction nostdout" - export NUMMESSAGES=100000 - --- -2.33.0 - diff --git a/bugfix-CVE-2022-24903.patch b/bugfix-CVE-2022-24903.patch deleted file mode 100644 index 4f8287f147dbec9fb5f3d3021947acf9a7a538a7..0000000000000000000000000000000000000000 --- a/bugfix-CVE-2022-24903.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 66c63027b95dce0fcfe50fa8baf2366ac83b340d Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Fri, 22 Apr 2022 09:49:46 +0200 -Subject: [PATCH] net bugfix: potential buffer overrun - -Conflict:NA -Reference:https://github.com/rsyslog/rsyslog/commit/89955b0bcb1ff105e1374aad7e0e993faa6a038f ---- - contrib/imhttp/imhttp.c | 4 +++- - plugins/imptcp/imptcp.c | 4 +++- - runtime/tcps_sess.c | 4 +++- - 3 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/contrib/imhttp/imhttp.c b/contrib/imhttp/imhttp.c -index f09260b..95704af 100644 ---- a/contrib/imhttp/imhttp.c -+++ b/contrib/imhttp/imhttp.c -@@ -487,7 +487,9 @@ processOctetMsgLen(const instanceConf_t *const inst, struct conn_wrkr_s *connWrk - connWrkr->parseState.iOctetsRemain = connWrkr->parseState.iOctetsRemain * 10 + ch - '0'; - } - // temporarily save this character into the message buffer -- connWrkr->pMsg[connWrkr->iMsg++] = ch; -+ if(connWrkr->iMsg + 1 < s_iMaxLine) { -+ connWrkr->pMsg[connWrkr->iMsg++] = ch; -+ } - } else { - const char *remoteAddr = ""; - if (connWrkr->propRemoteAddr) { -diff --git a/plugins/imptcp/imptcp.c b/plugins/imptcp/imptcp.c -index cdd29d4..e47a7c9 100644 ---- a/plugins/imptcp/imptcp.c -+++ b/plugins/imptcp/imptcp.c -@@ -1107,7 +1107,9 @@ processDataRcvd(ptcpsess_t *const __restrict__ pThis, - if(pThis->iOctetsRemain <= 200000000) { - pThis->iOctetsRemain = pThis->iOctetsRemain * 10 + c - '0'; - } -- *(pThis->pMsg + pThis->iMsg++) = c; -+ if(pThis->iMsg < iMaxLine) { -+ *(pThis->pMsg + pThis->iMsg++) = c; -+ } - } else { /* done with the octet count, so this must be the SP terminator */ - DBGPRINTF("TCP Message with octet-counter, size %d.\n", pThis->iOctetsRemain); - prop.GetString(pThis->peerName, &propPeerName, &lenPeerName); -diff --git a/runtime/tcps_sess.c b/runtime/tcps_sess.c -index b12d873..0831192 100644 ---- a/runtime/tcps_sess.c -+++ b/runtime/tcps_sess.c -@@ -389,7 +389,9 @@ processDataRcvd(tcps_sess_t *pThis, - if(pThis->iOctetsRemain <= 200000000) { - pThis->iOctetsRemain = pThis->iOctetsRemain * 10 + c - '0'; - } -- *(pThis->pMsg + pThis->iMsg++) = c; -+ if(pThis->iMsg < iMaxLine) { -+ *(pThis->pMsg + pThis->iMsg++) = c; -+ } - } else { /* done with the octet count, so this must be the SP terminator */ - DBGPRINTF("TCP Message with octet-counter, size %d.\n", pThis->iOctetsRemain); - prop.GetString(pThis->fromHost, &propPeerName, &lenPeerName); --- -2.27.0 - diff --git a/bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak.patch b/bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak.patch index bb857fd56936b040aedebec06c1ab0a13a1fab31..9e0689d787b5b9569975b5bca90cbd0ba403dab1 100644 --- a/bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak.patch +++ b/bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak.patch @@ -1,11 +1,16 @@ -From 71e9b4eda329fc9e59fbbcdc86353a7609f8d383 Mon Sep 17 00:00:00 2001 +From 71e9b4eda329fc9e59fbbcdc86353a7690f8d383 Mon Spe 17 00:00:00 2001 From: guoxiaoqi Date: Tue, 26 Feb 2019 23:33:08 +0000 -Subject: [PATCH] add configuration to avoid memory leak for bugfix of rsyslog-7.4.7 +Subject: [PATCH] bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak -reason: add configuration to avoid memory leak for bugfix of rsyslog-7.4.7 +reason: add configuration to avoid memory leak for bugfix of rsyslog-7.4.7i +--- +From a633ee629468562499ead31e26c8dfca5a5f3293 Mon Sep 17 00:00:00 2001 +From: pengyi +Date: Fri, 3 Feb 2023 15:26:23 +0800 +Subject: [PATCH] bugfix-rsyslog-7.4.7-add-configuration-to-avoid-memory-leak -Signed-off-by: guoxiaoqi +V-2: adapt due to line mismatch --- action.c | 7 ++++++- runtime/queue.c | 30 +++++++++++++++++++++++++++++- @@ -13,10 +18,10 @@ Signed-off-by: guoxiaoqi 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/action.c b/action.c -index 1bc0ad2..e973f72 100644 +index 4c3b581..4fa53ed 100644 --- a/action.c +++ b/action.c -@@ -174,6 +174,7 @@ typedef struct configSettings_s { +@@ -176,6 +176,7 @@ typedef struct configSettings_s { int iActionQWrkMinMsgs; /* minimum messages per worker needed to start a new one */ int bActionQSaveOnShutdown; /* save queue on shutdown (when DA enabled)? */ int64 iActionQueMaxDiskSpace; /* max disk space allocated 0 ==> unlimited */ @@ -24,7 +29,7 @@ index 1bc0ad2..e973f72 100644 int iActionQueueDeqSlowdown; /* dequeue slowdown (simple rate limiting) */ int iActionQueueDeqtWinFromHr; /* hour begin of time frame when queue is to be dequeued */ int iActionQueueDeqtWinToHr; /* hour begin of time frame when queue is to be dequeued */ -@@ -309,7 +310,8 @@ actionResetQueueParams(void) +@@ -303,7 +304,8 @@ actionResetQueueParams(void) cs.iActionQtoWrkShutdown = 60000; /* timeout for worker thread shutdown */ cs.iActionQWrkMinMsgs = -1; /* minimum messages per worker needed to start a new one */ cs.bActionQSaveOnShutdown = 1; /* save queue on shutdown (when DA enabled)? */ @@ -34,7 +39,7 @@ index 1bc0ad2..e973f72 100644 cs.iActionQueueDeqSlowdown = 0; cs.iActionQueueDeqtWinFromHr = 0; cs.iActionQueueDeqtWinToHr = 25; /* 25 disables time windowed dequeuing */ -@@ -543,6 +545,7 @@ actionConstructFinalize(action_t *__restrict__ const pThis, struct nvlst *lst) +@@ -539,6 +541,7 @@ actionConstructFinalize(action_t *__restrict__ const pThis, struct nvlst *lst) error %d. Ignored, running with default setting", iRet); \ } setQPROP(qqueueSetsizeOnDiskMax, "$ActionQueueMaxDiskSpace", cs.iActionQueMaxDiskSpace); @@ -42,7 +47,7 @@ index 1bc0ad2..e973f72 100644 setQPROP(qqueueSetiDeqBatchSize, "$ActionQueueDequeueBatchSize", cs.iActionQueueDeqBatchSize); setQPROP(qqueueSetMaxFileSize, "$ActionQueueFileSize", cs.iActionQueMaxFileSize); setQPROPstr(qqueueSetFilePrefix, "$ActionQueueFileName", cs.pszActionQFName); -@@ -2229,6 +2232,8 @@ rsRetVal actionClassInit(void) +@@ -2318,6 +2321,8 @@ rsRetVal actionClassInit(void) &cs.iActionQueueDeqBatchSize, NULL)); CHKiRet(regCfSysLineHdlr((uchar *)"actionqueuemaxdiskspace", 0, eCmdHdlrSize, NULL, &cs.iActionQueMaxDiskSpace, NULL)); @@ -52,7 +57,7 @@ index 1bc0ad2..e973f72 100644 &cs.iActionQHighWtrMark, NULL)); CHKiRet(regCfSysLineHdlr((uchar *)"actionqueuelowwatermark", 0, eCmdHdlrInt, NULL, diff --git a/runtime/queue.c b/runtime/queue.c -index 23de366..0c2485c 100644 +index bd3fb8e..de9c619 100644 --- a/runtime/queue.c +++ b/runtime/queue.c @@ -46,6 +46,7 @@ @@ -63,7 +68,7 @@ index 23de366..0c2485c 100644 #include "rsyslog.h" #include "queue.h" -@@ -125,6 +126,7 @@ static struct cnfparamdescr cnfpdescr[] = { +@@ -115,6 +116,7 @@ static struct cnfparamdescr cnfpdescr[] = { { "queue.mindequeuebatchsize", eCmdHdlrInt, 0 }, { "queue.mindequeuebatchsize.timeout", eCmdHdlrInt, 0 }, { "queue.maxdiskspace", eCmdHdlrSize, 0 }, @@ -71,7 +76,7 @@ index 23de366..0c2485c 100644 { "queue.highwatermark", eCmdHdlrInt, 0 }, { "queue.lowwatermark", eCmdHdlrInt, 0 }, { "queue.fulldelaymark", eCmdHdlrInt, 0 }, -@@ -472,6 +474,7 @@ StartDA(qqueue_t *pThis) +@@ -464,6 +466,7 @@ StartDA(qqueue_t *pThis) CHKiRet(qqueueSetpAction(pThis->pqDA, pThis->pAction)); CHKiRet(qqueueSetsizeOnDiskMax(pThis->pqDA, pThis->sizeOnDiskMax)); @@ -79,7 +84,7 @@ index 23de366..0c2485c 100644 CHKiRet(qqueueSetiDeqSlowdown(pThis->pqDA, pThis->iDeqSlowdown)); CHKiRet(qqueueSetMaxFileSize(pThis->pqDA, pThis->iMaxFileSize)); CHKiRet(qqueueSetFilePrefix(pThis->pqDA, pThis->pszFilePrefix, pThis->lenFilePrefix)); -@@ -1016,6 +1019,20 @@ qAddDisk(qqueue_t *const pThis, smsg_t* pMsg) +@@ -1019,6 +1022,20 @@ qAddDisk(qqueue_t *const pThis, smsg_t* pMsg) ISOBJ_TYPE_assert(pMsg, msg); number_t nWriteCount; const int oldfile = strmGetCurrFileNum(pThis->tVars.disk.pWrite); @@ -100,7 +105,7 @@ index 23de366..0c2485c 100644 CHKiRet(strm.SetWCntr(pThis->tVars.disk.pWrite, &nWriteCount)); CHKiRet((objSerialize(pMsg))(pMsg, pThis->tVars.disk.pWrite)); -@@ -1047,6 +1064,13 @@ qAddDisk(qqueue_t *const pThis, smsg_t* pMsg) +@@ -1050,6 +1067,13 @@ qAddDisk(qqueue_t *const pThis, smsg_t* pMsg) } finalize_it: @@ -114,8 +119,8 @@ index 23de366..0c2485c 100644 RETiRet; } -@@ -1544,7 +1568,8 @@ qqueueSetDefaultsActionQueue(qqueue_t *pThis) - pThis->toWrkShutdown = actq_dflt_toWrkShutdown; /* timeout for worker thread shutdown */ +@@ -1546,7 +1570,8 @@ qqueueSetDefaultsActionQueue(qqueue_t *pThis) + pThis->toWrkShutdown = loadConf->globals.actq_dflt_toWrkShutdown; /* timeout for worker thread shutdown */ pThis->iMinMsgsPerWrkr = -1; /* minimum messages per worker needed to start a new one */ pThis->bSaveOnShutdown = 1; /* save queue on shutdown (when DA enabled)? */ - pThis->sizeOnDiskMax = 0; /* unlimited */ @@ -124,7 +129,7 @@ index 23de366..0c2485c 100644 pThis->iDeqSlowdown = 0; pThis->iDeqtWinFromHr = 0; pThis->iDeqtWinToHr = 25; /* disable time-windowed dequeuing by default */ -@@ -3355,6 +3380,8 @@ qqueueApplyCnfParam(qqueue_t *pThis, struct nvlst *lst) +@@ -3401,6 +3426,8 @@ qqueueApplyCnfParam(qqueue_t *pThis, struct nvlst *lst) pThis->toMinDeqBatchSize = pvals[i].val.d.n; } else if(!strcmp(pblk.descr[i].name, "queue.maxdiskspace")) { pThis->sizeOnDiskMax = pvals[i].val.d.n; @@ -133,7 +138,7 @@ index 23de366..0c2485c 100644 } else if(!strcmp(pblk.descr[i].name, "queue.highwatermark")) { pThis->iHighWtrMrk = pvals[i].val.d.n; } else if(!strcmp(pblk.descr[i].name, "queue.lowwatermark")) { -@@ -3455,6 +3482,7 @@ DEFpropSetMeth(qqueue, iDeqBatchSize, int) +@@ -3555,6 +3582,7 @@ DEFpropSetMeth(qqueue, iDeqBatchSize, int) DEFpropSetMeth(qqueue, iMinDeqBatchSize, int) DEFpropSetMeth(qqueue, sizeOnDiskMax, int64) DEFpropSetMeth(qqueue, iSmpInterval, int) @@ -142,10 +147,10 @@ index 23de366..0c2485c 100644 /* This function can be used as a generic way to set properties. Only the subset diff --git a/runtime/queue.h b/runtime/queue.h -index 5f91c58..f01c325 100644 +index dd989bd..2264f08 100644 --- a/runtime/queue.h +++ b/runtime/queue.h -@@ -143,6 +143,7 @@ struct queue_s { +@@ -144,6 +144,7 @@ struct queue_s { int iNumberFiles; /* how many files make up the queue? */ int64 iMaxFileSize; /* max size for a single queue file */ int64 sizeOnDiskMax; /* maximum size on disk allowed */ @@ -153,7 +158,7 @@ index 5f91c58..f01c325 100644 qDeqID deqIDAdd; /* next dequeue ID to use during add to queue store */ qDeqID deqIDDel; /* queue store delete position */ int bIsDA; /* is this queue disk assisted? */ -@@ -233,6 +234,7 @@ PROTOTYPEpropSetMeth(qqueue, bSaveOnShutdown, int); +@@ -237,6 +238,7 @@ PROTOTYPEpropSetMeth(qqueue, bSaveOnShutdown, int); PROTOTYPEpropSetMeth(qqueue, pAction, action_t*); PROTOTYPEpropSetMeth(qqueue, iDeqSlowdown, int); PROTOTYPEpropSetMeth(qqueue, sizeOnDiskMax, int64); @@ -162,5 +167,5 @@ index 5f91c58..f01c325 100644 #define qqueueGetID(pThis) ((unsigned long) pThis) -- -2.19.1 +2.23.0 diff --git a/print-main-queue-info-to-journal-when-receive-USR1-signal.patch b/print-main-queue-info-to-journal-when-receive-USR1-signal.patch index 1924a7454b714f9e494c5e8bf2ce834f29fb4649..e3fa4cdd653ca7974696d3c280ccd15010ee6eaa 100644 --- a/print-main-queue-info-to-journal-when-receive-USR1-signal.patch +++ b/print-main-queue-info-to-journal-when-receive-USR1-signal.patch @@ -7,12 +7,14 @@ Signed-off-by: wangshouping V-2: add macro control for systemd/sd-journal.h Signed-off-by: pengyi37 +V-3: adapt pMsgQueue to runConf->pMsgQueue +Signed-off-by: pengyi37 --- - tools/rsyslogd.c | 19 ++++++++++++++++++- - 1 file changed, 18 insertions(+), 1 deletion(-) + tools/rsyslogd.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/rsyslogd.c b/tools/rsyslogd.c -index f1eea07..657f4de 100644 +index 31b91a1..8be2032 100644 --- a/tools/rsyslogd.c +++ b/tools/rsyslogd.c @@ -36,6 +36,7 @@ @@ -23,15 +25,15 @@ index f1eea07..657f4de 100644 #endif #include "rsyslog.h" -@@ -180,6 +181,7 @@ void rsyslogdDoDie(int sig); - /* global data items */ - static int bChildDied; +@@ -182,6 +183,7 @@ static pthread_mutex_t mutChildDied; + static int bChildDied = 0; + static pthread_mutex_t mutHadHUP; static int bHadHUP; +static int g_bRecordQueue; static int doFork = 1; /* fork - run in daemon mode - read-only after startup */ int bFinished = 0; /* used by termination signal handler, read-only except there * is either 0 or the number of the signal that requested the -@@ -1269,8 +1271,13 @@ rsyslogdDebugSwitch(void) +@@ -1294,8 +1296,13 @@ rsyslogdDebugSwitch(void) dbgprintf("\n"); debugging_on = 0; } @@ -45,7 +47,7 @@ index f1eea07..657f4de 100644 /* This is the main entry point into rsyslogd. Over time, we should try to * modularize it a bit more... -@@ -1618,7 +1625,7 @@ initAll(int argc, char **argv) +@@ -1629,7 +1636,7 @@ initAll(int argc, char **argv) hdlr_enable(SIGINT, rsyslogdDoDie); hdlr_enable(SIGQUIT, rsyslogdDoDie); } else { @@ -54,30 +56,22 @@ index f1eea07..657f4de 100644 hdlr_enable(SIGINT, SIG_IGN); hdlr_enable(SIGQUIT, SIG_IGN); } -@@ -1956,6 +1963,7 @@ mainloop(void) - sigaddset(&sigblockset, SIGTERM); - sigaddset(&sigblockset, SIGCHLD); - sigaddset(&sigblockset, SIGHUP); -+ sigaddset(&sigblockset, SIGUSR1); - - do { - processImInternal(); -@@ -1970,6 +1978,15 @@ mainloop(void) - doHUP(); - bHadHUP = 0; +@@ -1997,6 +2004,15 @@ mainloop(void) + if(need_free_mutex) { + pthread_mutex_unlock(&mutHadHUP); } + if (g_bRecordQueue) { -+ if (pMsgQueue != NULL) { ++ if(runConf->pMsgQueue != NULL) { + sd_journal_print(LOG_NOTICE, "main queue size information: current QueueSize=%d MaxQueueSize=%d\n", -+ pMsgQueue->iQueueSize, pMsgQueue->iMaxQueueSize); ++ runConf->pMsgQueue->iQueueSize, runConf->pMsgQueue->iMaxQueueSize); + } else { + sd_journal_print(LOG_NOTICE, "main queue size information: pMsgQueue is NULL!\n"); + } + g_bRecordQueue = 0; + } - if(bFinished) - break; /* exit as quickly as possible */ + processImInternal(); + -- 2.23.0 diff --git a/rsyslog-8.2110.0.tar.gz b/rsyslog-8.2210.0.tar.gz similarity index 31% rename from rsyslog-8.2110.0.tar.gz rename to rsyslog-8.2210.0.tar.gz index 7b4d6814faa6fd274977f611a8a791c0a00cb6c7..dcd92c0655c6f6a650d8a8f309848b7609c2bfe0 100644 Binary files a/rsyslog-8.2110.0.tar.gz and b/rsyslog-8.2210.0.tar.gz differ diff --git a/rsyslog-doc-8.2110.0.tar.gz b/rsyslog-doc-8.2210.0.tar.gz similarity index 46% rename from rsyslog-doc-8.2110.0.tar.gz rename to rsyslog-doc-8.2210.0.tar.gz index ef3d3bf7bece29c99c1ab8f2a23347add121d63d..ee081045065f4c6436f5a2c370f7caadb23cd8e5 100644 Binary files a/rsyslog-doc-8.2110.0.tar.gz and b/rsyslog-doc-8.2210.0.tar.gz differ diff --git a/rsyslog.spec b/rsyslog.spec index 6dd0e6224b433bebd8bee9c3a0716561486db966..97e11e0cf0fcd133640982250005fc471a455f89 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -6,8 +6,8 @@ %define systemd_lived 1 Name: rsyslog -Version: 8.2110.0 -Release: 14 +Version: 8.2210.0 +Release: 1 Summary: The rocket-fast system for log processing License: (GPLv3+ and ASL 2.0) URL: http://www.rsyslog.com/ @@ -30,29 +30,9 @@ Patch9003: rsyslog-8.37.0-initialize-variables-and-check-return-value.patch Patch9004: print-main-queue-info-to-journal-when-queue-full.patch Patch9005: print-main-queue-info-to-journal-when-receive-USR1-signal.patch %endif -Patch9006: bugfix-CVE-2022-24903.patch - -Patch6000: backport-testbench-skip-omfwd_fast_imuxsock.sh-if-liblogging-stdlog-is-not-available.patch -Patch6001: backport-Fixes-4395-by-correctly-checking-for-EPIPE.patch -Patch6002: backport-rsyslogd-adjust-the-order-of-doHUP-and-processImInte.patch -Patch6003: backport-gnutls-bugfix-Fix-error-handling-in-gtlsRecordRecv.patch -Patch6004: backport-Fix-non-null-terminated-string-used-with-strlen.patch -Patch6005: backport-tcpsrv-do-not-decrease-number-of-to-be-processed-fds.patch -Patch6006: backport-imptcp-bugfix-worker-thread-starvation-on-extreme-tr.patch -Patch6007: backport-Fix-memory-leak-when-globally-de-initialize-GnuTLS.patch -Patch6008: backport-Fix-memory-leak-when-free-action-worker-data-table.patch -Patch6009: backport-Fix-memory-leak-when-SetString.patch -Patch6010: backport-core-bugfix-correct-local-host-name-after-config-processing.patch -Patch6011: backport-core-bugfix-local-hostname-invalid-if-no-global-config-object-given.patch -Patch6012: backport-Simplified-and-fixed-IPv4-digit-detection.patch -Patch6013: backport-tcpsrv-cleanup-remove-commented-out-code.patch -Patch6014: backport-add-support-for-permittedPeers-setting-at-input.patch -Patch6015: backport-fix-memory-leak-in-afterRun-Code.patch -Patch6016: backport-Terminate-all-tcpsrv-threads-properly.patch -Patch6017: backport-Deallocate-outchannel-resources-in-rsconf-destructor.patch -Patch6018: backport-Fix-Segmentation-fault-in-close-journal.patch -Patch6019: backport-add-test-for-legacy-permittedPeer-statement.patch -Patch6020: backport-imtcp-bugfix-legacy-config-directives-did-no-longer-work.patch + +Patch6000: backport-core-bugfix-local-hostname-invalid-if-no-global-config-object-given.patch +Patch6001: backport-imtcp-bugfix-legacy-config-directives-did-no-longer-work.patch BuildRequires: gcc autoconf automake bison dos2unix flex pkgconfig python3-docutils libtool BuildRequires: libgcrypt-devel libuuid-devel zlib-devel krb5-devel libnet-devel gnutls-devel @@ -527,6 +507,12 @@ done %{_mandir}/man1/rscryutil.1.gz %changelog +* Sat Feb 4 2023 pengyi - 8.2210.0-1 +- Type:NA +- ID:NA +- SUG:NA +- DESC: update to 8.2210 version + * Sat Dec 24 2022 pengyi - 8.2110.0-14 - Type:NA - ID:NA