mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-17 22:10:41 +01:00
bugfix: pipes not opened in full priv mode when privs are to be dropped
This commit is contained in:
parent
de77494415
commit
415b95cf45
@ -6,6 +6,7 @@ Version 5.9.0 [V5-DEVEL] (rgerhards), 2011-03-??
|
||||
user and/or group. Note that it was long said that this "functionality"
|
||||
would break once we go for serious privilege drop code, so hopefully
|
||||
nobody still depends on it (and, if so, they lost...).
|
||||
- bugfix: pipes not opened in full priv mode when privs are to be dropped
|
||||
- this begins a new devel branch for v5
|
||||
- added support for user-level PRI provided via systemd
|
||||
- added new config directive $InputTCPFlowControl to select if tcp
|
||||
|
||||
@ -72,6 +72,7 @@ DEFobjCurrIf(errmsg)
|
||||
typedef struct _instanceData {
|
||||
uchar f_fname[MAXFNAME];/* pipe or template name (display only) */
|
||||
short fd; /* pipe descriptor for (current) pipe */
|
||||
sbool bHadError; /* did we already have/report an error on this pipe? */
|
||||
} instanceData;
|
||||
|
||||
|
||||
@ -101,6 +102,17 @@ preparePipe(instanceData *pData)
|
||||
{
|
||||
DEFiRet;
|
||||
pData->fd = open((char*) pData->f_fname, O_RDWR|O_NONBLOCK|O_CLOEXEC);
|
||||
if(pData->fd < 0 ) {
|
||||
pData->fd = -1;
|
||||
if(!pData->bHadError) {
|
||||
char errStr[1024];
|
||||
rs_strerror_r(errno, errStr, sizeof(errStr));
|
||||
errmsg.LogError(0, RS_RET_NO_FILE_ACCESS, "Could no open output pipe '%s': %s",
|
||||
pData->f_fname, errStr);
|
||||
pData->bHadError = 1;
|
||||
}
|
||||
DBGPRINTF("Error opening log pipe: %s\n", pData->f_fname);
|
||||
}
|
||||
RETiRet;
|
||||
}
|
||||
|
||||
@ -150,6 +162,7 @@ finalize_it:
|
||||
BEGINcreateInstance
|
||||
CODESTARTcreateInstance
|
||||
pData->fd = -1;
|
||||
pData->bHadError = 0;
|
||||
ENDcreateInstance
|
||||
|
||||
|
||||
@ -204,11 +217,6 @@ CODESTARTparseSelectorAct
|
||||
*/
|
||||
preparePipe(pData);
|
||||
|
||||
if(pData->fd < 0 ) {
|
||||
pData->fd = -1;
|
||||
DBGPRINTF("Error opening log pipe: %s\n", pData->f_fname);
|
||||
errmsg.LogError(0, RS_RET_NO_FILE_ACCESS, "Could no open output pipe '%s'", pData->f_fname);
|
||||
}
|
||||
CODE_STD_FINALIZERparseSelectorAct
|
||||
ENDparseSelectorAct
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user