summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2010-10-15 09:58:07 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2010-10-15 09:58:07 +0200
commitddcb7d9af0ed6641303be6001270b77a2b70257f (patch)
treefd569c6496bb59d7232cf8f7a9ce17e93fb4e362
parentc104eea4e5d0aeb4c87ee23fab8532530d5fe0e9 (diff)
downloadrsyslog-ddcb7d9af0ed6641303be6001270b77a2b70257f.tar.gz
rsyslog-ddcb7d9af0ed6641303be6001270b77a2b70257f.tar.xz
rsyslog-ddcb7d9af0ed6641303be6001270b77a2b70257f.zip
bugfix: imfile utilizes 32 bit to track offset
Most importantly, this problem can not experienced on recent Fedora 64 bit OS (which has 64 bit long's!)
-rw-r--r--ChangeLog5
-rw-r--r--plugins/imfile/imfile.c5
-rw-r--r--runtime/stream.c6
3 files changed, 12 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b16824d..5b9e8fbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
---------------------------------------------------------------------------
+Version 4.4.2a [private build] (rgerhards), 2010-10-15
+- bugfix: imfile utilizes 32 bit to track offset. Most importantly,
+ this problem can not experienced on Fedora 64 bit OS (which has
+ 64 bit long's!)
+---------------------------------------------------------------------------
Version 4.4.2 [v4-stable] (rgerhards), 2009-10-09
- bugfix: invalid handling of zero-sized messages, could lead to mis-
addressing and potential memory corruption/segfault
diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
index 927cb82e..1ae6e69a 100644
--- a/plugins/imfile/imfile.c
+++ b/plugins/imfile/imfile.c
@@ -349,12 +349,15 @@ persistStrmState(fileInfo_t *pInfo)
{
DEFiRet;
strm_t *psSF = NULL; /* state file (stream) */
+ size_t lenDir;
ASSERT(pInfo != NULL);
/* TODO: create a function persistObj in obj.c? */
CHKiRet(strmConstruct(&psSF));
- CHKiRet(strmSetDir(psSF, glbl.GetWorkDir(), strlen((char*)glbl.GetWorkDir())));
+ lenDir = strlen((char*)glbl.GetWorkDir());
+ if(lenDir > 0)
+ CHKiRet(strmSetDir(psSF, glbl.GetWorkDir(), lenDir));
CHKiRet(strmSettOperationsMode(psSF, STREAMMODE_WRITE));
CHKiRet(strmSetiAddtlOpenFlags(psSF, O_TRUNC));
CHKiRet(strmSetsType(psSF, STREAMTYPE_FILE_SINGLE));
diff --git a/runtime/stream.c b/runtime/stream.c
index 1cff2da6..267e8687 100644
--- a/runtime/stream.c
+++ b/runtime/stream.c
@@ -779,7 +779,7 @@ rsRetVal strmSerialize(strm_t *pThis, strm_t *pStrm)
{
DEFiRet;
int i;
- long l;
+ int64 l;
ISOBJ_TYPE_assert(pThis, strm);
ISOBJ_TYPE_assert(pStrm, strm);
@@ -801,8 +801,8 @@ rsRetVal strmSerialize(strm_t *pThis, strm_t *pStrm)
i = pThis->tOpenMode;
objSerializeSCALAR_VAR(pStrm, tOpenMode, INT, i);
- l = (long) pThis->iCurrOffs;
- objSerializeSCALAR_VAR(pStrm, iCurrOffs, LONG, l);
+ l = pThis->iCurrOffs;
+ objSerializeSCALAR_VAR(pStrm, iCurrOffs, INT64, l);
CHKiRet(obj.EndSerialize(pStrm));