diff options
author | Michael Meckelein <mmeckelein@hq.adiscon.com> | 2007-08-28 10:50:59 +0000 |
---|---|---|
committer | Michael Meckelein <mmeckelein@hq.adiscon.com> | 2007-08-28 10:50:59 +0000 |
commit | 4b757e8984744515b7981c606597d68be274ff9f (patch) | |
tree | 10fbf8b1899e729717b80263ecc3cb5ca1a400b7 | |
parent | 54b0b3ab14799966d2845a6524fa62e9cebe5c67 (diff) | |
download | rsyslog-4b757e8984744515b7981c606597d68be274ff9f.tar.gz rsyslog-4b757e8984744515b7981c606597d68be274ff9f.tar.bz2 rsyslog-4b757e8984744515b7981c606597d68be274ff9f.zip |
applied patches for release 1.19.2, update documentationv1-19-2
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | doc/rsyslog_packages.html | 7 | ||||
-rw-r--r-- | doc/status.html | 8 | ||||
-rw-r--r-- | msg.c | 4 | ||||
-rw-r--r-- | omfile.c | 93 | ||||
-rw-r--r-- | syslogd.c | 2 |
6 files changed, 74 insertions, 49 deletions
@@ -1,6 +1,11 @@ --------------------------------------------------------------------------- -Version 1.19.2 (rgerhards), 2007-? -- ... +Version 1.19.2 (rgerhards), 2007-08-28 +- a specifically formed message caused a segfault - Many thanks varmojfekoj + for providing a patch +- a typo and a weird condition are fixed in msg.c - Thanks again + varmojfekoj +- on file creation the file was always owned by root:root. This is fixed + now - Thanks ypsa for solving this issue --------------------------------------------------------------------------- Version 1.19.1 (rgerhards), 2007-08-22 - a bug that caused a high load when a TCP/UDP connection was closed is diff --git a/doc/rsyslog_packages.html b/doc/rsyslog_packages.html index 32d282f2..38c43c93 100644 --- a/doc/rsyslog_packages.html +++ b/doc/rsyslog_packages.html @@ -24,10 +24,17 @@ functionality. If you need that, you need to compile from the source tarball <h2>BSD</h2> <p>Give <a href="http://www.freshports.org/sysutils/rsyslog/"> http://www.freshports.org/sysutils/rsyslog/</a> a try.</p> + <h2>CentOS 4.3</h2> <a href="http://www.se-community.com/~james/rsyslog/"> http://www.se-community.com/~james/rsyslog/</a></p> <p>Maintained by<b> James Bergamin.</b></p> + +<h2>openSUSE</h2> +<a href="http://download.opensuse.org/repositories/home:/darix/"> +http://download.opensuse.org/repositories/home:/darix/</a></p> +<p>Maintained by<b> darix</b></p> + <h2>Almost any Linux</h2> <p><b>Bennet Todd</b> maintains packages that should work on almost any Linux. He keeps a current i386 tree. There is also a PPC tree, but that one is not paid diff --git a/doc/status.html b/doc/status.html index 786fcc63..3da059d7 100644 --- a/doc/status.html +++ b/doc/status.html @@ -4,11 +4,11 @@ </head> <body> <h2>rsyslog status page</h2> -<p>This page reflects the status as of 2007-08-22.</p> +<p>This page reflects the status as of 2007-08-28.</p> <h2>Current Releases</h2> -<p><b>development:</b> 1.19.1 - -<a href="http://www.rsyslog.com/Article117.phtml">change log</a> - -<a href="http://www.rsyslog.com/Downloads-index-req-getit-lid-53.phtml">download</a></p> +<p><b>development:</b> 1.19.2 - +<a href="http://www.rsyslog.com/Article119.phtml">change log</a> - +<a href="http://www.rsyslog.com/Downloads-index-req-getit-lid-54.phtml">download</a></p> <p><b>stable:</b> 1.0.5 - <a href="http://www.rsyslog.com/Article85.phtml">change log</a> - <a href="http://www.rsyslog.com/Downloads-index-req-getit-lid-39.phtml">download</a></p> <p> (<a href="version_naming.html">How are versions named?</a>)</p> @@ -1615,12 +1615,10 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, if(*(pRes + iLn - 1) == '\n') { /* we have a LF! */ /* check if we need to obtain a private copy */ - if(pbMustBeFreed == 0) { + if(*pbMustBeFreed == 0) { /* ok, original copy, need a private one */ pB = malloc((iLn + 1) * sizeof(char)); if(pB == NULL) { - if(*pbMustBeFreed == 1) - free(pRes); *pbMustBeFreed = 0; return "**OUT OF MEMORY**"; } @@ -348,6 +348,50 @@ static void dynaFileFreeCache(instanceData *pData) } +/* This is a shared code for both static and dynamic files. + */ +static void prepareFile(instanceData *pData, uchar *newFileName) +{ + if(access((char*)newFileName, F_OK) == 0) { + /* file already exists */ + pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, + pData->fCreateMode); + } else { + /* file does not exist, create it (and eventually parent directories */ + if(pData->bCreateDirs) { + /* we fist need to create parent dirs if they are missing + * We do not report any errors here ourselfs but let the code + * fall through to error handler below. + */ + if(makeFileParentDirs(newFileName, strlen((char*)newFileName), + pData->fDirCreateMode, pData->dirUID, + pData->dirGID, pData->bFailOnChown) == 0) { + pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, + pData->fCreateMode); + if(pData->fd != -1) { + /* check and set uid/gid */ + if(pData->fileUID != (uid_t)-1 || pData->fileGID != (gid_t) -1) { + /* we need to set owner/group */ + if(fchown(pData->fd, pData->fileUID, + pData->fileGID) != 0) { + if(pData->bFailOnChown) { + int eSave = errno; + close(pData->fd); + pData->fd = -1; + errno = eSave; + } + /* we will silently ignore the chown() failure + * if configured to do so. + */ + } + } + } + } + } + } +} + + /* This function handles dynamic file names. It checks if the * requested file name is already open and, if not, does everything * needed to switch to the it. @@ -425,43 +469,7 @@ static int prepareDynFile(instanceData *pData, uchar *newFileName, unsigned iMsg } /* Ok, we finally can open the file */ - if(access((char*)newFileName, F_OK) == 0) { - /* file already exists */ - pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, - pData->fCreateMode); - } else { - /* file does not exist, create it (and eventually parent directories */ - if(pData->bCreateDirs) { - /* we fist need to create parent dirs if they are missing - * We do not report any errors here ourselfs but let the code - * fall through to error handler below. - */ - if(makeFileParentDirs(newFileName, strlen((char*)newFileName), - pData->fDirCreateMode, pData->dirUID, - pData->dirGID, pData->bFailOnChown) == 0) { - pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, - pData->fCreateMode); - if(pData->fd != -1) { - /* check and set uid/gid */ - if(pData->fileUID != (uid_t)-1 || pData->fileGID != (gid_t) -1) { - /* we need to set owner/group */ - if(fchown(pData->fd, pData->fileUID, - pData->fileGID) != 0) { - if(pData->bFailOnChown) { - int eSave = errno; - close(pData->fd); - pData->fd = -1; - errno = eSave; - } - /* we will silently ignore the chown() failure - * if configured to do so. - */ - } - } - } - } - } - } + prepareFile(pData, newFileName); /* file is either open now or an error state set */ if(pData->fd == -1) { @@ -729,11 +737,18 @@ CODESTARTparseSelectorAct pData->bDynamicName = 0; pData->fCreateMode = fCreateMode; /* preserve current setting */ + pData->fDirCreateMode = fDirCreateMode; + pData->bCreateDirs = bCreateDirs; + pData->bFailOnChown = bFailOnChown; + pData->fileUID = fileUID; + pData->fileGID = fileGID; + pData->dirUID = dirUID; + pData->dirGID = dirGID; + if(pData->fileType == eTypePIPE) { pData->fd = open(pData->f_fname, O_RDWR|O_NONBLOCK); } else { - pData->fd = open(pData->f_fname, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, - pData->fCreateMode); + prepareFile(pData, pData->f_fname); } if ( pData->fd < 0 ){ @@ -2435,7 +2435,7 @@ static rsRetVal callAction(msg_t *pMsg, action_t *pAction) /* suppress duplicate lines to this file */ - if ((pAction->f_ReduceRepeated == 1) && + if ((pAction->f_ReduceRepeated == 1) && pAction->f_pMsg != NULL && (pMsg->msgFlags & MARK) == 0 && getMSGLen(pMsg) == getMSGLen(pAction->f_pMsg) && !strcmp(getMSG(pMsg), getMSG(pAction->f_pMsg)) && !strcmp(getHOSTNAME(pMsg), getHOSTNAME(pAction->f_pMsg))) { |