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) {