Merge branch 'v5-stable' into beta

This commit is contained in:
Rainer Gerhards 2012-08-20 12:37:39 +02:00
commit 4ce8111ea6
3 changed files with 61 additions and 3 deletions

View File

@ -709,6 +709,11 @@ Version 5.8.13 [V5-stable] 2012-06-??
- bugfix: randomized IP option header in omudpspoof caused problems
closes: http://bugzilla.adiscon.com/show_bug.cgi?id=327
Thanks to Rick Brown for helping to test out the patch.
- bugfix: potential abort if output plugin logged message during shutdown
note that none of the rsyslog-provided plugins does this
Thanks to bodik and Rohit Prasad for alerting us on this bug and
analyzing it.
fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=347
---------------------------------------------------------------------------
Version 5.8.12 [V5-stable] 2012-06-06
- add small delay (50ms) after sending shutdown message

View File

@ -610,6 +610,8 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
number_t i;
number_t iLen;
uchar c;
int step = 0; /* which step was successful? */
int64 offs;
assert(pProp != NULL);
@ -630,13 +632,16 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
NEXTC;
}
CHKiRet(cstrFinalize(pProp->pcsName));
step = 1;
/* property type */
CHKiRet(objDeserializeNumber(&i, pStrm));
pProp->varType = i;
step = 2;
/* size (needed for strings) */
CHKiRet(objDeserializeNumber(&iLen, pStrm));
step = 3;
/* we now need to deserialize the value */
switch(pProp->varType) {
@ -653,12 +658,44 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
dbgprintf("invalid VARTYPE %d\n", pProp->varType);
break;
}
step = 4;
/* we should now be at the end of the line. So the next char must be \n */
NEXTC;
if(c != '\n') ABORT_FINALIZE(RS_RET_INVALID_PROPFRAME);
finalize_it:
if(Debug && iRet != RS_RET_OK) {
strm.GetCurrOffset(pStrm, &offs);
dbgprintf("error %d deserializing property name, offset %lld, step %d\n",
iRet, offs, step);
if(step >= 1) {
dbgprintf("error property name: '%s'\n", rsCStrGetSzStrNoNULL(pProp->pcsName));
}
if(step >= 2) {
dbgprintf("error var type: '%d'\n", pProp->varType);
}
if(step >= 3) {
dbgprintf("error len: '%d'\n", (int) iLen);
}
if(step >= 4) {
switch(pProp->varType) {
case VARTYPE_STR:
dbgprintf("error data string: '%s'\n",
rsCStrGetSzStrNoNULL(pProp->val.pStr));
break;
case VARTYPE_NUMBER:
dbgprintf("error number: %d\n", (int) pProp->val.num);
break;
case VARTYPE_SYSLOGTIME:
dbgprintf("syslog time was successfully parsed (but "
"is not displayed\n");
break;
default:
break;
}
}
}
RETiRet;
}

View File

@ -630,11 +630,19 @@ submitMsg(msg_t *pMsg)
ISOBJ_TYPE_assert(pMsg, msg);
pRuleset = MsgGetRuleset(pMsg);
pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset);
/* if a plugin logs a message during shutdown, the queue may no longer exist */
if(pQueue == NULL) {
DBGPRINTF("submitMsg() could not submit message - "
"queue does (no longer?) exist - ignored\n");
FINALIZE;
}
MsgPrepareEnqueue(pMsg);
qqueueEnqObj(pQueue, pMsg->flowCtlType, (void*) pMsg);
finalize_it:
RETiRet;
}
@ -655,12 +663,20 @@ multiSubmitMsg(multi_submit_t *pMultiSub)
if(pMultiSub->nElem == 0)
FINALIZE;
pRuleset = MsgGetRuleset(pMultiSub->ppMsgs[0]);
pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset);
/* if a plugin logs a message during shutdown, the queue may no longer exist */
if(pQueue == NULL) {
DBGPRINTF("multiSubmitMsg() could not submit message - "
"queue does (no longer?) exist - ignored\n");
FINALIZE;
}
for(i = 0 ; i < pMultiSub->nElem ; ++i) {
MsgPrepareEnqueue(pMultiSub->ppMsgs[i]);
}
pRuleset = MsgGetRuleset(pMultiSub->ppMsgs[0]);
pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset);
iRet = pQueue->MultiEnq(pQueue, pMultiSub);
pMultiSub->nElem = 0;