summaryrefslogtreecommitdiffstats
path: root/plugins/imkmsg/kmsg.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-04-17 11:10:51 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-04-17 11:10:51 +0200
commit3d914eb90cd7aed1342a01c5993f8c2de4cd1283 (patch)
tree46046d3136b5ca4fd864813b36b62d330a9c9559 /plugins/imkmsg/kmsg.c
parent39b35a32b4a45ccb6506e15b02780c30ca8c3973 (diff)
parent9d59080b4a43ca6d19bece357cb1132374a2116a (diff)
downloadrsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.tar.gz
rsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.tar.bz2
rsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.zip
Merge branch 'master' into master-imjournal
Diffstat (limited to 'plugins/imkmsg/kmsg.c')
-rw-r--r--plugins/imkmsg/kmsg.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/plugins/imkmsg/kmsg.c b/plugins/imkmsg/kmsg.c
index b771d68a..f1815f25 100644
--- a/plugins/imkmsg/kmsg.c
+++ b/plugins/imkmsg/kmsg.c
@@ -89,6 +89,10 @@ submitSyslog(uchar *buf)
for (; isdigit(*buf); buf++) {
timestamp += (timestamp * 10) + (*buf - '0');
}
+
+ while (*buf != ';') {
+ buf++; /* skip everything till the first ; */
+ }
buf++; /* skip ; */
/* get message */
@@ -103,7 +107,7 @@ submitSyslog(uchar *buf)
if (*buf != '\0') /* message has appended properties, skip \n */
buf++;
- while (strlen((char *)buf)) {
+ while (*buf) {
/* get name of the property */
buf++; /* skip ' ' */
offs = 0;
@@ -174,18 +178,22 @@ static void
readkmsg(void)
{
int i;
- uchar pRcv[8096+1];
+ uchar pRcv[8192+1];
char errmsg[2048];
for (;;) {
dbgprintf("imkmsg waiting for kernel log line\n");
/* every read() from the opened device node receives one record of the printk buffer */
- i = read(fklog, pRcv, 8096);
+ i = read(fklog, pRcv, 8192);
if (i > 0) {
/* successful read of message of nonzero length */
pRcv[i] = '\0';
+ } else if (i == -EPIPE) {
+ imkmsgLogIntMsg(LOG_WARNING,
+ "imkmsg: some messages in circular buffer got overwritten");
+ continue;
} else {
/* something went wrong - error or zero length message */
if (i < 0 && errno != EINTR && errno != EAGAIN) {