]> granicus.if.org Git - shadow/commitdiff
* src/chage.c, src/chfn.c, src/chgpasswd.c, src/chpasswd.c,
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 13 Nov 2011 16:24:57 +0000 (16:24 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 13 Nov 2011 16:24:57 +0000 (16:24 +0000)
src/chsh.c, src/groupadd.c, src/groupdel.c, src/groupmems.c,
src/groupmod.c, src/newusers.c, src/useradd.c, src/userdel.c,
src/usermod.c: Provide the PAM error
message instead of our own, and log error to syslog.
* src/groupmems.c: Exit with exit rather than fail_exit in usage().
* src/newusers.c: Check the number of arguments.
* src/newusers.c: Do not create the home directory when it is not
changed.
* src/useradd.c: Set the group password to "!" rather "x" if there
are no gshadow file.

14 files changed:
ChangeLog
src/chage.c
src/chfn.c
src/chgpasswd.c
src/chpasswd.c
src/chsh.c
src/groupadd.c
src/groupdel.c
src/groupmems.c
src/groupmod.c
src/newusers.c
src/useradd.c
src/userdel.c
src/usermod.c

index 317719bcb855ffafdbe25d607ef4a0c9136ecf43..89e2ae33e240e2b909f8dafc3e062fbb8aac73af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2011-11-12  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/chage.c, src/chfn.c, src/chgpasswd.c, src/chpasswd.c,
+       src/chsh.c, src/groupadd.c, src/groupdel.c, src/groupmems.c,
+       src/groupmod.c, src/newusers.c, src/useradd.c, src/userdel.c,
+       src/usermod.c: Provide the PAM error
+       message instead of our own, and log error to syslog.
+       * src/groupmems.c: Exit with exit rather than fail_exit in usage().
+       * src/newusers.c: Check the number of arguments.
+       * src/newusers.c: Do not create the home directory when it is not
+       changed.
+       * src/useradd.c: Set the group password to "!" rather "x" if there
+       are no gshadow file.
+
 2011-11-11  Nicolas François  <nicolas.francois@centraliens.net>
 
        * src/pwck.c: Removed pw_opened.
index 4702783520d45b3a076605b35c56f4881ae44c98..b840e778821225b71d119503bab9b8a07391f5b2 100644 (file)
@@ -556,13 +556,16 @@ static void check_perms (void)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                fail_exit (E_NOPERM);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 }
index 40d6750b4d6accec704a66c84d729c69d7d1962d..a022c1a35354416431c22ff49929a08897523ded 100644 (file)
@@ -416,13 +416,16 @@ static void check_perms (const struct passwd *pw)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (E_NOPERM);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 }
 
index af53338732bf5630b33371cba4961cfa2dcef8f5..dab8574a11e1043e99875ed57f1947c19034be65 100644 (file)
@@ -286,13 +286,16 @@ static void check_perms (void)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 }
index ef54a486c7f3eeec67893993e371271ad63f1b1b..9ebfabe6841c8dc4a55eb25079859dbf9b8b14b1 100644 (file)
@@ -283,13 +283,16 @@ static void check_perms (void)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* ACCT_TOOLS_SETUID */
 #endif                         /* USE_PAM */
 }
index c038f69743adbcdd67f63874bdabee380d03a388..4bb47f5a9727d9d53b45be3479d04b6a8c893272 100644 (file)
@@ -325,13 +325,16 @@ static void check_perms (const struct passwd *pw)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (E_NOPERM);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 }
 
index b4c057cd8471fa14f9dacb626080df2a43fc80a0..39b4ec02fae0ed927762165d6a5299ea7067f1a7 100644 (file)
@@ -549,13 +549,16 @@ static void check_perms (void)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 }
index 9bf5863f39ac253f33e8633f9245aafa989abe1c..da993475b0158b01f89440b5a9b58ab30ad5f961 100644 (file)
@@ -407,13 +407,16 @@ int main (int argc, char **argv)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
index e1f77b7eb980e1b8ebd32df5d15253be21b5d739..e4f107f93191e99ea6e0044a30e76248adc82ad5 100644 (file)
@@ -379,7 +379,7 @@ static /*@noreturn@*/void usage (int status)
        (void) fputs (_("  -h, --help                    display this help message and exit\n"), usageout);
        (void) fputs (_("  -p, --purge                   purge all members from the group\n"), usageout);
        (void) fputs (_("  -l, --list                    list the members of the group\n"), usageout);
