components/rsyslog/patches/01-dynafile_segfault.patch
changeset 6304 e7b24f04ddd3
parent 6303 f5e952fa0abd
child 6305 f767be25126b
--- a/components/rsyslog/patches/01-dynafile_segfault.patch	Tue Jun 28 20:27:10 2016 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-# This patch addresses a few issues in the dynafile actions for omfiles.
-# Specifcally if the target file cannot be opened, rsyslogd will segfault.
-# The patch is from an upstream pull:
-# https://github.com/rsyslog/rsyslog/pull/450/commits
-# and should be removed when rsyslog is moved to or past version 8.12.0
-
---- rsyslog/runtime/srutils.c.1	Wed Nov 25 10:48:03 2015
-+++ rsyslog/runtime/srutils.c	Wed Nov 25 10:49:05 2015
-@@ -198,7 +198,6 @@
-         uchar *p;
-         uchar *pszWork;
-         size_t len;
--	int err;
- 	int iTry = 0;
- 	int bErr = 0;
-
-@@ -215,7 +214,7 @@
-                         *p = '\0';
- again:
-                         if(access((char*)pszWork, F_OK)) {
--                                if((err = mkdir((char*)pszWork, mode)) == 0) {
-+                                if(mkdir((char*)pszWork, mode) == 0) {
- 					if(uid != (uid_t) -1 || gid != (gid_t) -1) {
- 						/* we need to set owner/group */
- 						if(chown((char*)pszWork, uid, gid) != 0)
-@@ -226,7 +225,7 @@
- 							 */
- 					}
- 				} else {
--					if(err == EEXIST && iTry == 0) {
-+					if(errno == EEXIST && iTry == 0) {
- 						iTry = 1;
- 						goto again;
- 						}
---- rsyslog/tools/omfile.c.1	Wed Nov 25 10:39:15 2015
-+++ rsyslog/tools/omfile.c	Wed Nov 25 10:47:18 2015
-@@ -723,12 +723,6 @@
- 	/* we have not found an entry */
- 	STATSCOUNTER_INC(pData->ctrMiss, pData->mutCtrMiss);
-
--	/* invalidate iCurrElt as we may error-exit out of this function when the currrent
--	 * iCurrElt has been freed or otherwise become unusable. This is a precaution, and
--	 * performance-wise it may be better to do that in each of the exits. However, that
--	 * is error-prone, so I prefer to do it here. -- rgerhards, 2010-03-02
--	 */
--	pData->iCurrElt = -1;
- 	/* similarly, we need to set the current pStrm to NULL, because otherwise, if prepareFile() fails,
- 	 * we may end up using an old stream. This bug depends on how exactly prepareFile fails,
- 	 * but it could be triggered in the common case of a failed open() system call.
-@@ -779,7 +773,8 @@
- 	DBGPRINTF("Added new entry %d for file cache, file '%s'.\n", iFirstFree, newFileName);
-
- finalize_it:
--	pCache[pData->iCurrElt]->nInactive = 0;
-+	if(iRet == RS_RET_OK)
-+		pCache[pData->iCurrElt]->nInactive = 0;
- 	RETiRet;
- }
-