summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2011-06-14 14:22:37 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2011-06-14 14:22:37 +0200
commitf4c5f0a4cc2b06865e048d7c7c716ca7ca2a3b06 (patch)
tree923b0bdf2e87fa7e28eaf735ed037f56289730cb
parent49d7b4cd666429ece524ea4b3b2bd4041b5662e5 (diff)
parent6afbb39ea197623688e36b74f81f5ec45d0b15ff (diff)
downloadrsyslog-f4c5f0a4cc2b06865e048d7c7c716ca7ca2a3b06.tar.gz
rsyslog-f4c5f0a4cc2b06865e048d7c7c716ca7ca2a3b06.tar.xz
rsyslog-f4c5f0a4cc2b06865e048d7c7c716ca7ca2a3b06.zip
Merge branch 'v4-devel' into v5-devel
Conflicts: tcpsrv.c
-rw-r--r--ChangeLog3
-rw-r--r--runtime/nsd_gtls.c3
-rw-r--r--tcpsrv.c4
3 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 855534d8..58a0cdab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -866,6 +866,9 @@ Version 4.7.0 [v4-devel] (rgerhards), 2010-04-14
- imported changes from 4.5.6 and below
---------------------------------------------------------------------------
Version 4.6.6 [v4-stable] (rgerhards), 2010-11-??
+- bugfix: memory leak in imtcp & subsystems under some circumstances
+ This leak is tied to error conditions which lead to incorrect cleanup
+ of some data structures. [backport from v6, limited testing under v4]
- bugfix: invalid processing in QUEUE_FULL condition
If the the multi-submit interface was used and a QUEUE_FULL condition
occured, the failed message was properly destructed. However, the
diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
index 152dc8de..ca4b2928 100644
--- a/runtime/nsd_gtls.c
+++ b/runtime/nsd_gtls.c
@@ -1121,6 +1121,7 @@ gtlsEndSess(nsd_gtls_t *pThis)
}
}
gnutls_deinit(pThis->sess);
+ pThis->bHaveSess = 0;
}
RETiRet;
}
@@ -1174,6 +1175,8 @@ CODESTARTobjDestruct(nsd_gtls)
gnutls_x509_crt_deinit(pThis->ourCert);
if(pThis->bOurKeyIsInit)
gnutls_x509_privkey_deinit(pThis->ourKey);
+ if(pThis->bHaveSess)
+ gnutls_deinit(pThis->sess);
ENDobjDestruct(nsd_gtls)
diff --git a/tcpsrv.c b/tcpsrv.c
index 4658555f..351b4f76 100644
--- a/tcpsrv.c
+++ b/tcpsrv.c
@@ -622,7 +622,9 @@ finalize_it: /* this is a very special case - this time only we do not exit the
* crashed, which made sense (the rest of the engine was not prepared for
* that) -- rgerhards, 2008-05-19
*/
- /*EMPTY*/;
+ if(pSel != NULL) { /* cleanup missing? happens during err exit! */
+ nssel.Destruct(&pSel);
+ }
}
/* note that this point is usually not reached */