Blame SOURCES/rsyslog-8.37.0-rhbz1716867-imjournal-memleak.patch

763e28
From 920c28ff705aac74f389b4613815b14b9482e497 Mon Sep 17 00:00:00 2001
763e28
From: Jiri Vymazal <jvymazal@redhat.com>
763e28
Date: Mon, 21 Jan 2019 10:58:03 +0100
763e28
Subject: [PATCH] Added missing free() calls of received journal cursor
763e28
763e28
---
763e28
 plugins/imjournal/imjournal.c | 5 +++++
763e28
 1 file changed, 5 insertions(+)
763e28
763e28
diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c
763e28
index a85e521003..f5c2be4b6e 100644
763e28
--- a/plugins/imjournal/imjournal.c
763e28
+++ b/plugins/imjournal/imjournal.c
763e28
@@ -442,8 +437,7 @@ readjournal(void)
763e28
 
763e28
 	if (cs.bWorkAroundJournalBug) {
763e28
 		/* save journal cursor (at this point we can be sure it is valid) */
763e28
-		sd_journal_get_cursor(j, &c);
763e28
-		if (c) {
763e28
+		if (!sd_journal_get_cursor(j, &c)) {
763e28
 			free(last_cursor);
763e28
 			last_cursor = c;
763e28
 		}
763e28
@@ -470,6 +471,7 @@ persistJournalState(void)
763e28
 		}
763e28
 	} else {
763e28
 		int ret;
763e28
+		free(last_cursor);
763e28
 		if ((ret = sd_journal_get_cursor(j, &last_cursor))) {
763e28
 			LogError(-ret, RS_RET_ERR, "imjournal: sd_journal_get_cursor() failed");
763e28
 			ABORT_FINALIZE(RS_RET_ERR);
763e28
@@ -630,6 +632,7 @@ loadJournalState(void)
763e28
 						iRet = RS_RET_ERR;
763e28
 					}
763e28
 				}
763e28
+				free(tmp_cursor);
763e28
 			}
763e28
 		} else {
763e28
 			LogError(0, RS_RET_IO_ERROR, "imjournal: "
763e28
@@ -843,6 +846,7 @@ BEGINfreeCnf
763e28
 	free(cs.stateFile);
763e28
 	free(cs.usePid);
763e28
 	free(cs.dfltTag);
763e28
+	free(last_cursor);
763e28
 	statsobj.Destruct(&(statsCounter.stats));
763e28
 ENDfreeCnf
763e28
 
763e28
diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c
763e28
index f5c2be4b6e..7225fae1ab 100644
763e28
--- a/plugins/imjournal/imjournal.c
763e28
+++ b/plugins/imjournal/imjournal.c
763e28
@@ -474,6 +474,7 @@ persistJournalState(void)
763e28
 		free(last_cursor);
763e28
 		if ((ret = sd_journal_get_cursor(j, &last_cursor))) {
763e28
 			LogError(-ret, RS_RET_ERR, "imjournal: sd_journal_get_cursor() failed");
763e28
+			last_cursor = NULL;
763e28
 			ABORT_FINALIZE(RS_RET_ERR);
763e28
 		}
763e28
 	}
763e28