svn commit: trunk/busybox/runit

vda at busybox.net vda at busybox.net
Sun May 6 01:37:22 UTC 2007


Author: vda
Date: 2007-05-05 18:37:21 -0700 (Sat, 05 May 2007)
New Revision: 18562

Log:
svlogd: fix 'SEGV on uninitialized data' and make it honor TERM


Modified:
   trunk/busybox/runit/svlogd.c


Changeset:
Modified: trunk/busybox/runit/svlogd.c
===================================================================
--- trunk/busybox/runit/svlogd.c	2007-05-05 15:11:40 UTC (rev 18561)
+++ trunk/busybox/runit/svlogd.c	2007-05-06 01:37:21 UTC (rev 18562)
@@ -642,9 +642,11 @@
 				trotate = dir[i].trotate;
 		}
 
-	while (1) {
+	do {
 		sigprocmask(SIG_UNBLOCK, blocked_sigset, NULL);
 		iopause(&input, 1, &trotate, now);
+// TODO: do not unblock/block, but use sigpending after iopause
+// to see whether there was any sig? (one syscall less...)
 		sigprocmask(SIG_BLOCK, blocked_sigset, NULL);
 		i = ndelay_read(fd, s, len);
 		if (i >= 0) break;
@@ -653,7 +655,7 @@
 			break;
 		}
 		/* else: EAGAIN - normal, repeat silently */
-	}
+	} while (!exitasap);
 
 	if (i > 0) {
 		int cnt;
@@ -784,12 +786,12 @@
 	////if (buflen <= linemax) usage();
 	fdwdir = xopen(".", O_RDONLY|O_NDELAY);
 	coe(fdwdir);
-	dir = xmalloc(dirn * sizeof(struct logdir));
+	dir = xzalloc(dirn * sizeof(struct logdir));
 	for (i = 0; i < dirn; ++i) {
 		dir[i].fddir = -1;
 		dir[i].fdcur = -1;
 		////dir[i].btmp = xmalloc(buflen);
-		dir[i].ppid = 0;
+		/*dir[i].ppid = 0;*/
 	}
 	/* line = xmalloc(linemax + (timestamp ? 26 : 0)); */
 	fndir = argv;




More information about the busybox-cvs mailing list