summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-12-18 13:42:56 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2008-12-18 13:42:56 +0100
commit197d980f5b1fabef40d908f2aaf51c5be184c0e2 (patch)
treebce582eaddc95334e22634744af8482b7f272467
parentdb23c5e79a875da684c3828dbc0c5acda8b16083 (diff)
parent3c236053cf87a16dfd7449f729e477dffd6e2fae (diff)
downloadrsyslog-197d980f5b1fabef40d908f2aaf51c5be184c0e2.tar.gz
rsyslog-197d980f5b1fabef40d908f2aaf51c5be184c0e2.tar.xz
rsyslog-197d980f5b1fabef40d908f2aaf51c5be184c0e2.zip
Merge branch 'v2-stable' into debian_lenny
-rw-r--r--ChangeLog9
-rw-r--r--omfile.c42
-rw-r--r--plugins/ompgsql/ompgsql.c4
3 files changed, 33 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 4fc02068..1abdb9ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -679,7 +679,14 @@ Version 3.10.0 (rgerhards), 2008-01-07
- much cleaner code due to new objects and removal of single-threading
mode
---------------------------------------------------------------------------
-Version 2.0.6 V2-STABLE (rgerhards), 2008-??-??
+Version 2.0.7 V2-STABLE (rgerhards), 2008-??-??
+- bugfix: "$CreateDirs off" also disabled file creation
+ Thanks to William Tisater for analyzing this bug and providing a patch.
+ The actual code change is heavily based on William's patch.
+- bugfix: memory leak in ompgsql
+ Thanks to Ken for providing the patch
+---------------------------------------------------------------------------
+Version 2.0.6 V2-STABLE (rgerhards), 2008-08-07
- bugfix: memory leaks in rsyslogd, primarily in singlethread mode
Thanks to Frederico Nunez for providing the fix
- bugfix: copy&paste error lead to dangling if - this caused a very minor
diff --git a/omfile.c b/omfile.c
index 0b16cd57..24234c06 100644
--- a/omfile.c
+++ b/omfile.c
@@ -385,26 +385,30 @@ static void prepareFile(instanceData *pData, uchar *newFileName)
*/
if(makeFileParentDirs(newFileName, strlen((char*)newFileName),
pData->fDirCreateMode, pData->dirUID,
- pData->dirGID, pData->bFailOnChown) == 0) {
- pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
- pData->fCreateMode);
- if(pData->fd != -1) {
- /* check and set uid/gid */
- if(pData->fileUID != (uid_t)-1 || pData->fileGID != (gid_t) -1) {
- /* we need to set owner/group */
- if(fchown(pData->fd, pData->fileUID,
- pData->fileGID) != 0) {
- if(pData->bFailOnChown) {
- int eSave = errno;
- close(pData->fd);
- pData->fd = -1;
- errno = eSave;
- }
- /* we will silently ignore the chown() failure
- * if configured to do so.
- */
- }
+ pData->dirGID, pData->bFailOnChown) != 0) {
+ return; /* we give up */
+ }
+ }
+ /* no matter if we needed to create directories or not, we now try to create
+ * the file. -- rgerhards, 2008-12-18 (based on patch from William Tisater)
+ */
+ pData->fd = open((char*) newFileName, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
+ pData->fCreateMode);
+ if(pData->fd != -1) {
+ /* check and set uid/gid */
+ if(pData->fileUID != (uid_t)-1 || pData->fileGID != (gid_t) -1) {
+ /* we need to set owner/group */
+ if(fchown(pData->fd, pData->fileUID,
+ pData->fileGID) != 0) {
+ if(pData->bFailOnChown) {
+ int eSave = errno;
+ close(pData->fd);
+ pData->fd = -1;
+ errno = eSave;
}
+ /* we will silently ignore the chown() failure
+ * if configured to do so.
+ */
}
}
}
diff --git a/plugins/ompgsql/ompgsql.c b/plugins/ompgsql/ompgsql.c
index 1d7b2eb7..03a2b79f 100644
--- a/plugins/ompgsql/ompgsql.c
+++ b/plugins/ompgsql/ompgsql.c
@@ -167,12 +167,12 @@ rsRetVal writePgSQL(uchar *psz, instanceData *pData)
dbgprintf("writePgSQL: %s", psz);
/* try insert */
- PQexec(pData->f_hpgsql, (char*)psz);
+ PQclear(PQexec(pData->f_hpgsql, (char*)psz));
if(PQstatus(pData->f_hpgsql) != CONNECTION_OK) {
/* error occured, try to re-init connection and retry */
closePgSQL(pData); /* close the current handle */
CHKiRet(initPgSQL(pData, 0)); /* try to re-open */
- PQexec(pData->f_hpgsql, (char*)psz);
+ PQclear(PQexec(pData->f_hpgsql, (char*)psz));
if(PQstatus(pData->f_hpgsql) != CONNECTION_OK) { /* re-try insert */
/* we failed, giving up for now */
reportDBError(pData, 0);