[git commit] nc: don't redirect stderr to network in -e PROG mode

Denys Vlasenko vda.linux at googlemail.com
Thu Feb 28 10:09:14 UTC 2013

commit: http://git.busybox.net/busybox/commit/?id=a14f319805c288db25cc9feac3048d89f3d7b41a
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

This in incompatible with nc-1.10, but makes a lot of sense.

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
 networking/nc.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/networking/nc.c b/networking/nc.c
index 0c843a6..8cb4b30 100644
--- a/networking/nc.c
+++ b/networking/nc.c
@@ -24,7 +24,7 @@
 //config:	  Allow netcat to act as a server.
 //config:config NC_EXTRA
-//config:	bool "Netcat extensions (-eiw and filename)"
+//config:	bool "Netcat extensions (-eiw and -f FILE)"
 //config:	default y
 //config:	depends on NC
 //config:	help
@@ -60,17 +60,18 @@
 //usage:#define nc_full_usage "\n\n"
 //usage:       "Open a pipe to IP:PORT" IF_NC_EXTRA(" or FILE")
 //usage:	NC_OPTIONS_STR
-//usage:	IF_NC_EXTRA(
-//usage:     "\n	-e PROG	Run PROG after connect"
 //usage:	IF_NC_SERVER(
 //usage:     "\n	-l	Listen mode, for inbound connects"
 //usage:	IF_NC_EXTRA(
-//usage:     "\n		(use -l twice with -e for persistent server)")
+//usage:     "\n		(use -ll with -e for persistent server)"
+//usage:	)
 //usage:     "\n	-p PORT	Local port"
 //usage:	)
-//usage:     "\n	-w SEC	Timeout for connect"
+//usage:	IF_NC_EXTRA(
+//usage:     "\n	-w SEC	Connect timeout"
 //usage:     "\n	-i SEC	Delay interval for lines sent"
 //usage:     "\n	-f FILE	Use file (ala /dev/ttyS0) instead of network"
+//usage:     "\n	-e PROG	Run PROG after connect"
 //usage:	)
 //usage:#define nc_notes_usage ""
@@ -147,7 +148,7 @@ int nc_main(int argc, char **argv)
 						*p++ = argv[optind++];
-				/* optind points to argv[arvc] (NULL) now.
+				/* optind points to argv[argc] (NULL) now.
 				** FIXME: we assume that getopt will not count options
 				** possibly present on "-e PROG ARGS" and will not
 				** include them into final value of optind
@@ -226,10 +227,9 @@ int nc_main(int argc, char **argv)
 		/* child, or main thread if only one -l */
 		xmove_fd(cfd, 0);
 		xdup2(0, 1);
-		xdup2(0, 2);
+		/*xdup2(0, 2); - original nc 1.10 does this, we don't */
 		IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);)
-		/* Don't print stuff or it will go over the wire... */
-		_exit(127);
+		bb_perror_msg_and_die("can't execute '%s'", execparam[0]);
 	/* Select loop copying stdin to cfd, and cfd to stdout */

More information about the busybox-cvs mailing list