diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2010-12-17 12:39:59 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2010-12-17 12:39:59 +0100 |
commit | 68c13f3f6a691c7f854e6fa4caff43295896dbde (patch) | |
tree | c131d2b276384339f189f29738d0a64136e15265 /plugins/omoracle/omoracle.c | |
parent | d3da845a61129c256c3e96fe144ea1dd67bac7c6 (diff) | |
parent | cc8237736d11b54a3d6089d836da7ccb6972a29c (diff) | |
download | rsyslog-68c13f3f6a691c7f854e6fa4caff43295896dbde.tar.gz rsyslog-68c13f3f6a691c7f854e6fa4caff43295896dbde.tar.bz2 rsyslog-68c13f3f6a691c7f854e6fa4caff43295896dbde.zip |
Merge branch 'v4-devel' into v5-devel
Conflicts:
ChangeLog
configure.ac
doc/imfile.html
doc/manual.html
plugins/imudp/imudp.c
runtime/msg.h
tools/syslogd.c
Diffstat (limited to 'plugins/omoracle/omoracle.c')
-rw-r--r-- | plugins/omoracle/omoracle.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/plugins/omoracle/omoracle.c b/plugins/omoracle/omoracle.c index 48ee1fa4..30b5834b 100644 --- a/plugins/omoracle/omoracle.c +++ b/plugins/omoracle/omoracle.c @@ -127,6 +127,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 +536,7 @@ CODE_STD_FINALIZERparseSelectorAct ENDparseSelectorAct BEGINdoAction - int i; + int i, sz; char **params = (char**) ppString[0]; CODESTARTdoAction @@ -540,9 +547,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++; |