From d7a805efafd83203e72c334089c3f88204231ac7 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Wed, 3 Dec 2008 19:05:55 +0000 Subject: libbb: introduce and use xgetpwnam. ~ -150 bytes. --- loginutils/addgroup.c | 1 + loginutils/passwd.c | 4 +--- loginutils/su.c | 4 +--- 3 files changed, 3 insertions(+), 6 deletions(-) (limited to 'loginutils') diff --git a/loginutils/addgroup.c b/loginutils/addgroup.c index 89414d738..2a840d7c0 100644 --- a/loginutils/addgroup.c +++ b/loginutils/addgroup.c @@ -159,6 +159,7 @@ int addgroup_main(int argc UNUSED_PARAM, char **argv) /* check if group and user exist */ xuname2uid(argv[0]); /* unknown user: exit */ xgroup2gid(argv[1]); /* unknown group: exit */ +// race here! /* check if user is already in this group */ gr = getgrnam(argv[1]); for (; *(gr->gr_mem) != NULL; (gr->gr_mem)++) { diff --git a/loginutils/passwd.c b/loginutils/passwd.c index e3e74bae7..aa89b87a7 100644 --- a/loginutils/passwd.c +++ b/loginutils/passwd.c @@ -118,9 +118,7 @@ int passwd_main(int argc UNUSED_PARAM, char **argv) myname = xstrdup(xuid2uname(myuid)); name = argv[0] ? argv[0] : myname; - pw = getpwnam(name); - if (!pw) - bb_error_msg_and_die("unknown user %s", name); + pw = xgetpwnam(name); if (myuid && pw->pw_uid != myuid) { /* LOGMODE_BOTH */ bb_error_msg_and_die("%s can't change password for %s", myname, name); diff --git a/loginutils/su.c b/loginutils/su.c index 61039d823..e7e0001c7 100644 --- a/loginutils/su.c +++ b/loginutils/su.c @@ -48,9 +48,7 @@ int su_main(int argc UNUSED_PARAM, char **argv) openlog(applet_name, 0, LOG_AUTH); } - pw = getpwnam(opt_username); - if (!pw) - bb_error_msg_and_die("unknown id: %s", opt_username); + pw = xgetpwnam(opt_username); /* Make sure pw->pw_shell is non-NULL. It may be NULL when NEW_USER is a username that is retrieved via NIS (YP), but that doesn't have -- cgit v1.2.3