summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Meckelein <mmeckelein@hq.adiscon.com>2007-08-28 10:50:59 +0000
committerMichael Meckelein <mmeckelein@hq.adiscon.com>2007-08-28 10:50:59 +0000
commit4b757e8984744515b7981c606597d68be274ff9f (patch)
tree10fbf8b1899e729717b80263ecc3cb5ca1a400b7
parent54b0b3ab14799966d2845a6524fa62e9cebe5c67 (diff)
downloadrsyslog-4b757e8984744515b7981c606597d68be274ff9f.tar.gz
rsyslog-4b757e8984744515b7981c606597d68be274ff9f.tar.xz
rsyslog-4b757e8984744515b7981c606597d68be274ff9f.zip
applied patches for release 1.19.2, update documentationv1-19-2
-rw-r--r--ChangeLog9
-rw-r--r--doc/rsyslog_packages.html7
-rw-r--r--doc/status.html8
-rw-r--r--msg.c4
-rw-r--r--omfile.c93
-rw-r--r--syslogd.c2
6 files changed, 74 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f28532e..d937fc8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>&nbsp;(<a href="version_naming.html">How are versions named?</a>)</p>
diff --git a/msg.c b/msg.c
index 3ba92b10..30fe7d4e 100644
--- a/msg.c
+++ b/msg.c
@@ -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**";
}
diff --git a/omfile.c b/omfile.c
index af594024..dff4c1b3 100644
--- a/omfile.c
+++ b/omfile.c
@@ -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 ){
diff --git a/syslogd.c b/syslogd.c
index f7eeb6a9..5920988c 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -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))) {