summaryrefslogtreecommitdiffstats
path: root/plugins/omoracle/omoracle.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2011-04-12 10:47:09 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2011-04-12 10:47:09 +0200
commit3dbbb21e71b53572d0e5eae106906c161309a3fe (patch)
tree54b96b77725635ad64880ea5cba4187b50c8a3e6 /plugins/omoracle/omoracle.c
parentd5def0d553961eac571e8ca5b6fab5733c851b9f (diff)
parent9348c80744b29fb5f91b5d8edd3f9070f0d0347b (diff)
downloadrsyslog-3dbbb21e71b53572d0e5eae106906c161309a3fe.tar.gz
rsyslog-3dbbb21e71b53572d0e5eae106906c161309a3fe.tar.bz2
rsyslog-3dbbb21e71b53572d0e5eae106906c161309a3fe.zip
Merge branch 'v5-beta' into v5-stable
plus bump to new v5-stable Conflicts: ChangeLog configure.ac doc/manual.html
Diffstat (limited to 'plugins/omoracle/omoracle.c')
-rw-r--r--plugins/omoracle/omoracle.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/plugins/omoracle/omoracle.c b/plugins/omoracle/omoracle.c
index 48ee1fa4..a37533ee 100644
--- a/plugins/omoracle/omoracle.c
+++ b/plugins/omoracle/omoracle.c
@@ -82,6 +82,7 @@
#include "omoracle.h"
MODULE_TYPE_OUTPUT
+MODULE_TYPE_NOKEEP
/** */
DEF_OMOD_STATIC_DATA
@@ -127,6 +128,13 @@ typedef struct _instanceData {
struct oracle_batch batch;
} instanceData;
+/* To be honest, strlcpy is faster than strncpy and makes very easy to
+ * detect if a message has been truncated. */
+#ifndef strlcpy
+#define strlcpy(dst,src,sz) snprintf((dst), (sz), "%s", (src))
+#endif
+
+
/** Database name, to be filled by the $OmoracleDB directive */
static char* db_name;
/** Database user name, to be filled by the $OmoracleDBUser
@@ -529,7 +537,7 @@ CODE_STD_FINALIZERparseSelectorAct
ENDparseSelectorAct
BEGINdoAction
- int i;
+ int i, sz;
char **params = (char**) ppString[0];
CODESTARTdoAction
@@ -540,9 +548,13 @@ CODESTARTdoAction
for (i = 0; i < pData->batch.arguments && params[i]; i++) {
dbgprintf("batch[%d][%d]=%s\n", i, pData->batch.n, params[i]);
- strncpy(pData->batch.parameters[i][pData->batch.n], params[i],
- pData->batch.param_size);
- CHKmalloc(pData->batch.parameters[i][pData->batch.n]);
+ sz = strlcpy(pData->batch.parameters[i][pData->batch.n],
+ params[i], pData->batch.param_size);
+ if (sz >= pData->batch.param_size)
+ errmsg.LogError(0, NO_ERRCODE,
+ "Possibly truncated %d column of '%s' "
+ "statement: %s", i,
+ pData->txt_statement, params[i]);
}
pData->batch.n++;