libbb: make parse_chown_usergroup_or_die() set unspecified uid/gid to -1
No binary (build failed)
—
(log yok)
| @@ -112,10 +112,6 @@ int chown_main(int argc UNUSED_PARAM, char **argv) | |
| int opt, flags; | |
| struct param_t param; | |
| - | /* Just -1 might not work: uid_t may be unsigned long */ |
| - | param.ugid.uid = -1L; |
| - | param.ugid.gid = -1L; |
| - | |
| #if ENABLE_FEATURE_CHOWN_LONG_OPTIONS | |
| applet_long_options = chown_longopts; | |
| #endif | |
| @@ -539,15 +539,15 @@ int start_stop_daemon_main(int argc UNUSED_PARAM, char **argv) | |
| write_pidfile(pidfile); | |
| } | |
| if (opt & OPT_c) { | |
| - | struct bb_uidgid_t ugid = { -1, -1 }; |
| + | struct bb_uidgid_t ugid; |
| parse_chown_usergroup_or_die(&ugid, chuid); | |
| - | if (ugid.uid != (uid_t) -1) { |
| + | if (ugid.uid != (uid_t) -1L) { |
| struct passwd *pw = xgetpwuid(ugid.uid); | |
| - | if (ugid.gid != (gid_t) -1) |
| + | if (ugid.gid != (gid_t) -1L) |
| pw->pw_gid = ugid.gid; | |
| /* initgroups, setgid, setuid: */ | |
| change_identity(pw); | |
| - | } else if (ugid.gid != (gid_t) -1) { |
| + | } else if (ugid.gid != (gid_t) -1L) { |
| xsetgid(ugid.gid); | |
| setgroups(1, &ugid.gid); | |
| } | |
| @@ -90,6 +90,8 @@ void FAST_FUNC parse_chown_usergroup_or_die(struct bb_uidgid_t *u, char *user_gr | |
| { | |
| char *group; | |
| + | u->uid = u->gid = (gid_t)-1L; |
| + | |
| /* Check if there is a group name */ | |
| group = strchr(user_group, '.'); /* deprecated? */ | |
| if (!group) | |