int chpst_main(int argc UNUSED_PARAM, char **argv)
{
struct bb_uidgid_t ugid;
- char *set_user;
- char *env_user;
- char *env_dir;
+ char *set_user = set_user; /* for compiler */
+ char *env_user = env_user;
+ char *env_dir = env_dir;
char *root;
char *nicestr;
unsigned limita;
// 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;
} else {
option_mask32 = opt = 0;
argv++;
+ if (!*argv)
+ bb_show_usage();
}
// envdir?
}
// 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;
}