Note: there are also official repositories on github for most of the repositories present here. Please consider contributing to rsyslog.
For more information read Where to find the rsyslog source code, which applies to rsyslog-related projects (like librelp) as well.

backporting abort condition fix from 5.7.7
authorRainer Gerhards <rgerhards@adiscon.com>
Wed, 2 Mar 2011 13:10:08 +0000 (14:10 +0100)
committerRainer Gerhards <rgerhards@adiscon.com>
Wed, 2 Mar 2011 13:10:08 +0000 (14:10 +0100)
ChangeLog
runtime/msg.c

index 4e58bd0..1622a0b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 ---------------------------------------------------------------------------
-Version 5.6.4  [V5-STABLE] (rgerhards), 2011-02-??
+Version 5.6.4  [V5-STABLE] (rgerhards), 2011-03-03
+- bugfix: potential abort condition when $RepeatedMsgReduction set to on
+  as well as potentially in a number of other places where MsgDup() was
+  used. This only happened when the imudp input module was used and it
+  depended on name resolution not yet had taken place. In other words,
+  this was a strange problem that could lead to hard to diagnose 
+  instability. So if you experience instability, chances are good that
+  this fix will help.
 - bugfix: fixed a memory leak and potential abort condition
   this could happen if multiple rulesets were used and some output batches
   contained messages belonging to more than one ruleset.
index e8be79d..409515a 100644 (file)
@@ -922,13 +922,14 @@ msg_t* MsgDup(msg_t* pOld)
        pNew->iLenMSG = pOld->iLenMSG;
        pNew->iLenTAG = pOld->iLenTAG;
        pNew->iLenHOSTNAME = pOld->iLenHOSTNAME;
-       if((pOld->msgFlags & NEEDS_DNSRESOL) == 1) {
+       if((pOld->msgFlags & NEEDS_DNSRESOL)) {
                        localRet = msgSetFromSockinfo(pNew, pOld->rcvFrom.pfrominet);
                        if(localRet != RS_RET_OK) {
                                /* if something fails, we accept loss of this property, it is
                                 * better than losing the whole message.
                                 */
                                pNew->msgFlags &= ~NEEDS_DNSRESOL;
+                               pNew->rcvFrom.pRcvFrom = NULL; /* make sure no dangling values */
                        }
        } else {
                if(pOld->rcvFrom.pRcvFrom != NULL) {