mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-19 04:30:43 +01:00
changed some calles to CStr class to their "safe" counterpart - they could
case program aborts if the object in question was an empty string
This commit is contained in:
parent
32a4ca3304
commit
372de71a1f
2
msg.c
2
msg.c
@ -1269,7 +1269,7 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe,
|
||||
assert(pTpe != NULL);
|
||||
pName = pTpe->data.field.pPropRepl;
|
||||
} else {
|
||||
pName = (char*) rsCStrGetSzStr(pCSPropName);
|
||||
pName = (char*) rsCStrGetSzStrNoNULL(pCSPropName);
|
||||
}
|
||||
*pbMustBeFreed = 0;
|
||||
|
||||
|
||||
@ -257,6 +257,8 @@ rsRetVal rsCStrSetSzStr(rsCStrObj *pThis, uchar *pszNew)
|
||||
* the CStr object currently holds a NULL pointer string buffer. If so,
|
||||
* "" is returned.
|
||||
* rgerhards 2005-10-19
|
||||
* WARNING: The returned pointer MUST NOT be freed, as it may be
|
||||
* obtained from that constant memory pool (in case of NULL!)
|
||||
*/
|
||||
uchar* rsCStrGetSzStrNoNULL(rsCStrObj *pThis)
|
||||
{
|
||||
@ -685,11 +687,12 @@ int rsCStrLocateInSzStr(rsCStrObj *pThis, uchar *sz)
|
||||
}
|
||||
|
||||
|
||||
#if 0 /* read comment below why this is commented out. In short: for future use! */
|
||||
/* locate the first occurence of a standard sz string inside a rsCStr object.
|
||||
* Returns the offset (0-bound) of this first occurrence. If not found, -1 is
|
||||
* returned.
|
||||
* rgerhards 2005-09-19
|
||||
* WARNING: i accidently created this function (I later noticed I didn't relly
|
||||
* WARNING: I accidently created this function (I later noticed I didn't relly
|
||||
* need it... I will not remove the function, as it probably is useful
|
||||
* some time later. However, it is not fully tested, so start with testing
|
||||
* it before you put it to first use).
|
||||
@ -731,6 +734,7 @@ int rsCStrLocateSzStr(rsCStrObj *pThis, uchar *sz)
|
||||
|
||||
return(bFound ? i : -1);
|
||||
}
|
||||
#endif /* end comment out */
|
||||
|
||||
|
||||
/*
|
||||
|
||||
26
syslogd.c
26
syslogd.c
@ -2301,22 +2301,22 @@ int shouldProcessThisMessage(selector_t *f, msg_t *pMsg)
|
||||
if(rsCStrSzStrCmp(f->pCSHostnameComp, (uchar*) getHOSTNAME(pMsg), getHOSTNAMELen(pMsg))) {
|
||||
/* not equal, so we are already done... */
|
||||
dbgprintf("hostname filter '+%s' does not match '%s'\n",
|
||||
rsCStrGetSzStr(f->pCSHostnameComp), getHOSTNAME(pMsg));
|
||||
rsCStrGetSzStrNoNULL(f->pCSHostnameComp), getHOSTNAME(pMsg));
|
||||
return 0;
|
||||
}
|
||||
} else { /* must be -hostname */
|
||||
if(!rsCStrSzStrCmp(f->pCSHostnameComp, (uchar*) getHOSTNAME(pMsg), getHOSTNAMELen(pMsg))) {
|
||||
/* not equal, so we are already done... */
|
||||
dbgprintf("hostname filter '-%s' does not match '%s'\n",
|
||||
rsCStrGetSzStr(f->pCSHostnameComp), getHOSTNAME(pMsg));
|
||||
rsCStrGetSzStrNoNULL(f->pCSHostnameComp), getHOSTNAME(pMsg));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(f->pCSProgNameComp != NULL) {
|
||||
int bInv = 0, bEqv = 0, offset = 0;
|
||||
if(*(rsCStrGetSzStr(f->pCSProgNameComp)) == '-') {
|
||||
if(*(rsCStrGetSzStr(f->pCSProgNameComp) + 1) == '-')
|
||||
if(*(rsCStrGetSzStrNoNULL(f->pCSProgNameComp)) == '-') {
|
||||
if(*(rsCStrGetSzStrNoNULL(f->pCSProgNameComp) + 1) == '-')
|
||||
offset = 1;
|
||||
else {
|
||||
bInv = 1;
|
||||
@ -2329,7 +2329,7 @@ int shouldProcessThisMessage(selector_t *f, msg_t *pMsg)
|
||||
if((!bEqv && !bInv) || (bEqv && bInv)) {
|
||||
/* not equal or inverted selection, so we are already done... */
|
||||
dbgprintf("programname filter '%s' does not match '%s'\n",
|
||||
rsCStrGetSzStr(f->pCSProgNameComp), getProgramName(pMsg));
|
||||
rsCStrGetSzStrNoNULL(f->pCSProgNameComp), getProgramName(pMsg));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -2390,13 +2390,13 @@ int shouldProcessThisMessage(selector_t *f, msg_t *pMsg)
|
||||
pszPropValDeb = MsgGetProp(pMsg, NULL,
|
||||
f->f_filterData.prop.pCSPropName, &pbMustBeFreedDeb);
|
||||
printf("Filter: check for property '%s' (value '%s') ",
|
||||
rsCStrGetSzStr(f->f_filterData.prop.pCSPropName),
|
||||
rsCStrGetSzStrNoNULL(f->f_filterData.prop.pCSPropName),
|
||||
pszPropValDeb);
|
||||
if(f->f_filterData.prop.isNegated)
|
||||
printf("NOT ");
|
||||
printf("%s '%s': %s\n",
|
||||
getFIOPName(f->f_filterData.prop.operation),
|
||||
rsCStrGetSzStr(f->f_filterData.prop.pCSCompValue),
|
||||
rsCStrGetSzStrNoNULL(f->f_filterData.prop.pCSCompValue),
|
||||
iRet ? "TRUE" : "FALSE");
|
||||
if(pbMustBeFreedDeb)
|
||||
free(pszPropValDeb);
|
||||
@ -3818,7 +3818,7 @@ static rsRetVal doModLoad(uchar **pp, __attribute__((unused)) void* pVal)
|
||||
dbgprintf("Requested to load module '%s'\n", szName);
|
||||
|
||||
strncpy((char *) szPath, ModDir, sizeof(szPath));
|
||||
strncat((char *) szPath, (char *) pModName, sizeof(szPath) - strlen(szPath) - 1);
|
||||
strncat((char *) szPath, (char *) pModName, sizeof(szPath) - strlen((char*) szPath) - 1);
|
||||
if(!(pModHdlr = dlopen((char *) szPath, RTLD_NOW))) {
|
||||
snprintf((char *) errMsg, sizeof(errMsg), "could not load module '%s', dlopen: %s\n", szPath, dlerror());
|
||||
errMsg[sizeof(errMsg)/sizeof(uchar) - 1] = '\0';
|
||||
@ -4051,12 +4051,12 @@ static void dbgPrintInitInfo(void)
|
||||
for (f = Files; f != NULL ; f = f->f_next) {
|
||||
printf("Selector %d:\n", iSelNbr++);
|
||||
if(f->pCSProgNameComp != NULL)
|
||||
printf("tag: '%s'\n", rsCStrGetSzStr(f->pCSProgNameComp));
|
||||
printf("tag: '%s'\n", rsCStrGetSzStrNoNULL(f->pCSProgNameComp));
|
||||
if(f->eHostnameCmpMode != HN_NO_COMP)
|
||||
printf("hostname: %s '%s'\n",
|
||||
f->eHostnameCmpMode == HN_COMP_MATCH ?
|
||||
"only" : "allbut",
|
||||
rsCStrGetSzStr(f->pCSHostnameComp));
|
||||
rsCStrGetSzStrNoNULL(f->pCSHostnameComp));
|
||||
if(f->f_filter_type == FILTER_PRI) {
|
||||
for (i = 0; i <= LOG_NFACILITIES; i++)
|
||||
if (f->f_filterData.f_pmask[i] == TABLE_NOPRI)
|
||||
@ -4066,13 +4066,13 @@ static void dbgPrintInitInfo(void)
|
||||
} else {
|
||||
printf("PROPERTY-BASED Filter:\n");
|
||||
printf("\tProperty.: '%s'\n",
|
||||
rsCStrGetSzStr(f->f_filterData.prop.pCSPropName));
|
||||
rsCStrGetSzStrNoNULL(f->f_filterData.prop.pCSPropName));
|
||||
printf("\tOperation: ");
|
||||
if(f->f_filterData.prop.isNegated)
|
||||
printf("NOT ");
|
||||
printf("'%s'\n", getFIOPName(f->f_filterData.prop.operation));
|
||||
printf("\tValue....: '%s'\n",
|
||||
rsCStrGetSzStr(f->f_filterData.prop.pCSCompValue));
|
||||
rsCStrGetSzStrNoNULL(f->f_filterData.prop.pCSCompValue));
|
||||
printf("\tAction...: ");
|
||||
}
|
||||
|
||||
@ -4757,7 +4757,7 @@ static rsRetVal cflineProcessPropFilter(uchar **pline, register selector_t *f)
|
||||
f->f_filterData.prop.operation = FIOP_REGEX;
|
||||
} else {
|
||||
logerrorSz("error: invalid compare operation '%s' - ignoring selector",
|
||||
(char*) rsCStrGetSzStr(pCSCompOp));
|
||||
(char*) rsCStrGetSzStrNoNULL(pCSCompOp));
|
||||
}
|
||||
rsCStrDestruct (pCSCompOp); /* no longer needed */
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user