]> granicus.if.org Git - shadow/commitdiff
* libmisc/hushed.c, lib/prototypes.h, src/login.c: Change the
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 20 Apr 2009 11:48:59 +0000 (11:48 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 20 Apr 2009 11:48:59 +0000 (11:48 +0000)
hushed() prototype to take a username instead of a passwd
structure in argument. The passwd entry is retrieved withing
hushed().

ChangeLog
lib/prototypes.h
libmisc/hushed.c
src/login.c

index 6986e898d4571474cc8569a2e8fc8f6e8c7b90ce..9eed7f66c51788e91160cb3da99dccac55a50067 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-04-20  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * libmisc/hushed.c, lib/prototypes.h, src/login.c: Change the
+       hushed() prototype to take a username instead of a passwd
+       structure in argument. The passwd entry is retrieved withing
+       hushed().
+
 2009-04-20  Nicolas François  <nicolas.francois@centraliens.net>
 
        * libmisc/setugid.c: Updated comments.
index 1145ff46e2cbfa8665666297fa143e29a3842da7..2eb292d89e3d4d2bfcd358eea450e49180a76a63 100644 (file)
@@ -175,7 +175,7 @@ extern void __gr_set_changed (void);
 extern struct group *__gr_dup (const struct group *grent);
 
 /* hushed.c */
-extern bool hushed (const struct passwd *pw);
+extern bool hushed (const char *username);
 
 /* audit_help.c */
 #ifdef WITH_AUDIT
index 0af41ab0e228ae9f88a20621a833c4df0b9ec296..753a14410df3430d2a423142601c64eeffbfe70a 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1991 - 1993, Chip Rosenthal
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2003 - 2005, Tomasz Kłoczko
- * Copyright (c) 2008       , Nicolas François
+ * Copyright (c) 2008 - 2009, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,8 +47,9 @@
  * Look in the hushed-logins file (or user's home directory) to see
  * if the user is to receive the login-time messages.
  */
-bool hushed (const struct passwd *pw)
+bool hushed (const char *username)
 {
+       const struct passwd *pw;
        char *hushfile;
        char buf[BUFSIZ];
        bool found;
@@ -64,6 +65,11 @@ bool hushed (const struct passwd *pw)
                return false;
        }
 
+       pw = getspnam (username);
+       if (NULL == pw) {
+               return false;
+       }
+
        /*
         * If this is not a fully rooted path then see if the
         * file exists in the user's home directory.
index 699549acd635c216dfb1053e3a37cbb819af3777..843197d442499a844aae71764e32b8cde2540d33 100644 (file)
@@ -847,7 +847,7 @@ int main (int argc, char **argv)
        retcode = pam_setcred (pamh, PAM_ESTABLISH_CRED);
        PAM_FAIL_CHECK;
 
-       retcode = pam_open_session (pamh, hushed (&pwent) ? PAM_SILENT : 0);
+       retcode = pam_open_session (pamh, hushed (username) ? PAM_SILENT : 0);
        PAM_FAIL_CHECK;
 
 #else                          /* ! USE_PAM */
@@ -1184,7 +1184,7 @@ int main (int argc, char **argv)
        (void) bindtextdomain (PACKAGE, LOCALEDIR);
        (void) textdomain (PACKAGE);
 
-       if (!hushed (&pwent)) {
+       if (!hushed (username)) {
                addenv ("HUSHLOGIN=FALSE", NULL);
                /*
                 * pam_unix, pam_mail and pam_lastlog should take care of