svn commit: trunk/busybox: coreutils networking

vda at busybox.net vda at busybox.net
Mon Jun 25 10:35:13 UTC 2007


Author: vda
Date: 2007-06-25 03:35:11 -0700 (Mon, 25 Jun 2007)
New Revision: 18919

Log:
test: suppress gcc warning
telnetd: do not use suferfluous static variable.



Modified:
   trunk/busybox/coreutils/test.c
   trunk/busybox/networking/telnetd.c


Changeset:
Modified: trunk/busybox/coreutils/test.c
===================================================================
--- trunk/busybox/coreutils/test.c	2007-06-25 10:29:47 UTC (rev 18918)
+++ trunk/busybox/coreutils/test.c	2007-06-25 10:35:11 UTC (rev 18919)
@@ -386,7 +386,7 @@
 static int filstat(char *nm, enum token mode)
 {
 	struct stat s;
-	int i;
+	int i = i; /* gcc 3.x thinks it can be used uninitialized */
 
 	if (mode == FILSYM) {
 #ifdef S_IFLNK

Modified: trunk/busybox/networking/telnetd.c
===================================================================
--- trunk/busybox/networking/telnetd.c	2007-06-25 10:29:47 UTC (rev 18918)
+++ trunk/busybox/networking/telnetd.c	2007-06-25 10:35:11 UTC (rev 18919)
@@ -21,7 +21,6 @@
  *     Set process group corrections, initial busybox port
  */
 
-/*#define DEBUG 1 */
 #define DEBUG 0
 
 #include "libbb.h"
@@ -34,8 +33,6 @@
 #include <sys/syslog.h>
 
 
-#define BUFSIZE 4000
-
 #if ENABLE_LOGIN
 static const char *loginpath = "/bin/login";
 #else
@@ -44,10 +41,6 @@
 
 static const char *issuefile = "/etc/issue.net";
 
-/* shell name and arguments */
-
-static const char *argv_init[2];
-
 /* structure that describes a session */
 
 struct tsession {
@@ -60,6 +53,10 @@
 	int rdidx2, wridx2, size2;
 };
 
+/* Two buffers are directly after tsession in malloced memory.
+ * Make whole thing fit in 4k */
+enum { BUFSIZE = (4*1024 - sizeof(struct tsession)) / 2 };
+
 /*
    This is how the buffers are used. The arrows indicate the movement
    of data.
@@ -231,6 +228,7 @@
 		USE_FEATURE_TELNETD_STANDALONE(int sock_r, int sock_w)
 		SKIP_FEATURE_TELNETD_STANDALONE(void)
 ) {
+	const char *login_argv[2];
 	struct termios termbuf;
 	int fd, pid;
 	char tty_name[32];
@@ -283,7 +281,7 @@
 
 	/* child */
 
-	/* make new process group */
+	/* make new session and process group */
 	setsid();
 
 	/* open the child's side of the tty. */
@@ -294,7 +292,7 @@
 	dup2(fd, 1);
 	dup2(fd, 2);
 	while (fd > 2) close(fd--);
-	tcsetpgrp(0, getpid()); /* comment? */
+	tcsetpgrp(0, getpid()); /* switch this tty's process group to us */
 
 	/* The pseudo-terminal allocated to the client is configured to operate in
 	 * cooked mode, and with XTABS CRMOD enabled (see tty(4)). */
@@ -308,9 +306,12 @@
 
 	print_login_issue(issuefile, NULL);
 
-	/* exec shell, with correct argv and env */
-	execv(loginpath, (char *const *)argv_init);
-	bb_perror_msg_and_die("execv");
+	/* exec shell / login /whatever */
+	login_argv[0] = loginpath;
+	login_argv[1] = NULL;
+	execv(loginpath, (char **)login_argv);
+	/* Hmmm... this gets sent to the client thru fd#2! Is it ok?? */
+	bb_perror_msg_and_die("execv %s", loginpath);
 }
 
 #if ENABLE_FEATURE_TELNETD_STANDALONE
@@ -405,7 +406,6 @@
 
 	/* Used to check access(loginpath, X_OK) here. Pointless.
 	 * exec will do this for us for free later. */
-	argv_init[0] = loginpath;
 
 #if ENABLE_FEATURE_TELNETD_STANDALONE
 	if (IS_INETD) {




More information about the busybox-cvs mailing list