diff --git a/ChangeLog b/ChangeLog index d694bc68..895017c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,7 +10,7 @@ available. * libmisc/limits.c, libmisc/entry.c, libmisc/chowntty.c, libmisc/addgrps.c, libmisc/myname.c, libmisc/rlogin.c, - libmisc/pwdcheck.c, src/newgrp.c, src/login_nopam.c, + libmisc/pwdcheck.c, src/newgrp.c, src/login_nopam.c, src/login.c, src/userdel.c, src/lastlog.c, src/grpck.c, src/gpasswd.c, src/newusers.c, src/chpasswd.c, src/chfn.c, src/groupmems.c, src/usermod.c, src/expiry.c, src/groupdel.c, src/chgpasswd.c, @@ -30,7 +30,7 @@ Note: the getpwent/getgrent calls should probably be checked also. * src/groupdel.c, src/expiry.c: Fix typos in comments. * src/groupmod.c: Re-indent. - * libmisc/Makefile.am, lib/groupmem.c, lib/groupio.c, lib/pwmem.c, + * lib/Makefile.am, lib/groupmem.c, lib/groupio.c, lib/pwmem.c, lib/pwio.c, lib/shadowmem.c, lib/shadowio.c: Move the ___dup functions (used by the xget... functions) from the io.c files to the new mem.c files. This avoid linking some utils against diff --git a/lib/Makefile.am b/lib/Makefile.am index c309f808..9a3ce53b 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -19,6 +19,7 @@ libshadow_la_SOURCES = \ getdef.c \ getdef.h \ groupio.c \ + groupmem.c \ groupio.h \ gshadow.c \ lockpw.c \ @@ -32,6 +33,7 @@ libshadow_la_SOURCES = \ pwauth.h \ pwio.c \ pwio.h \ + pwmem.c \ sgetgrent.c \ sgetpwent.c \ sgroupio.c \ @@ -39,6 +41,7 @@ libshadow_la_SOURCES = \ shadow.c \ shadowio.c \ shadowio.h \ + shadowmem.c \ utent.c # These files are unneeded for some reason, listed in diff --git a/src/login.c b/src/login.c index 39326ad2..beb55f83 100644 --- a/src/login.c +++ b/src/login.c @@ -647,7 +647,7 @@ int main (int argc, char **argv) (const void **) &pam_user); if (pam_user && pam_user[0]) { - pwd = getpwnam(pam_user); + pwd = xgetpwnam(pam_user); if (pwd) { pwent = *pwd; failent_user = pwent.pw_name; @@ -693,6 +693,7 @@ int main (int argc, char **argv) char buf[64]; audit_fd = audit_open (); + /* local, no need for xgetpwnam */ pw = getpwnam (username); if (pw) { snprintf (buf, sizeof (buf), @@ -738,9 +739,9 @@ int main (int argc, char **argv) retcode = pam_get_item (pamh, PAM_USER, (const void **) &pam_user); setpwent (); - pwd = getpwnam (pam_user); + pwd = xgetpwnam (pam_user); if (!pwd) { - SYSLOG ((LOG_ERR, "getpwnam(%s) failed", + SYSLOG ((LOG_ERR, "xgetpwnam(%s) failed", getdef_bool ("LOG_UNKFAIL_ENAB") ? pam_user : "UNKNOWN")); exit (1); @@ -779,10 +780,10 @@ int main (int argc, char **argv) #endif /* ! USE_PAM */ #ifdef USE_PAM - if (!(pwd = getpwnam (pam_user))) { + if (!(pwd = xgetpwnam (pam_user))) { pwent.pw_name = pam_user; #else - if (!(pwd = getpwnam (username))) { + if (!(pwd = xgetpwnam (username))) { pwent.pw_name = username; #endif strcpy (temp_pw, "!"); @@ -797,6 +798,7 @@ int main (int argc, char **argv) #ifndef USE_PAM spwd = NULL; if (pwd && strcmp (pwd->pw_passwd, SHADOW_PASSWD_STRING) == 0) { + /* !USE_PAM, no need for xgetspnam */ spwd = getspnam (username); if (spwd) pwent.pw_passwd = spwd->sp_pwdp; @@ -996,7 +998,9 @@ int main (int argc, char **argv) */ if (spwd) { /* check for age of password */ if (expire (&pwent, spwd)) { + /* !USE_PAM, no need for xgetpwnam */ pwd = getpwnam (username); + /* !USE_PAM, no need for xgetspnam */ spwd = getspnam (username); if (pwd) pwent = *pwd;