backport patches from upstream

This commit is contained in:
wcc_140409 2021-09-16 14:45:25 +08:00
parent bde96f2dfa
commit 8c67ea6437
13 changed files with 482 additions and 1 deletions

View File

@ -0,0 +1,22 @@
From b4a312b6361b7035f161383e3a51c7821958511a Mon Sep 17 00:00:00 2001
From: alakatos <alakatos@redhat.com>
Date: Thu, 22 Jul 2021 11:19:16 +0200
Subject: [PATCH] Close file descriptor when freshStartTail is turned on
---
plugins/imfile/imfile.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
index db161cc491..ddbd286bb4 100644
--- a/plugins/imfile/imfile.c
+++ b/plugins/imfile/imfile.c
@@ -1544,6 +1544,7 @@ openFileWithoutStateFile(act_obj_t *const act)
const int fd = open(act->name, O_RDONLY | O_CLOEXEC);
if(fd >= 0) {
act->pStrm->iCurrOffs = lseek64(fd, 0, SEEK_END);
+ close(fd);
if(act->pStrm->iCurrOffs < 0) {
act->pStrm->iCurrOffs = 0;
LogError(errno, RS_RET_ERR, "imfile: could not query current "

View File

@ -0,0 +1,78 @@
From cf0a6386d33e1311a6f37a887872949d95f1cc16 Mon Sep 17 00:00:00 2001
From: Kevin Guillemot <kevin.guillemot@advens.fr>
Date: Wed, 30 Jun 2021 17:39:13 +0200
Subject: [PATCH] OMMONGODB :: Fixes
- Fix Segmentation fault when server is down
- Add server connexion check while resuming
trust merge open source commit:cf0a6386d33e1311a6f37a887872949d95f1cc16
---
plugins/ommongodb/ommongodb.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/plugins/ommongodb/ommongodb.c b/plugins/ommongodb/ommongodb.c
index fc3153afd..a8b6ac96f 100644
--- a/plugins/ommongodb/ommongodb.c
+++ b/plugins/ommongodb/ommongodb.c
@@ -136,10 +136,12 @@ static void closeMongoDB(instanceData *pData)
if(pData->client != NULL) {
if (pData->collection != NULL) {
mongoc_collection_destroy (pData->collection);
+ pData->collection = NULL;
}
-
mongoc_client_destroy (pData->client);
+ pData->client = NULL;
mongoc_cleanup ();
+ DBGPRINTF("ommongodb: Mongodb connexion closed.");
}
}
@@ -189,6 +191,7 @@ reportMongoError(instanceData *pData)
/* The following function is responsible for initializing a
* MongoDB connection.
* Initially added 2004-10-28 mmeckelein
+ * Improved to check if server is available (ping) @kguillemot 2021-06-30
*/
static rsRetVal initMongoDB(instanceData *pData, int bSilent)
{
@@ -208,7 +211,7 @@ static rsRetVal initMongoDB(instanceData *pData, int bSilent)
dbgprintf("ommongodb: mongo-c-driver was not built with SSL options, ssl directives will not be used.");
#endif
}
- if(pData->client == NULL) {
+ if(!pData->client) {
if(!bSilent) {
reportMongoError(pData);
dbgprintf("ommongodb: can not initialize MongoDB handle");
@@ -217,6 +220,20 @@ static rsRetVal initMongoDB(instanceData *pData, int bSilent)
}
pData->collection = mongoc_client_get_collection (pData->client, pData->db, pData->collection_name);
+ // Try to contact server
+ bson_t *command, reply;
+ bson_error_t error;
+ command = BCON_NEW ("ping", BCON_INT32 (1));
+ unsigned char retval = mongoc_client_command_simple(pData->client, pData->db, command, NULL, &reply, &error);
+ bson_destroy(&reply);
+ bson_destroy(command);
+ if( !retval ) {
+ DBGPRINTF("ommongodb: ping server error (%u): %s \n", error.code, error.message);
+ closeMongoDB(pData);
+ reportMongoError(pData);
+ ABORT_FINALIZE(RS_RET_SUSPENDED);
+ }
+
finalize_it:
RETiRet;
}
@@ -551,7 +568,7 @@ CODESTARTdoAction
} else if (is_allowed_error_code(pData, pData->error.code)) {
dbgprintf("ommongodb: insert error: allowing error code\n");
} else {
- dbgprintf("ommongodb: insert error\n");
+ dbgprintf("ommongodb: insert error %u : %s \n", pData->error.code, pData->error.message);
reportMongoError(pData);
/* close on insert error to permit resume */
closeMongoDB(pData);
--
2.23.0

View File

@ -0,0 +1,30 @@
From d93c5e9d4830197a36830ba285bc5179312cbfc3 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Mon, 9 Aug 2021 12:38:06 +0200
Subject: [PATCH] imfile bugfix: hash char invalidly added in readmode != 0
If imfile is ingesting log files with readMode set to 2 or 1, the resulting
messages all have a '#' character at the end. This patch corrects the behaviour.
Note: if some external script "supported" the bug of extra hash character at
the end of line, it may be necessary to update them.
closes https://github.com/rsyslog/rsyslog/issues/4491
---
runtime/stream.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/runtime/stream.c b/runtime/stream.c
index abe4ffb4bd..23cde86a07 100644
--- a/runtime/stream.c
+++ b/runtime/stream.c
@@ -888,7 +888,7 @@ strmReadLine(strm_t *const pThis, cstr_t **ppCStr, uint8_t mode, sbool bEscapeLF
{
uchar c;
uchar finished;
- const int escapeLFString_len = (escapeLFString == NULL) ? 3 : strlen((char*) escapeLFString);
+ const int escapeLFString_len = (escapeLFString == NULL) ? 4 : strlen((char*) escapeLFString);
DEFiRet;
assert(pThis != NULL);

View File

@ -0,0 +1,39 @@
From 6a1faa065a60c080915f1abdcfa82bc39b88d895 Mon Sep 17 00:00:00 2001
From: Gerd Rausch <gerd.rausch@oracle.com>
Date: Thu, 15 Apr 2021 11:16:29 -0700
Subject: [PATCH] imjournal: flush buffer before fsync
Flush the FILE* buffer before rename & fsync in order
to not end up syncing an empty file.
Also, close WorkDir on fsync in order to prevent
file descriptor leakage.
Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com>
Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com>
trust merge open source commit:6a1faa065a60c080915f1abdcfa82bc39b88d895
---
plugins/imjournal/imjournal.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c
index 35c3f8f9b..62a5ab206 100644
--- a/plugins/imjournal/imjournal.c
+++ b/plugins/imjournal/imjournal.c
@@ -562,6 +562,8 @@ persistJournalState(void)
ABORT_FINALIZE(RS_RET_IO_ERROR);
}
+ fflush(sf);
+
/* change the name of the file to the configured one */
if (rename(tmp_sf, cs.stateFile) < 0) {
LogError(errno, iRet, "imjournal: rename() failed for new path: '%s'", cs.stateFile);
@@ -583,6 +585,8 @@ persistJournalState(void)
LogError(errno, RS_RET_IO_ERROR, "imjournal: fsync on '%s' failed", glbl.GetWorkDir());
ABORT_FINALIZE(RS_RET_IO_ERROR);
}
+
+ closedir(wd);
}
DBGPRINTF("Persisted journal to '%s'\n", cs.stateFile);
--
2.23.0

View File

@ -0,0 +1,36 @@
From 9121c4ea5aeaac9b1ee7bd8c308c8fde95bc39b4 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Wed, 4 Aug 2021 08:03:46 +0200
Subject: [PATCH] imptcp bugfix: keep alive interval was incorrectly set
The interval was accidentally set to keep alive interval. This has been
corrected.
closes https://github.com/rsyslog/rsyslog/issues/4609
4
---
plugins/imptcp/imptcp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/plugins/imptcp/imptcp.c b/plugins/imptcp/imptcp.c
index e89971dbe8..cdd29d4fd5 100644
--- a/plugins/imptcp/imptcp.c
+++ b/plugins/imptcp/imptcp.c
@@ -1721,7 +1721,7 @@ static rsRetVal addInstance(void __attribute__((unused)) *pVal, uchar *const pNe
inst->pBindRuleset = NULL;
inst->bSuppOctetFram = cs.bSuppOctetFram;
inst->bKeepAlive = cs.bKeepAlive;
- inst->iKeepAliveIntvl = cs.iKeepAliveTime;
+ inst->iKeepAliveIntvl = cs.iKeepAliveIntvl;
inst->iKeepAliveProbes = cs.iKeepAliveProbes;
inst->iKeepAliveTime = cs.iKeepAliveTime;
inst->bEmitMsgOnClose = cs.bEmitMsgOnClose;
@@ -1750,7 +1750,7 @@ addListner(modConfData_t __attribute__((unused)) *modConf, instanceConf_t *inst)
pSrv->bSuppOctetFram = inst->bSuppOctetFram;
pSrv->bSPFramingFix = inst->bSPFramingFix;
pSrv->bKeepAlive = inst->bKeepAlive;
- pSrv->iKeepAliveIntvl = inst->iKeepAliveTime;
+ pSrv->iKeepAliveIntvl = inst->iKeepAliveIntvl;
pSrv->iKeepAliveProbes = inst->iKeepAliveProbes;
pSrv->iKeepAliveTime = inst->iKeepAliveTime;
pSrv->bEmitMsgOnClose = inst->bEmitMsgOnClose;

View File

@ -0,0 +1,28 @@
From 389484010fd95d611873e80bdbca898d9671170a Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Fri, 29 Jan 2021 09:25:09 +0100
Subject: [PATCH] lookup table bugfix: data race on lookup table reload
A data race could happen when a lookup table was reloaded. We found
this while moving to newer version of TSAN, but have no matching
report from practice. However, there is a potential for this to cause
a segfault under "bad circumstances".
trust merge open source commit:389484010fd95d611873e80bdbca898d9671170a
---
grammar/rainerscript.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 2e358353e..c86985962 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -2377,6 +2377,8 @@ doFunct_Lookup(struct cnffunc *__restrict__ const func,
return;
}
cnfexprEval(func->expr[1], &srcVal, usrptr, pWti);
+ pthread_rwlock_rdlock(&((lookup_ref_t*)func->funcdata)->rwlock);
+ pthread_rwlock_unlock(&((lookup_ref_t*)func->funcdata)->rwlock);
lookup_table = ((lookup_ref_t*)func->funcdata)->self;
if (lookup_table != NULL) {
lookup_key_type = lookup_table->key_type;
--
2.23.0

View File

@ -0,0 +1,36 @@
From 4529fa02b674f689d1cbc6925663824ea6882a15 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Mon, 15 Feb 2021 09:05:05 +0100
Subject: [PATCH] omfwd bugfix: segfault or error if port not given
If omfwd is configured via RainerScript config format and the "port"
parameter is not given, a segfault will most likely happen on
connection establishment for TCP connections. For UDP, this is
usually not the case.
Alternatively, in any case, errors may happen.
Note that the segfault will usually happen right on restart so this
was easy to detect.
We did not receive reports from practice. Instead, we found the bug
while conducting other work.
trust merge open source commit:4529fa02b674f689d1cbc6925663824ea6882a15
---
tools/omfwd.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tools/omfwd.c b/tools/omfwd.c
index 1304f43f3..5a210444e 100644
--- a/tools/omfwd.c
+++ b/tools/omfwd.c
@@ -1336,6 +1336,11 @@ CODESTARTnewActInst
}
}
+ /* check if no port is set. If so, we use the IANA-assigned port of 514 */
+ if(pData->port == NULL) {
+ CHKmalloc(pData->port = strdup("514"));
+ }
+
if(complevel != -1) {
pData->compressionLevel = complevel;
if(pData->compressionMode == COMPRESS_NEVER) {
--
2.23.0

View File

@ -0,0 +1,41 @@
From ad08ed2634fa8be1d07312966803fd156038578d Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Thu, 8 Jul 2021 14:30:50 +0200
Subject: [PATCH] openssl network driver bugfix: small memory leak
Fixes a static, non-growing memory leak which existed when parameter
"GnutTLSPriorityString" was used. This was primarily a cosmetic issue,
but caused some grief during development in regard to memory leak
detectors.
Note: yes, this is for openssl -- the parameter name is history ;-)
trust merge open source commit:ad08ed2634fa8be1d07312966803fd156038578d
---
runtime/nsd_ossl.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/runtime/nsd_ossl.c b/runtime/nsd_ossl.c
index d6188db23..8fff75338 100644
--- a/runtime/nsd_ossl.c
+++ b/runtime/nsd_ossl.c
@@ -1785,11 +1785,8 @@ finalize_it:
}
-/* Empty wrapper for GNUTLS helper function
- * TODO: implement a similar capability
- */
static rsRetVal
-SetGnutlsPriorityString(__attribute__((unused)) nsd_t *pNsd, __attribute__((unused)) uchar *gnutlsPriorityString)
+SetGnutlsPriorityString(nsd_t *const pNsd, uchar *const gnutlsPriorityString)
{
DEFiRet;
nsd_ossl_t* pThis = (nsd_ossl_t*) pNsd;
@@ -1869,6 +1866,7 @@ SetGnutlsPriorityString(__attribute__((unused)) nsd_t *pNsd, __attribute__((unus
pThis->gnutlsPriorityString);
osslLastSSLErrorMsg(0, NULL, LOG_ERR, "SetGnutlsPriorityString");
}
+ SSL_CONF_CTX_free(cctx);
}
#else
dbgprintf("gnutlsPriorityString: set to '%s'\n", gnutlsPriorityString);
--
2.23.0

View File

@ -0,0 +1,38 @@
From c6cdf972e5cf1691a6dadb50ce0402257271bc78 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Thu, 1 Jul 2021 14:24:50 +0200
Subject: [PATCH] tcp subsystem: fix cosmetic memory leak on shutdown
Memory for config parameter was not free'd on rsyslog shutdown. This had
no real consequence, but caused memleak alerts during development.
trust merge open source commit:c6cdf972e5cf1691a6dadb50ce0402257271bc78
---
plugins/imtcp/imtcp.c | 1 +
tools/omfwd.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c
index f1478dc15..63d4a0d51 100644
--- a/plugins/imtcp/imtcp.c
+++ b/plugins/imtcp/imtcp.c
@@ -707,6 +707,7 @@ BEGINfreeCnf
CODESTARTfreeCnf
free(pModConf->pszStrmDrvrName);
free(pModConf->pszStrmDrvrAuthMode);
+ free(pModConf->gnutlsPriorityString);
free(pModConf->pszStrmDrvrPermitExpiredCerts);
if(pModConf->permittedPeers != NULL) {
cnfarrayContentDestruct(pModConf->permittedPeers);
diff --git a/tools/omfwd.c b/tools/omfwd.c
index 5a210444e..1131268d4 100644
--- a/tools/omfwd.c
+++ b/tools/omfwd.c
@@ -405,6 +405,7 @@ CODESTARTfreeInstance
free(pData->pszStrmDrvr);
free(pData->pszStrmDrvrAuthMode);
free(pData->pszStrmDrvrPermitExpiredCerts);
+ free(pData->gnutlsPriorityString);
free(pData->port);
free(pData->networkNamespace);
free(pData->target);
--
2.23.0

View File

@ -0,0 +1,58 @@
From 3d23c7ac8aea5e1ac0118978d457aa7819531879 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Wed, 7 Jul 2021 13:16:28 +0200
Subject: [PATCH] tcpsrv bugfix: abort if no listener could be started
Modules (like imtcp and imdiag) which use tcpsrv could abort or
otherwise malfunction if no listener for a specific input could
be started.
Found during implementing a new feature, no report from practice.
But could very well happen.
trust merge open source commit:3d23c7ac8aea5e1ac0118978d457aa7819531879
---
plugins/imdiag/imdiag.c | 1 +
plugins/imtcp/imtcp.c | 1 +
runtime/tcpsrv.c | 5 +++++
3 files changed, 7 insertions(+)
diff --git a/plugins/imdiag/imdiag.c b/plugins/imdiag/imdiag.c
index 3e27ee4d3..f5662e894 100644
--- a/plugins/imdiag/imdiag.c
+++ b/plugins/imdiag/imdiag.c
@@ -126,6 +126,7 @@ static rsRetVal
doOpenLstnSocks(tcpsrv_t *pSrv)
{
ISOBJ_TYPE_assert(pSrv, tcpsrv);
+ dbgprintf("in imdiag doOpenLstnSocks\n");
return tcpsrv.create_tcp_socket(pSrv);
}
diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c
index 63d4a0d51..858f70f1f 100644
--- a/plugins/imtcp/imtcp.c
+++ b/plugins/imtcp/imtcp.c
@@ -229,6 +229,7 @@ static rsRetVal
doOpenLstnSocks(tcpsrv_t *pSrv)
{
ISOBJ_TYPE_assert(pSrv, tcpsrv);
+ dbgprintf("in imtcp doOpenLstnSocks\n");
return tcpsrv.create_tcp_socket(pSrv);
}
diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c
index baa8892d8..2b6bea252 100644
--- a/runtime/tcpsrv.c
+++ b/runtime/tcpsrv.c
@@ -926,6 +926,11 @@ Run(tcpsrv_t *pThis)
ISOBJ_TYPE_assert(pThis, tcpsrv);
+ if(pThis->iLstnCurr == 0) {
+ dbgprintf("tcpsrv: no listeneres at all (probably init error), terminating\n");
+ RETiRet; /* somewhat "dirty" exit to avoid issue with cancel handler */
+ }
+
/* check if we need to start the worker pool. Once it is running, all is
* well. Shutdown is done on modExit.
*/
--
2.23.0

View File

@ -0,0 +1,35 @@
From b160813f8296397fb971e4aef9faf7f903a3bb7f Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Tue, 27 Apr 2021 08:27:34 +0200
Subject: [PATCH] tcpsrv bugfix: potential sluggishnes and hang on shutdown
tcpsrv is used by multiple other modules (imtcp, imdiag, imgssapi, and,
in theory, also others - even ones we do not know about). However, the
internal synchornization did not properly take multiple tcpsrv users
in consideration.
As such, a single user could hang under some circumstances. This was
caused by improperly awaking all users from a pthread condition wait.
That in turn could lead to some sluggish behaviour and, in rare cases,
a hang at shutdown.
Note: it was highly unlikely to experience real problems with the
officially provided modules.
This patch corrects the situation.
trust merge open source commit:b160813f8296397fb971e4aef9faf7f903a3bb7f
---
runtime/tcpsrv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c
index 2f16677b0..baa8892d8 100644
--- a/runtime/tcpsrv.c
+++ b/runtime/tcpsrv.c
@@ -711,7 +711,7 @@ wrkr(void *const myself)
pthread_mutex_lock(&wrkrMut);
me->pSrv = NULL; /* indicate we are free again */
--wrkrRunning;
- pthread_cond_signal(&wrkrIdle);
+ pthread_cond_broadcast(&wrkrIdle);
}
me->enabled = 0; /* indicate we are no longer available */
pthread_mutex_unlock(&wrkrMut);
--
2.23.0

View File

@ -0,0 +1,25 @@
From 19e80e9e5c8d5cfee8a455a59d076c9ad60844e6 Mon Sep 17 00:00:00 2001
From: Rainer Gerhards <rgerhards@adiscon.com>
Date: Tue, 1 Sep 2020 14:33:41 +0200
Subject: [PATCH] testbench: simplify test ID generation a bit
---
tests/diag.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/diag.sh b/tests/diag.sh
index bc0e408ce..481be9890 100755
--- a/tests/diag.sh
+++ b/tests/diag.sh
@@ -2491,7 +2491,7 @@ case $1 in
echo "hint: was init accidentally called twice?"
exit 2
fi
- export RSYSLOG_DYNNAME="rstb_$(./test_id $(basename $0))$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 4 | head -n 1)"
+ export RSYSLOG_DYNNAME="rstb_$(./test_id $(basename $0))$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head --bytes 4)"
export RSYSLOG_OUT_LOG="${RSYSLOG_DYNNAME}.out.log"
export RSYSLOG2_OUT_LOG="${RSYSLOG_DYNNAME}_2.out.log"
export RSYSLOG_PIDBASE="${RSYSLOG_DYNNAME}:" # also used by instance 2!
--
2.23.0

View File

@ -4,7 +4,7 @@
Name: rsyslog
Version: 8.2006.0
Release: 6
Release: 7
Summary: The rocket-fast system for log processing
License: (GPLv3+ and ASL 2.0)
URL: http://www.rsyslog.com/
@ -34,6 +34,18 @@ Patch6012: backport-Do-not-create-empty-objects-when-accessing-non-exist.pa
Patch6013: backport-gnutls-Added-handshake-error-handling-into-doRetry-h.patch
Patch6014: backport-msg-segfault-in-jsonPathFindNext-when-root-is-not-an.patch
Patch6015: backport-msg-memory-leak-in-msgAddJSON-if-jsonPathFindParent-.patch
Patch6016: backport-testbench-simplify-test-ID-generation-a-bit.patch
Patch6017: backport-lookup-table-bugfix-data-race-on-lookup-table-reload.patch
Patch6018: backport-omfwd-bugfix-segfault-or-error-if-port-not-given.patch
Patch6019: backport-imjournal-flush-buffer-before-fsync.patch
Patch6020: backport-OMMONGODB-Fixes.patch
Patch6021: backport-openssl-network-driver-bugfix-small-memory-leak.patch
Patch6022: backport-tcpsrv-bugfix-abort-if-no-listener-could-be-started.patch
Patch6023: backport-tcpsrv-bugfix-potential-sluggishnes-and-hang-on-shut.patch
Patch6024: backport-tcp-subsystem-fix-cosmetic-memory-leak-on-shutdown.patch
Patch6025: backport-imptcp-bugfix-keep-alive-interval-was-incorrectly-set.patch
Patch6026: backport-imfile-bugfix-hash-char-invalidly-added-in-readmode-0.patch
Patch6027: backport-Close-file-descriptor-when-freshStartTail-is-turned-on.patch
Patch9000: rsyslog-8.24.0-ensure-parent-dir-exists-when-writting-log-file.patch
Patch9001: bugfix-rsyslog-7.4.7-imjournal-add-monotonic-timestamp.patch
@ -379,6 +391,9 @@ systemctl daemon-reload >/dev/null 2>&1
%{_mandir}/man1/rscryutil.1.gz
%changelog
* Thu Sep 16 2021 wuchaochao <wuchaochao4@huawei.com> - 8.2006.0-7
- backport patches from upstream
* Mon May 10 2021 shixuantong <shixuantong@huawei.com> - 8.2006.0-6
- Type:NA
- ID:NA