From: Todd C. Miller Date: Wed, 9 Feb 1994 03:02:32 +0000 (+0000) Subject: now do getpwent as root for soem shadow password systems (bsdi) X-Git-Tag: SUDO_1_3_0~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2062d2e45f33bd3e7e9d63432d205f536b05a9a4;p=sudo now do getpwent as root for soem shadow password systems (bsdi) --- diff --git a/check.c b/check.c index 47be50eb7..83fed9523 100644 --- a/check.c +++ b/check.c @@ -216,7 +216,11 @@ static void check_passwd() char *pass; /* this is what gets entered */ register int counter = TRIES_FOR_PASSWORD; - if ((pw_ent = getpwuid(uid)) == NULL) { + /* some os's need to be root to get at shadow password */ + be_root(); + pw_ent = getpwuid(uid); + be_user(); + if (pw_ent == NULL) { (void) sprintf(user, "%u", uid); log_error(GLOBAL_NO_PW_ENT); inform_user(GLOBAL_NO_PW_ENT); @@ -224,13 +228,14 @@ static void check_passwd() } #ifdef __svr4__ be_root(); - if ((spw_ent = getspnam(pw_ent->pw_name)) == NULL) { + spw_ent = getspnam(pw_ent->pw_name); + be_user(); + if (spw_ent == NULL) { (void) sprintf(user, "%u", uid); log_error(GLOBAL_NO_PW_ENT); inform_user(GLOBAL_NO_PW_ENT); exit(1); } - be_user(); encrypted = spw_ent -> sp_pwdp; #else encrypted = pw_ent -> pw_passwd;