Merge branch 'master' of git+ssh://vda@busybox.net/var/lib/git/busybox
[oweals/busybox.git] / runit / chpst.c
index 6e5180b913ab053bf6593a8631ffc34e47d574be..21297daf6d5f58099eff6f981c5a15bb26e3d101 100644 (file)
@@ -200,11 +200,11 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
                // if yes -> getopt converts strings to numbers for us
                opt_complementary = "-1:a+:c+:d+:f+:l+:m+:o+:p+:r+:s+:t+";
                opt = getopt32(argv, "+a:c:d:f:l:m:o:p:r:s:t:u:U:e:"
-                       USE_CHPST("/:n:vP012"),
+                       IF_CHPST("/:n:vP012"),
                        &limita, &limitc, &limitd, &limitf, &limitl,
                        &limitm, &limito, &limitp, &limitr, &limits, &limitt,
                        &set_user, &env_user, &env_dir
-                       USE_CHPST(, &root, &nicestr));
+                       IF_CHPST(, &root, &nicestr));
                argv += optind;
                if (opt & OPT_m) { // -m means -asld
                        limita = limits = limitl = limitd = limitm;
@@ -213,6 +213,8 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
        } else {
                option_mask32 = opt = 0;
                argv++;
+               if (!*argv)
+                       bb_show_usage();
        }
 
        // envdir?
@@ -222,13 +224,13 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
        }
 
        // setuidgid?
-       if (ENABLE_SETUIDGID && applet_name[0] == 's') {
+       if (ENABLE_SETUIDGID && applet_name[1] == 'e') {
                set_user = *argv++;
                opt |= OPT_u;
        }
 
        // envuidgid?
-       if (ENABLE_ENVUIDGID && applet_name[0] == 'e') {
+       if (ENABLE_ENVUIDGID && applet_name[0] == 'e' && applet_name[3] == 'u') {
                env_user = *argv++;
                opt |= OPT_U;
        }