svn commit: trunk/busybox: coreutils libbb loginutils networking ne etc...

vda at busybox.net vda at busybox.net
Sat Jan 27 22:21:13 UTC 2007


Author: vda
Date: 2007-01-27 14:21:12 -0800 (Sat, 27 Jan 2007)
New Revision: 17557

Log:
use bb_sanitize_stdio() where appropriate


Modified:
   trunk/busybox/coreutils/nohup.c
   trunk/busybox/libbb/xfuncs.c
   trunk/busybox/loginutils/getty.c
   trunk/busybox/networking/traceroute.c
   trunk/busybox/networking/udhcp/common.c


Changeset:
Modified: trunk/busybox/coreutils/nohup.c
===================================================================
--- trunk/busybox/coreutils/nohup.c	2007-01-27 22:11:28 UTC (rev 17556)
+++ trunk/busybox/coreutils/nohup.c	2007-01-27 22:21:12 UTC (rev 17557)
@@ -14,16 +14,18 @@
 
 int nohup_main(int argc, char **argv)
 {
-	int temp, nullfd;
-	char *nohupout, *home = NULL;
+	int nullfd;
+	const char *nohupout;
+	char *home = NULL;
 
 	xfunc_error_retval = 127;
 
-	if (argc<2) bb_show_usage();
+	if (argc < 2) bb_show_usage();
 
 	nullfd = xopen(bb_dev_null, O_WRONLY|O_APPEND);
 	/* If stdin is a tty, detach from it. */
-	if (isatty(STDIN_FILENO)) dup2(nullfd, STDIN_FILENO);
+	if (isatty(STDIN_FILENO))
+		dup2(nullfd, STDIN_FILENO);
 
 	nohupout = "nohup.out";
 	/* Redirect stdout to nohup.out, either in "." or in "$HOME". */
@@ -38,16 +40,20 @@
 		}
 	} else dup2(nullfd, STDOUT_FILENO);
 
-	/* If we have a tty on strderr, announce filename and redirect to stdout.
+	/* If we have a tty on stderr, announce filename and redirect to stdout.
 	 * Else redirect to /dev/null.
 	 */
-	temp = isatty(STDERR_FILENO);
-	if (temp) bb_error_msg("appending to %s", nohupout);
-	dup2(temp ? STDOUT_FILENO : nullfd, STDERR_FILENO);
-	close(nullfd);
-	signal (SIGHUP, SIG_IGN);
+	if (isatty(STDERR_FILENO)) {
+		bb_error_msg("appending to %s", nohupout);
+		dup2(STDOUT_FILENO, STDERR_FILENO);
+	} else dup2(nullfd, STDERR_FILENO);
 
-	execvp(argv[1],argv+1);
-	if (00 && ENABLE_FEATURE_CLEAN_UP && home) free(nohupout);
+	if (nullfd > 2)
+		close(nullfd);
+	signal(SIGHUP, SIG_IGN);
+
+	execvp(argv[1], argv+1);
+	if (ENABLE_FEATURE_CLEAN_UP && home)
+		free((char*)nohupout);
 	bb_perror_msg_and_die("%s", argv[1]);
 }

Modified: trunk/busybox/libbb/xfuncs.c
===================================================================
--- trunk/busybox/libbb/xfuncs.c	2007-01-27 22:11:28 UTC (rev 17556)
+++ trunk/busybox/libbb/xfuncs.c	2007-01-27 22:21:12 UTC (rev 17557)
@@ -518,7 +518,7 @@
 	int fd;
 	/* Mega-paranoid */
 	fd = xopen(bb_dev_null, O_RDWR);
-	while (fd < 2)
+	while ((unsigned)fd < 2)
 		fd = dup(fd); /* have 0,1,2 open at least to /dev/null */
 	if (daemonize) {
 		pid_t pid = fork();

Modified: trunk/busybox/loginutils/getty.c
===================================================================
--- trunk/busybox/loginutils/getty.c	2007-01-27 22:11:28 UTC (rev 17556)
+++ trunk/busybox/loginutils/getty.c	2007-01-27 22:21:12 UTC (rev 17557)
@@ -264,7 +264,7 @@
 		 */
 
 		if ((fcntl(0, F_GETFL, 0) & O_RDWR) != O_RDWR)
-			bb_error_msg_and_die("%s: not open for read/write", tty);
+			bb_error_msg_and_die("stdin is not open for read/write");
 	}
 
 	/* Replace current standard output/error fd's with new ones */
@@ -314,7 +314,8 @@
 			strcpy(vcsa, "vcsa");
 			strcpy(vcsa + 4, tty + 3);
 
-			id = (gr = getgrnam("sys")) ? gr->gr_gid : 0;
+			gr = getgrnam("sys");
+			id = gr ? gr->gr_gid : 0;
 			chown(vcs, 0, id);
 			chmod(vcs, 0600);
 			chown(vcsa, 0, id);
@@ -628,8 +629,8 @@
 		tp->c_cflag |= CS7;
 		break;
 	}
+
 	/* Account for upper case without lower case. */
-
 #ifdef HANDLE_ALLCAPS
 	if (cp->capslock) {
 		tp->c_iflag |= IUCLC;

Modified: trunk/busybox/networking/traceroute.c
===================================================================
--- trunk/busybox/networking/traceroute.c	2007-01-27 22:11:28 UTC (rev 17556)
+++ trunk/busybox/networking/traceroute.c	2007-01-27 22:21:12 UTC (rev 17557)
@@ -1040,10 +1040,8 @@
 		bb_show_usage();
 	}
 
-	/* Insure the socket fds won't be 0, 1 or 2 */
-	do n = xopen(bb_dev_null, O_RDONLY); while (n < 2);
-	while (n > 2)
-		close(n--);
+	/* Ensure the socket fds won't be 0, 1 or 2 */
+	bb_sanitize_stdio();
 
 	s = xsocket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
 

Modified: trunk/busybox/networking/udhcp/common.c
===================================================================
--- trunk/busybox/networking/udhcp/common.c	2007-01-27 22:11:28 UTC (rev 17556)
+++ trunk/busybox/networking/udhcp/common.c	2007-01-27 22:21:12 UTC (rev 17557)
@@ -22,20 +22,6 @@
 	return info.uptime;
 }
 
-/*
- * This function makes sure our first socket calls
- * aren't going to fd 1 (printf badness...) and are
- * not later closed by daemon()
- */
-static inline void sanitize_fds(void)
-{
-	int fd = xopen(bb_dev_null, O_RDWR);
-	while (fd < 3)
-		fd = dup(fd);
-	close(fd);
-}
-
-
 void udhcp_background(const char *pidfile)
 {
 #ifdef __uClinux__
@@ -57,7 +43,7 @@
 	int pid_fd;
 
 	/* Make sure our syslog fd isn't overwritten */
-	sanitize_fds();
+	bb_sanitize_stdio();
 
 	/* do some other misc startup stuff while we are here to save bytes */
 	pid_fd = pidfile_acquire(pidfile);




More information about the busybox-cvs mailing list