aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-10-30 19:54:39 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-10-30 19:54:39 +0000
commit9d1afdb571e0ba3053616d74edc99a68325ef5e9 (patch)
tree1f65809702a359afc32428dbcd0f1fba505347f0
parent9130340adfcfe28dff626d6306266883c0070e44 (diff)
downloadbusybox-w32-9d1afdb571e0ba3053616d74edc99a68325ef5e9.tar.gz
busybox-w32-9d1afdb571e0ba3053616d74edc99a68325ef5e9.tar.bz2
busybox-w32-9d1afdb571e0ba3053616d74edc99a68325ef5e9.zip
inetd: fix bug 1562 "inetd does not set argv[0] properly" (fix by IlyaPanfilov)
inetd: code shrink while at it function old new delta static.SOCK_xxx - 6 +6 getconfigent 1222 1123 -99 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 6/-99) Total: -93 bytes text data bss dec hex filename 776099 974 9420 786493 c003d busybox_old 776020 974 9420 786414 bffee busybox_unstripped
-rw-r--r--networking/inetd.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/networking/inetd.c b/networking/inetd.c
index 8dca8fc3c..94d3df6e2 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -708,18 +708,17 @@ static servtab_t *getconfigent(void)
708 sep->se_service = xxstrdup(arg); 708 sep->se_service = xxstrdup(arg);
709 arg = skip(&cp); 709 arg = skip(&cp);
710 710
711 if (strcmp(arg, "stream") == 0) 711 {
712 sep->se_socktype = SOCK_STREAM; 712 static int8_t SOCK_xxx[] ALIGN1 = {
713 else if (strcmp(arg, "dgram") == 0) 713 -1,
714 sep->se_socktype = SOCK_DGRAM; 714 SOCK_STREAM, SOCK_DGRAM, SOCK_RDM,
715 else if (strcmp(arg, "rdm") == 0) 715 SOCK_SEQPACKET, SOCK_RAW
716 sep->se_socktype = SOCK_RDM; 716 };
717 else if (strcmp(arg, "seqpacket") == 0) 717 sep->se_socktype = SOCK_xxx[1 + index_in_strings(
718 sep->se_socktype = SOCK_SEQPACKET; 718 "stream""\0" "dgram""\0" "rdm""\0"
719 else if (strcmp(arg, "raw") == 0) 719 "seqpacket""\0" "raw""\0"
720 sep->se_socktype = SOCK_RAW; 720 , arg)];
721 else 721 }
722 sep->se_socktype = -1;
723 722
724 sep->se_proto = xxstrdup(skip(&cp)); 723 sep->se_proto = xxstrdup(skip(&cp));
725 724
@@ -787,10 +786,9 @@ static servtab_t *getconfigent(void)
787 *arg++ = '\0'; 786 *arg++ = '\0';
788 sep->se_group = xstrdup(arg); 787 sep->se_group = xstrdup(arg);
789 } 788 }
790 /* if ((arg = skip(&cp, 1)) == NULL) */
791 /* goto more; */
792 789
793 sep->se_server = xxstrdup(skip(&cp)); 790 arg = skip(&cp);
791 sep->se_server = xxstrdup(arg);
794 if (strcmp(sep->se_server, "internal") == 0) { 792 if (strcmp(sep->se_server, "internal") == 0) {
795#ifdef INETD_FEATURE_ENABLED 793#ifdef INETD_FEATURE_ENABLED
796 const struct builtin *bi; 794 const struct builtin *bi;
@@ -815,7 +813,7 @@ static servtab_t *getconfigent(void)
815 sep->se_bi = NULL; 813 sep->se_bi = NULL;
816#endif 814#endif
817 argc = 0; 815 argc = 0;
818 for (arg = skip(&cp); cp; arg = skip(&cp)) { 816 for (; cp; arg = skip(&cp)) {
819 if (argc < MAXARGV) 817 if (argc < MAXARGV)
820 sep->se_argv[argc++] = xxstrdup(arg); 818 sep->se_argv[argc++] = xxstrdup(arg);
821 } 819 }