aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-11-22 04:57:37 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-11-22 04:57:37 +0100
commita945f6190b9ffdd316e8590c0b4fcb25dee7676e (patch)
treeddae3bd9f61845aecbe1bb4d3cf91ee0838225de
parentf3763033e457b100a863731c16a80648d85995c9 (diff)
downloadbusybox-w32-a945f6190b9ffdd316e8590c0b4fcb25dee7676e.tar.gz
busybox-w32-a945f6190b9ffdd316e8590c0b4fcb25dee7676e.tar.bz2
busybox-w32-a945f6190b9ffdd316e8590c0b4fcb25dee7676e.zip
inetd: if argv[0] is not specified, set it to program name
With inetd.conf files that skip argv[], inetd execs programs with argc==0. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/inetd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/networking/inetd.c b/networking/inetd.c
index ac42c5272..fb00c6cd7 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -778,6 +778,12 @@ static servtab_t *parse_one_line(void)
778 argc = 0; 778 argc = 0;
779 while ((arg = token[6+argc]) != NULL && argc < MAXARGV) 779 while ((arg = token[6+argc]) != NULL && argc < MAXARGV)
780 sep->se_argv[argc++] = xstrdup(arg); 780 sep->se_argv[argc++] = xstrdup(arg);
781 /* Some inetd.conf files have no argv's, not even argv[0].
782 * Fix them up.
783 * (Technically, programs can be execed with argv[0] = NULL,
784 * but many programs do not like that at all) */
785 if (argc == 0)
786 sep->se_argv[0] = xstrdup(sep->se_program);
781 787
782 /* catch mixups. "<service> stream udp ..." == wtf */ 788 /* catch mixups. "<service> stream udp ..." == wtf */
783 if (sep->se_socktype == SOCK_STREAM) { 789 if (sep->se_socktype == SOCK_STREAM) {