diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-30 19:54:39 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-30 19:54:39 +0000 |
commit | 9d1afdb571e0ba3053616d74edc99a68325ef5e9 (patch) | |
tree | 1f65809702a359afc32428dbcd0f1fba505347f0 | |
parent | 9130340adfcfe28dff626d6306266883c0070e44 (diff) | |
download | busybox-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.c | 30 |
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 | } |