-       fail_exit (status);
+       exit (status);
 }
 
 /*
@@ -471,13 +471,16 @@ static void check_perms (void)
                        retval = pam_acct_mgmt (pamh, 0);
                }
 
-               if (NULL != pamh) {
-                       (void) pam_end (pamh, retval);
-               }
                if (PAM_SUCCESS != retval) {
-                       fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+                       fprintf (stderr, _("%s: PAM: %s\n"),
+                                Prog, pam_strerror (pamh, retval));
+                       SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+                       if (NULL != pamh) {
+                               (void) pam_end (pamh, retval);
+                       }
                        fail_exit (1);
                }
+               (void) pam_end (pamh, retval);
 #endif
        }
 }
index 96de082a705b64cda347c19b6d583c8ca9b8560f..d9d3807175c8285a02b29b2196afedf4e52793af 100644 (file)
@@ -784,13 +784,16 @@ int main (int argc, char **argv)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
index 2e46ecbf55e6fd9275f4a93a0048df9d753d3d3f..447676f3712b1c0556a9a9e7590057abc2b5b925 100644 (file)
@@ -584,6 +584,11 @@ static void process_flags (int argc, char **argv)
                }
        }
 
+       if (   (optind != argc)
+           && (optind + 1 != argc)) {
+               usage (EXIT_FAILURE);
+       }
+
        if (argv[optind] != NULL) {
                if (freopen (argv[optind], "r", stdin) == NULL) {
                        char buf[BUFSIZ];
@@ -668,13 +673,16 @@ static void check_perms (void)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                fail_exit (EXIT_FAILURE);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 }
@@ -1006,7 +1014,7 @@ int main (int argc, char **argv)
                        newpw.pw_shell = fields[6];
                }
 
-               if (   ('\0' != newpw.pw_dir[0])
+               if (   ('\0' != fields[5][0])
                    && (access (newpw.pw_dir, F_OK) != 0)) {
 /* FIXME: should check for directory */
                        mode_t msk = 0777 & ~getdef_num ("UMASK",
index da3cd97af8d772ca1d3456b38a1f86c5e5ca5cba..e32f4fa26ace4b36ad51df62cf3794b83fa1b524 100644 (file)
@@ -1519,7 +1519,11 @@ static void new_grent (struct group *grent)
 {
        memzero (grent, sizeof *grent);
        grent->gr_name = (char *) user_name;
-       grent->gr_passwd = SHADOW_PASSWD_STRING;        /* XXX warning: const */
+       if (is_shadow_grp) {
+               grent->gr_passwd = SHADOW_PASSWD_STRING;        /* XXX warning: const */
+       } else {
+               grent->gr_passwd = "!"; /* XXX warning: const */
+       }
        grent->gr_gid = user_gid;
        grent->gr_mem = &empty_list;
 }
@@ -1929,13 +1933,16 @@ int main (int argc, char **argv)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                fail_exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
index c2091cda45d47fe7e029873aae1fbd781360df38..418130764e520905e30c02b7ae874f21c31730af 100644 (file)
@@ -923,13 +923,16 @@ int main (int argc, char **argv)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (E_PW_UPDATE);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
index 0c0f464e341cdad80d0296d8c59a6868f424f597..19781aadbdde1b2532b7defe77e17dd1d3a155bd 100644 (file)
@@ -1849,13 +1849,16 @@ int main (int argc, char **argv)
                retval = pam_acct_mgmt (pamh, 0);
        }
 
-       if (NULL != pamh) {
-               (void) pam_end (pamh, retval);
-       }
        if (PAM_SUCCESS != retval) {
-               fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
+               fprintf (stderr, _("%s: PAM: %s\n"),
+                        Prog, pam_strerror (pamh, retval));
+               SYSLOG((LOG_ERR, "%s", pam_strerror (pamh, retval)));
+               if (NULL != pamh) {
+                       (void) pam_end (pamh, retval);
+               }
                exit (1);
        }
+       (void) pam_end (pamh, retval);
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */