diff options
author | Michael Meckelein <mmeckelein@hq.adiscon.com> | 2007-08-31 12:47:35 +0000 |
---|---|---|
committer | Michael Meckelein <mmeckelein@hq.adiscon.com> | 2007-08-31 12:47:35 +0000 |
commit | 262111689f19e362100236a37bcd3c7eed6fd769 (patch) | |
tree | 01f0b34b500c858c0c45531a622bbd6368bf565e /msg.c | |
parent | a24b9f9127f48c7ff7511288ac93f613198892a6 (diff) | |
download | rsyslog-262111689f19e362100236a37bcd3c7eed6fd769.tar.gz rsyslog-262111689f19e362100236a37bcd3c7eed6fd769.tar.bz2 rsyslog-262111689f19e362100236a37bcd3c7eed6fd769.zip |
patches and docu update for 1.19.3v1-19-3
Diffstat (limited to 'msg.c')
-rw-r--r-- | msg.c | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -1606,6 +1606,45 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, } } + /* Take care of spurious characters to make the property safe + * for a path definition + */ + if(pTpe->data.field.options.bSecPathDrop || pTpe->data.field.options.bSecPathReplace) { + if(pTpe->data.field.options.bSecPathDrop) { + char *pSrc = pRes; + char *pDst = pRes; + while(*pSrc) { + if(*pSrc != '/') + *pDst++ = *pSrc; + pSrc++; + } + *pDst = '\0'; + } else { + char *pB = pRes; + while(*pB) { + if(*pB == '/') + *pB = '_'; + pB++; + } + } + + if(*pRes == '.' && (*(pRes + 1) == '\0' || (*(pRes + 1) == '.' && *(pRes + 2) == '\0'))) + *pRes = '_'; + + if(*pRes == '\0') { + if(*pbMustBeFreed == 1) + free(pRes); + pRes = malloc(2); + if(pRes == NULL) { + *pbMustBeFreed = 0; + return "**OUT OF MEMORY ALLOCATING pBuf**"; + } + *pRes = '_'; + *(pRes + 1) = '\0'; + *pbMustBeFreed = 1; + } + } + /* Now drop last LF if present (pls note that this must not be done * if bEscapeCC was set! */ |