From: Denys Vlasenko Date: Fri, 4 Aug 2017 23:38:55 +0000 (+0200) Subject: svc: fix a case where with more than option, getopt() state is not reset X-Git-Tag: 1_28_0~232 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=754e9f96defd7be48dfdc9ffe820c3fb7f35ff9e;p=oweals%2Fbusybox.git svc: fix a case where with more than option, getopt() state is not reset Signed-off-by: Denys Vlasenko --- diff --git a/runit/sv.c b/runit/sv.c index 3dd02550a..3267c7e4c 100644 --- a/runit/sv.c +++ b/runit/sv.c @@ -718,15 +718,16 @@ int svc_main(int argc UNUSED_PARAM, char **argv) argv[1] = command; command[1] = '\0'; - /* getopt32() was already called: - * reset the libc getopt() function, which keeps internal state. - */ - GETOPT_RESET(); - do { if (opts & 1) { int r; + command[0] = *optstring; + + /* getopt() was already called by getopt32(): + * reset the libc getopt() function's internal state. + */ + GETOPT_RESET(); r = sv(argv); if (r) return 1;