[BusyBox-cvs] busybox/sysklogd syslogd.c,1.93,1.94

Erik Andersen andersen at busybox.net
Fri May 16 08:34:42 UTC 2003


Update of /var/cvs/busybox/sysklogd
In directory winder:/tmp/cvs-serv3810

Modified Files:
	syslogd.c 
Log Message:
Apply patch from Georg Magschok to fix syslog behavior so that the
'>' charactor can be logged, per rfc3164.

Also, a small patch from me to fix it so we use MAXLINE when allocating the
buffer, which is consistant with use everywhere else.  This is needed since
uClibc defines BUFSIZE as 255, causing lines to be truncated at 255...


Index: syslogd.c
===================================================================
RCS file: /var/cvs/busybox/sysklogd/syslogd.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -d -r1.93 -r1.94
--- syslogd.c	19 Mar 2003 09:12:57 -0000	1.93
+++ syslogd.c	16 May 2003 08:34:38 -0000	1.94
@@ -426,19 +426,29 @@
 		int pri = (LOG_USER | LOG_NOTICE);
 		char line[MAXLINE + 1];
 		unsigned char c;
-
 		char *q = line;
+		char *p1 = 0;
+		int	 oldpri;
 
 		while ((c = *p) && q < &line[sizeof(line) - 1]) {
-			if (c == '<') {
+			if (c == '<' && p1 == 0) {
 				/* Parse the magic priority number. */
+				p1 = p;
+				oldpri = pri;
 				pri = 0;
 				while (isdigit(*(++p))) {
 					pri = 10 * pri + (*p - '0');
 				}
-				if (pri & ~(LOG_FACMASK | LOG_PRIMASK)) {
-					pri = (LOG_USER | LOG_NOTICE);
-				}
+				if ( *p != '>') {
+					*q++ = c;
+					p=p1;
+					p1=0;
+					pri=oldpri;
+				} else {
+					if (pri & ~(LOG_FACMASK | LOG_PRIMASK)){
+						pri = (LOG_USER | LOG_NOTICE);
+					}
+  				}
 			} else if (c == '\n') {
 				*q++ = ' ';
 			} else if (iscntrl(c) && (c < 0177)) {
@@ -563,10 +573,10 @@
 		if (FD_ISSET(sock_fd, &fds)) {
 			int i;
 
-			RESERVE_CONFIG_BUFFER(tmpbuf, BUFSIZ + 1);
+			RESERVE_CONFIG_BUFFER(tmpbuf, MAXLINE + 1);
 
-			memset(tmpbuf, '\0', BUFSIZ + 1);
-			if ((i = recv(sock_fd, tmpbuf, BUFSIZ, 0)) > 0) {
+			memset(tmpbuf, '\0', MAXLINE + 1);
+			if ((i = recv(sock_fd, tmpbuf, MAXLINE, 0)) > 0) {
 				serveConnection(tmpbuf, i);
 			} else {
 				bb_perror_msg_and_die("UNIX socket error");



More information about the busybox-cvs mailing list