From: Christian Goeschel Ndjomouo Date: Wed, 26 Nov 2025 03:19:12 +0000 (-0500) Subject: su: accept group name and GID in -g and -G options X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a5773de844015a6413535b0672856653c15ba8d;p=thirdparty%2Futil-linux.git su: accept group name and GID in -g and -G options Signed-off-by: Christian Goeschel Ndjomouo --- diff --git a/login-utils/su-common.c b/login-utils/su-common.c index 4d54eab31..81ea26287 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -267,7 +267,7 @@ static void chownmod_pty(struct su_context *su) const char *grname = getlogindefs_str("TTYGROUP", TTYGRPNAME); if (grname && *grname) { - struct group *gr = getgrnam(grname); + struct group *gr = ul_getgrp_str(grname); if (gr) /* group by name */ gid = gr->gr_gid; else /* group by ID */ @@ -970,7 +970,7 @@ static gid_t add_supp_group(const char *name, gid_t **groups, size_t *ngroups) "specifying more than %d supplemental groups is not possible", NGROUPS_MAX - 1), NGROUPS_MAX - 1); - gr = getgrnam(name); + gr = ul_getgrp_str(name); if (!gr) errx(EXIT_FAILURE, _("group %s does not exist"), name); @@ -1154,7 +1154,7 @@ int su_main(int argc, char **argv, int mode) logindefs_set_loader(load_config, (void *) su); init_tty(su); - su->pwd = xgetpwnam(su->new_user, &su->pwdbuf); + su->pwd = xgetuserpw(su->new_user, &su->pwdbuf); if (!su->pwd || !su->pwd->pw_passwd || !su->pwd->pw_name || !*su->pwd->pw_name