summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2005-10-10 06:58:35 +0000
committerRainer Gerhards <rgerhards@adiscon.com>2005-10-10 06:58:35 +0000
commit41cb6dd1b967debb984761a69921e2adbadeb1ed (patch)
tree84d5c8729056eaa1c8892c4a1797e54a9439cda9
parent3aea4c6fcc6a4fc2e15a687b8aff35ae3d6b96d6 (diff)
downloadrsyslog-41cb6dd1b967debb984761a69921e2adbadeb1ed.tar.gz
rsyslog-41cb6dd1b967debb984761a69921e2adbadeb1ed.tar.xz
rsyslog-41cb6dd1b967debb984761a69921e2adbadeb1ed.zip
additional hardening for file gt 2gb; fixed a bug in unix domain socket
processing
-rw-r--r--NEWS8
-rw-r--r--doc/status.html4
-rw-r--r--syslogd.c16
-rw-r--r--version.h2
4 files changed, 20 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index 3d850b7b..1e75f38e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,12 @@
---------------------------------------------------------------------------
+Version 1.0.3 (RGer), 2005-10-10
+- added an additional guard to prevent rsyslogd from aborting when the
+ 2gb file size limit is hit. While a user can configure rsyslogd to
+ handle such situations, it would abort if that was not done AND large
+ file support was not enabled (ok, this is hopefully an unlikely scenario)
+- fixed a bug that caused additional Unix domain sockets to be incorrectly
+ processed - could lead to message loss in extreme cases
+---------------------------------------------------------------------------
Version 1.0.2 (RGer), 2005-10-05
- fixed an issue with MySQL error reporting. When an error occured,
the MySQL driver went into an endless loop (at least in most cases).
diff --git a/doc/status.html b/doc/status.html
index 58d32f4f..f44bab8a 100644
--- a/doc/status.html
+++ b/doc/status.html
@@ -4,9 +4,9 @@
</head>
<body>
<h2>rsyslog status page</h2>
-<p>This page reflects the status as of 2005-10-24.</p>
+<p>This page reflects the status as of 2005-10-10.</p>
<h2>Current Release</h2>
-<p>1.0.2 - <a href="http://www.rsyslog.com/Article40.phtml">change log</a> -
+<p>1.0.3 - <a href="http://www.rsyslog.com/Article40.phtml">change log</a> -
<a href="http://www.rsyslog.com/Downloads-index-req-getit-lid-20.phtml">download</a>
(<a href="version_naming.html">How are versions named?</a>)</p>
<h2>Platforms</h2>
diff --git a/syslogd.c b/syslogd.c
index 27bee376..02fb021e 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -2403,6 +2403,7 @@ int main(argc, argv)
(void) signal(SIGALRM, domark);
(void) signal(SIGUSR1, Debug ? debug_switch : SIG_IGN);
(void) signal(SIGPIPE, SIG_IGN);
+ (void) signal(SIGXFSZ, SIG_IGN); /* do not abort if 2gig file limit is hit */
(void) alarm(TIMERINTVL);
/* Create a partial message table for all file descriptors. */
@@ -2604,19 +2605,20 @@ int main(argc, argv)
#ifdef SYSLOG_UNIXAF
for (i = 0; i < nfunix; i++) {
if ((fd = funix[i]) != -1 && FD_ISSET(fd, &readfds)) {
+ int iRcvd;
memset(line, '\0', sizeof(line));
- i = recv(fd, line, MAXLINE - 2, 0);
+ iRcvd = recv(fd, line, MAXLINE - 2, 0);
dprintf("Message from UNIX socket: #%d\n", fd);
- if (i > 0) {
- line[i] = line[i+1] = '\0';
- printchopped(LocalHostName, line, i + 2, fd, SOURCE_UNIXAF);
- } else if (i < 0 && errno != EINTR) {
+ if (iRcvd > 0) {
+ line[iRcvd] = line[iRcvd+1] = '\0';
+ printchopped(LocalHostName, line, iRcvd + 2, fd, SOURCE_UNIXAF);
+ } else if (iRcvd < 0 && errno != EINTR) {
dprintf("UNIX socket error: %d = %s.\n", \
errno, strerror(errno));
logerror("recvfrom UNIX");
- }
}
- }
+ }
+ }
#endif
#ifdef SYSLOG_INET
diff --git a/version.h b/version.h
index bf742768..bb6dd539 100644
--- a/version.h
+++ b/version.h
@@ -1,2 +1,2 @@
#define VERSION "1.0"
-#define PATCHLEVEL "2"
+#define PATCHLEVEL "3"