summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-12-03 15:45:54 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2008-12-03 15:45:54 +0100
commit4252edfebe096c805c7884e6775332705d46472f (patch)
tree43274d01fdee8e7da6da73356adf5d100933d084
parentb41bdeff56ad9d54dddcb8703560c750f04a6370 (diff)
downloadrsyslog-4252edfebe096c805c7884e6775332705d46472f.tar.gz
rsyslog-4252edfebe096c805c7884e6775332705d46472f.tar.xz
rsyslog-4252edfebe096c805c7884e6775332705d46472f.zip
bugfix: memory leaks in gtls netstream driver
-rw-r--r--ChangeLog6
-rw-r--r--runtime/netstrms.c4
-rw-r--r--runtime/nsd_gtls.c8
3 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d0c5fa5..092ad1cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,8 +6,14 @@ Version 3.20.1 [v3-stable] (rgerhards), 2008-11-??
This allows to return the string 0 if a regular expression is
not found. This is probably useful for storing numerical values into
database columns.
+- bugfix: memory leak in gtls netstream driver fixed
+ memory was lost each time a TLS session was torn down. This could
+ result in a considerable memory leak if it happened quite frequently
+ (potential system crash condition)
- doc update: documented how to specify multiple property replacer
options + link to new online regex generator tool added
+- minor bufgfix: very small memory leak in gtls netstream driver
+ around a handful of bytes (< 20) for each HUP
- improved debug output for regular expressions inside property replacer
RE's seem to be a big trouble spot and I would like to have more
information inside the debug log. So I decided to add some additional
diff --git a/runtime/netstrms.c b/runtime/netstrms.c
index 2b754ecc..6b28e7ea 100644
--- a/runtime/netstrms.c
+++ b/runtime/netstrms.c
@@ -104,6 +104,10 @@ CODESTARTobjDestruct(netstrms)
obj.ReleaseObj(__FILE__, pThis->pDrvrName+2, pThis->pDrvrName, (void*) &pThis->Drvr);
free(pThis->pDrvrName);
}
+ if(pThis->pszDrvrAuthMode != NULL) {
+ free(pThis->pszDrvrAuthMode);
+ pThis->pszDrvrAuthMode = NULL;
+ }
if(pThis->pBaseDrvrName != NULL) {
free(pThis->pBaseDrvrName);
pThis->pBaseDrvrName = NULL;
diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
index 073d333c..3a79a015 100644
--- a/runtime/nsd_gtls.c
+++ b/runtime/nsd_gtls.c
@@ -1229,7 +1229,6 @@ SetAuthMode(nsd_t *pNsd, uchar *mode)
/* TODO: clear stored IDs! */
finalize_it:
-dbgprintf("gtls auth mode %d set\n", pThis->authMode);
RETiRet;
}
@@ -1491,6 +1490,13 @@ Rcv(nsd_t *pNsd, uchar *pBuf, ssize_t *pLenBuf)
if(pThis->lenRcvBuf == 0) { /* EOS */
*pLenBuf = 0;
+ /* in this case, we also need to free the receive buffer, if we
+ * allocated one. -- rgerhards, 2008-12-03
+ */
+ if(pThis->pszRcvBuf != NULL) {
+ free(pThis->pszRcvBuf);
+ pThis->pszRcvBuf = NULL;
+ }
ABORT_FINALIZE(RS_RET_CLOSED);
}