summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-10-09 16:02:30 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-10-09 16:02:30 +0200
commit09dd5c92bb343b7dc9c93d3eff57cc004d57adc7 (patch)
treed9af6f270064add00433931c8b5e9f584197e306
parent4bc99a5ead6892393033d22d6ce46052aca36155 (diff)
downloadrsyslog-09dd5c92bb343b7dc9c93d3eff57cc004d57adc7.tar.gz
rsyslog-09dd5c92bb343b7dc9c93d3eff57cc004d57adc7.tar.xz
rsyslog-09dd5c92bb343b7dc9c93d3eff57cc004d57adc7.zip
fixed memory leaks
- a big one in syslogd.c, which caused messages not to be freed when compiled for single-threading mode - a small one in the file output handler, outchannels, when a size-reached action was to be executed
-rw-r--r--omfile.c2
-rw-r--r--syslogd.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/omfile.c b/omfile.c
index db2ec3eb..6fcf45ba 100644
--- a/omfile.c
+++ b/omfile.c
@@ -287,6 +287,8 @@ int resolveFileSizeLimit(instanceData *pData)
execProg(pCmd, 1, pParams);
+ free(pCmd);
+
pData->fd = open((char*) pData->f_fname, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
pData->fCreateMode);
diff --git a/syslogd.c b/syslogd.c
index afcc3b92..98e7d7ba 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -2784,7 +2784,6 @@ static void *singleWorker()
* rgerhards, 2005-10-24
*/
#ifndef USE_PTHREADS
-#define enqueueMsg(x) processMsg((x))
#else
static void enqueueMsg(msg_t *pMsg)
{
@@ -3299,7 +3298,12 @@ logmsg(int pri, msg_t *pMsg, int flags)
*/
pMsg->msgFlags = flags;
+#ifndef USE_PTHREADS
+ processMsg(pMsg);
+ MsgDestruct(pMsg);
+#else /* ifdef USE_PTHREADS */
enqueueMsg(pMsg);
+#endif
}