diff -pru busybox-1.2.2.1/networking/Config.in busybox-1.2.2.1_raf/networking/Config.in
--- busybox-1.2.2.1/networking/Config.in	2006-07-01 00:42:02.000000000 +0200
+++ busybox-1.2.2.1_raf/networking/Config.in	2007-11-27 13:38:05.000000000 +0100
@@ -578,6 +578,16 @@ config CONFIG_FEATURE_TELNETD_INETD
 	  Selecting this will make telnetd only callable from inetd,
 	  removing the standalone support.
 
+config CONFIG_FEATURE_TELNETD_MAX_SESSIONS
+	int "Max number of accepted sessions"
+	default 4
+	range 0 100
+	depends on CONFIG_TELNETD && ! CONFIG_FEATURE_TELNETD_INETD
+	help
+	  Setting this options would limit the number of max accepted sessions
+	  use 0 to allow an unlimited number of accepted sessions. This security
+	  limitation could not work if telnetd is called by inetd superdaemon.
+
 config CONFIG_TFTP
 	bool "tftp"
 	default n
diff -pru busybox-1.2.2.1/networking/telnetd.c busybox-1.2.2.1_raf/networking/telnetd.c
--- busybox-1.2.2.1/networking/telnetd.c	2006-07-01 00:42:02.000000000 +0200
+++ busybox-1.2.2.1_raf/networking/telnetd.c	2007-11-27 13:55:43.000000000 +0100
@@ -57,6 +57,8 @@ typedef struct sockaddr_in6 sockaddr_typ
 typedef struct sockaddr_in sockaddr_type;
 #endif
 
+#define N_SESS_MAX CONFIG_FEATURE_TELNETD_MAX_SESSIONS
+static int n_sess = 0;
 
 #ifdef CONFIG_LOGIN
 static const char *loginpath = "/bin/login";
@@ -372,6 +374,7 @@ free_session(struct tsession *ts)
 	if (ts->ptyfd == maxfd || ts->sockfd == maxfd)
 		maxfd--;
 
+	n_sess--;
 	free(ts);
 }
 #endif /* CONFIG_FEATURE_TELNETD_INETD */
@@ -527,7 +530,14 @@ telnetd_main(int argc, char **argv)
 			if ((fd = accept(master_fd, (struct sockaddr *)&sa,
 						&salen)) < 0) {
 				continue;
-			} else {
+			} else
+#ifdef CONFIG_FEATURE_TELNETD_MAX_SESSIONS
+			if (n_sess >= N_SESS_MAX && N_SESS_MAX > 0) {
+				close(fd);
+				continue;
+			} else 
+#endif /* CONFIG_FEATURE_TELNETD_MAX_SESSIONS */
+			{
 				/* Create a new session and link it into
 					our active list.  */
 				struct tsession *new_ts = make_new_session(fd);
@@ -536,6 +546,7 @@ telnetd_main(int argc, char **argv)
 					sessions = new_ts;
 					if (fd > maxfd)
 						maxfd = fd;
+					n_sess++;
 				} else {
 					close(fd);
 				}
