Auto sync2gitlab import of rsyslog-8.2102.0-9.el8.src.rpm
This commit is contained in:
parent
2d53b2466f
commit
67c3d430d9
47
rsyslog-8.2102.0-rhbz1909639-statefiles-doc.patch
Normal file
47
rsyslog-8.2102.0-rhbz1909639-statefiles-doc.patch
Normal file
@ -0,0 +1,47 @@
|
||||
diff -up rsyslog-8.2102.0/doc/configuration/modules/imfile.html.state-file-leaking-doc rsyslog-8.2102.0/doc/configuration/modules/imfile.html
|
||||
--- rsyslog-8.2102.0/doc/configuration/modules/imfile.html.state-file-leaking-doc 2021-02-15 12:53:31.000000000 +0100
|
||||
+++ rsyslog-8.2102.0/doc/configuration/modules/imfile.html 2022-03-29 10:35:07.187827004 +0200
|
||||
@@ -294,6 +294,28 @@ rsyslog needs write permissions to work
|
||||
also might require SELinux definitions (or similar for other enhanced security
|
||||
systems).</p>
|
||||
</div>
|
||||
+<div class="section" id="deletestateonfilemove">
|
||||
+<h4>deleteStateOnFileMove<a class="headerlink" href="#deletestateonfilemove" title="Permalink to this headline">¶</a></h4>
|
||||
+<table border="1" class="colwidths-auto parameter-table docutils">
|
||||
+<thead valign="bottom">
|
||||
+<tr class="row-odd"><th class="head">type</th>
|
||||
+<th class="head">default</th>
|
||||
+<th class="head">mandatory</th>
|
||||
+<th class="head"><code class="docutils literal notranslate"><span class="pre">obsolete</span> <span class="pre">legacy</span></code> directive</th>
|
||||
+</tr>
|
||||
+</thead>
|
||||
+<tbody valign="top">
|
||||
+<tr class="row-even"><td>binary</td>
|
||||
+<td>off</td>
|
||||
+<td>no</td>
|
||||
+<td>none</td>
|
||||
+</tr>
|
||||
+</tbody>
|
||||
+</table>
|
||||
+<p>This parameter controls if state files are deleted if their associated main file is rotated via move. Usually, this is a good idea, because otherwise state files are not deleted when log rotation occurs.</p>
|
||||
+
|
||||
+<p>However, there is one situation where not deleting associated state file after log rotation makes sense: this is the case if a monitored file is later moved back to the same location as it was before.</p>
|
||||
+</div>
|
||||
</div>
|
||||
<div class="section" id="input-parameters">
|
||||
<h3>Input Parameters<a class="headerlink" href="#input-parameters" title="Permalink to this headline">¶</a></h3>
|
||||
@@ -1214,6 +1236,7 @@ and Others.</p>
|
||||
<li><a class="reference internal" href="#sortfiles">sortFiles</a></li>
|
||||
<li><a class="reference internal" href="#pollinginterval">PollingInterval</a></li>
|
||||
<li><a class="reference internal" href="#statefile-directory">statefile.directory</a></li>
|
||||
+<li><a class="reference internal" href="#deletestateonfilemove">deleteStateOnFileMove</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#input-parameters">Input Parameters</a><ul>
|
||||
@@ -1311,4 +1334,4 @@ and Others.</p>
|
||||
<div class="footer" role="contentinfo">
|
||||
</div>
|
||||
</body>
|
||||
-</html>
|
||||
\ No newline at end of file
|
||||
+</html>
|
162
rsyslog-8.2102.0-rhbz1909639-statefiles-fix.patch
Normal file
162
rsyslog-8.2102.0-rhbz1909639-statefiles-fix.patch
Normal file
@ -0,0 +1,162 @@
|
||||
diff -up rsyslog-8.2102.0/plugins/imfile/imfile.c.state-file-leaking rsyslog-8.2102.0/plugins/imfile/imfile.c
|
||||
--- rsyslog-8.2102.0/plugins/imfile/imfile.c.state-file-leaking 2021-01-18 11:21:14.000000000 +0100
|
||||
+++ rsyslog-8.2102.0/plugins/imfile/imfile.c 2022-03-28 12:51:03.572554843 +0200
|
||||
@@ -259,6 +259,7 @@ struct modConfData_s {
|
||||
Must be manually reset to 0 if desired. Helper for
|
||||
polling mode.
|
||||
*/
|
||||
+ sbool deleteStateOnFileMove;
|
||||
};
|
||||
static modConfData_t *loadModConf = NULL;/* modConf ptr to use for the current load process */
|
||||
static modConfData_t *runModConf = NULL;/* modConf ptr to use for run process */
|
||||
@@ -305,7 +306,8 @@ static struct cnfparamdescr modpdescr[]
|
||||
{ "sortfiles", eCmdHdlrBinary, 0 },
|
||||
{ "statefile.directory", eCmdHdlrString, 0 },
|
||||
{ "normalizepath", eCmdHdlrBinary, 0 },
|
||||
- { "mode", eCmdHdlrGetWord, 0 }
|
||||
+ { "mode", eCmdHdlrGetWord, 0 },
|
||||
+ { "deletestateonfilemove", eCmdHdlrBinary, 0 }
|
||||
};
|
||||
static struct cnfparamblk modpblk =
|
||||
{ CNFPARAMBLK_VERSION,
|
||||
@@ -545,11 +547,20 @@ static int
|
||||
in_setupWatch(act_obj_t *const act, const int is_file)
|
||||
{
|
||||
int wd = -1;
|
||||
+ int flags;
|
||||
if(runModConf->opMode != OPMODE_INOTIFY)
|
||||
goto done;
|
||||
|
||||
- wd = inotify_add_watch(ino_fd, act->name,
|
||||
- (is_file) ? IN_MODIFY|IN_DONT_FOLLOW : IN_CREATE|IN_DELETE|IN_MOVED_FROM|IN_MOVED_TO);
|
||||
+ // wd = inotify_add_watch(ino_fd, act->name,
|
||||
+ // (is_file) ? IN_MODIFY|IN_DONT_FOLLOW : IN_CREATE|IN_DELETE|IN_MOVED_FROM|IN_MOVED_TO);
|
||||
+ if(is_file)
|
||||
+ flags = IN_MODIFY|IN_DONT_FOLLOW;
|
||||
+ else if(runModConf->deleteStateOnFileMove)
|
||||
+ flags = IN_CREATE|IN_DELETE|IN_MOVED_TO;
|
||||
+ else
|
||||
+ flags = IN_CREATE|IN_DELETE|IN_MOVED_FROM|IN_MOVED_TO;
|
||||
+ wd = inotify_add_watch(ino_fd, act->name, flags);
|
||||
+
|
||||
if(wd < 0) {
|
||||
if (errno == EACCES) { /* There is high probability of selinux denial on top-level paths */
|
||||
DBGPRINTF("imfile: permission denied when adding watch for '%s'\n", act->name);
|
||||
@@ -713,7 +724,7 @@ act_obj_add(fs_edge_t *const edge, const
|
||||
char basename[MAXFNAME];
|
||||
DEFiRet;
|
||||
int fd = -1;
|
||||
-
|
||||
+
|
||||
DBGPRINTF("act_obj_add: edge %p, name '%s' (source '%s')\n", edge, name, source? source : "---");
|
||||
for(act = edge->active ; act != NULL ; act = act->next) {
|
||||
if(!strcmp(act->name, name)) {
|
||||
@@ -977,9 +988,18 @@ act_obj_destroy(act_obj_t *const act, co
|
||||
if(act == NULL)
|
||||
return;
|
||||
|
||||
- DBGPRINTF("act_obj_destroy: act %p '%s' (source '%s'), wd %d, pStrm %p, is_deleted %d, in_move %d\n",
|
||||
- act, act->name, act->source_name? act->source_name : "---", act->wd, act->pStrm, is_deleted,
|
||||
- act->in_move);
|
||||
+ // DBGPRINTF("act_obj_destroy: act %p '%s' (source '%s'), wd %d, pStrm %p, is_deleted %d, in_move %d\n",
|
||||
+ // act, act->name, act->source_name? act->source_name : "---", act->wd, act->pStrm, is_deleted,
|
||||
+ // act->in_move);
|
||||
+ if (runModConf->deleteStateOnFileMove) {
|
||||
+ DBGPRINTF("act_obj_destroy: act %p '%s' (source '%s'), wd %d, pStrm %p, is_deleted %d\n",
|
||||
+ act, act->name, act->source_name? act->source_name : "---", act->wd, act->pStrm, is_deleted);
|
||||
+ } else {
|
||||
+ DBGPRINTF("act_obj_destroy: act %p '%s' (source '%s'), wd %d, pStrm %p, is_deleted %d, in_move %d\n",
|
||||
+ act, act->name, act->source_name? act->source_name : "---", act->wd, act->pStrm,
|
||||
+ is_deleted, act->in_move);
|
||||
+ }
|
||||
+
|
||||
if(act->is_symlink && is_deleted) {
|
||||
act_obj_t *target_act;
|
||||
for(target_act = act->edge->active ; target_act != NULL ; target_act = target_act->next) {
|
||||
@@ -996,13 +1016,15 @@ act_obj_destroy(act_obj_t *const act, co
|
||||
pollFile(act); /* get any left-over data */
|
||||
if(inst->bRMStateOnDel) {
|
||||
statefn = getStateFileName(act, statefile, sizeof(statefile));
|
||||
- getFullStateFileName(statefn, "", toDel, sizeof(toDel)); // TODO: check!
|
||||
+ // getFullStateFileName(statefn, "", toDel, sizeof(toDel)); // TODO: check!
|
||||
+ getFullStateFileName(statefn, act->file_id, toDel, sizeof(toDel)); // TODO: check!
|
||||
statefn = toDel;
|
||||
}
|
||||
persistStrmState(act);
|
||||
strm.Destruct(&act->pStrm);
|
||||
/* we delete state file after destruct in case strm obj initiated a write */
|
||||
- if(is_deleted && !act->in_move && inst->bRMStateOnDel) {
|
||||
+ // if(is_deleted && !act->in_move && inst->bRMStateOnDel) {
|
||||
+ if(is_deleted && inst->bRMStateOnDel && (runModConf->deleteStateOnFileMove || !act->in_move)) {
|
||||
DBGPRINTF("act_obj_destroy: deleting state file %s\n", statefn);
|
||||
unlink((char*)statefn);
|
||||
}
|
||||
@@ -1012,6 +1034,7 @@ act_obj_destroy(act_obj_t *const act, co
|
||||
}
|
||||
#ifdef HAVE_INOTIFY_INIT
|
||||
if(act->wd != -1) {
|
||||
+ inotify_rm_watch(ino_fd, act->wd);
|
||||
wdmapDel(act->wd);
|
||||
}
|
||||
#endif
|
||||
@@ -2026,6 +2049,7 @@ CODESTARTbeginCnfLoad
|
||||
loadModConf->timeoutGranularity = 1000; /* default: 1 second */
|
||||
loadModConf->haveReadTimeouts = 0; /* default: no timeout */
|
||||
loadModConf->normalizePath = 1;
|
||||
+ loadModConf->deleteStateOnFileMove = 0;
|
||||
loadModConf->sortFiles = GLOB_NOSORT;
|
||||
loadModConf->stateFileDirectory = NULL;
|
||||
loadModConf->conf_tree = calloc(sizeof(fs_node_t), 1);
|
||||
@@ -2085,6 +2109,8 @@ CODESTARTsetModCnf
|
||||
loadModConf->stateFileDirectory = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL);
|
||||
} else if(!strcmp(modpblk.descr[i].name, "normalizepath")) {
|
||||
loadModConf->normalizePath = (sbool) pvals[i].val.d.n;
|
||||
+ } else if(!strcmp(modpblk.descr[i].name, "deletestateonfilemove")) {
|
||||
+ loadModConf->deleteStateOnFileMove = (sbool) pvals[i].val.d.n;
|
||||
} else if(!strcmp(modpblk.descr[i].name, "mode")) {
|
||||
if(!es_strconstcmp(pvals[i].val.d.estr, "polling"))
|
||||
loadModConf->opMode = OPMODE_POLLING;
|
||||
@@ -2388,16 +2414,35 @@ in_processEvent(struct inotify_event *ev
|
||||
DBGPRINTF("in_processEvent process Event %x is_file %d, act->name '%s'\n",
|
||||
ev->mask, etry->act->edge->is_file, etry->act->name);
|
||||
|
||||
- if((ev->mask & IN_MOVED_FROM)) {
|
||||
- flag_in_move(etry->act->edge->node->edges, ev->name);
|
||||
- }
|
||||
- if(ev->mask & (IN_MOVED_FROM | IN_MOVED_TO)) {
|
||||
- fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
- } else if(etry->act->edge->is_file && !(etry->act->is_symlink)) {
|
||||
- in_handleFileEvent(ev, etry); // esentially poll_file()!
|
||||
+ // if((ev->mask & IN_MOVED_FROM)) {
|
||||
+ // flag_in_move(etry->act->edge->node->edges, ev->name);
|
||||
+ // }
|
||||
+ // if(ev->mask & (IN_MOVED_FROM | IN_MOVED_TO)) {
|
||||
+ // fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ // } else if(etry->act->edge->is_file && !(etry->act->is_symlink)) {
|
||||
+ // in_handleFileEvent(ev, etry); // esentially poll_file()!
|
||||
+ // } else {
|
||||
+ // fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ // }
|
||||
+ if(!runModConf->deleteStateOnFileMove) {
|
||||
+ if((ev->mask & IN_MOVED_FROM)) {
|
||||
+ flag_in_move(etry->act->edge->node->edges, ev->name);
|
||||
+ }
|
||||
+ if(ev->mask & (IN_MOVED_FROM | IN_MOVED_TO)) {
|
||||
+ fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ } else if(etry->act->edge->is_file && !(etry->act->is_symlink)) {
|
||||
+ in_handleFileEvent(ev, etry); // esentially poll_file()!
|
||||
+ } else {
|
||||
+ fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ }
|
||||
} else {
|
||||
- fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ if((ev->mask & IN_MODIFY) && etry->act->edge->is_file && !(etry->act->is_symlink)) {
|
||||
+ in_handleFileEvent(ev, etry); // esentially poll_file()!
|
||||
+ } else {
|
||||
+ fs_node_walk(etry->act->edge->node, poll_tree);
|
||||
+ }
|
||||
}
|
||||
+
|
||||
done: return;
|
||||
}
|
||||
|
14
rsyslog.spec
14
rsyslog.spec
@ -6,7 +6,7 @@
|
||||
Summary: Enhanced system logging and kernel message trapping daemon
|
||||
Name: rsyslog
|
||||
Version: 8.2102.0
|
||||
Release: 8%{?dist}
|
||||
Release: 9%{?dist}
|
||||
License: (GPLv3+ and ASL 2.0)
|
||||
Group: System Environment/Daemons
|
||||
ExcludeArch: i686
|
||||
@ -56,6 +56,8 @@ Patch4: rsyslog-8.2102.0-rhbz1984616-imuxsock-ratelimit.patch
|
||||
Patch5: rsyslog-8.2102.0-rhbz1984489-remove-abort-on-id-resolution-fail.patch
|
||||
Patch6: rsyslog-8.2102.0-rhbz1832368-prioritize-SAN.patch
|
||||
Patch7: rsyslog-8.2102.0-rhbz1962318-errfile-maxsize.patch
|
||||
Patch8: rsyslog-8.2102.0-rhbz1909639-statefiles-fix.patch
|
||||
Patch9: rsyslog-8.2102.0-rhbz1909639-statefiles-doc.patch
|
||||
|
||||
%package crypto
|
||||
Summary: Encryption support
|
||||
@ -288,6 +290,8 @@ mv build doc
|
||||
%patch5 -p1 -b .abort-on-id-resolution-fail
|
||||
%patch6 -p1 -b .prioritizeSAN
|
||||
%patch7 -p1 -b .errfile-maxsize
|
||||
%patch8 -p1 -b .state-file-leaking
|
||||
%patch9 -p1 -b .state-file-leaking-doc
|
||||
|
||||
%build
|
||||
%ifarch sparc64
|
||||
@ -532,7 +536,13 @@ done
|
||||
%{_libdir}/rsyslog/omudpspoof.so
|
||||
|
||||
%changelog
|
||||
* Fri Mar 4 2022 Sergio Arroutbi <sarroutb@redhat.com> - 8.2102.0-8
|
||||
* Mon Mar 28 2022 Attila Lakatos <alakatos@redhat.com> - 8.2102.0-9
|
||||
- Add deleteStateOnFileMove imfile module option
|
||||
resolves: rhbz#1909639
|
||||
- Add inotify_rm_watch() inotify API call when object needs to be destroyed
|
||||
resolves: rhbz#2052403
|
||||
|
||||
* Fri Mar 04 2022 Sergio Arroutbi <sarroutb@redhat.com> - 8.2102.0-8
|
||||
- Include maxsize for error files
|
||||
resolves: rhbz#1962318
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user