]> granicus.if.org Git - shadow/commitdiff
* src/pwck.c: Removed pw_opened.
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 13 Nov 2011 16:24:39 +0000 (16:24 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 13 Nov 2011 16:24:39 +0000 (16:24 +0000)
* src/pwck.c: optind cannot be greater than argc.
* src/pwck.c: If spw_opened, then is_shadow is implicitly set.
* src/pwck.c: Do not report passwd entry without x password and a
shadow entry in --quiet mode (no interaction with the caller)
* src/pwck.c: Do not check if the last password change is in the
future if the time is set to 0.

ChangeLog
src/pwck.c

index 43bb9765680d0ddcb28a7f5af179e0f510797177..317719bcb855ffafdbe25d607ef4a0c9136ecf43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-11-11  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/pwck.c: Removed pw_opened.
+       * src/pwck.c: optind cannot be greater than argc.
+       * src/pwck.c: If spw_opened, then is_shadow is implicitly set.
+       * src/pwck.c: Do not report passwd entry without x password and a
+       shadow entry in --quiet mode (no interaction with the caller)
+       * src/pwck.c: Do not check if the last password change is in the
+       future if the time is set to 0.
+
 2011-11-11  Nicolas François  <nicolas.francois@centraliens.net>
 
        * libmisc/root_flag.c: Drop privileges before changing root. The
index 399799c2ae28576604dc731b3dffce28134570b5..05df68ece8c679d9edb0688fa3661d4c4d2cfcc5 100644 (file)
@@ -75,7 +75,6 @@ static bool use_system_spw_file = true;
 
 static bool is_shadow = false;
 
-static bool pw_opened  = false;
 static bool spw_opened = false;
 
 static bool pw_locked  = false;
@@ -214,7 +213,7 @@ static void process_flags (int argc, char **argv)
        /*
         * Make certain we have the right number of arguments
         */
-       if ((argc < optind) || (argc > (optind + 2))) {
+       if (argc > (optind + 2)) {
                usage (E_USAGE);
        }
 
@@ -290,7 +289,6 @@ static void open_files (void)
                }
                fail_exit (E_CANTOPEN);
        }
-       pw_opened = true;
        if (is_shadow && !use_tcb) {
                if (spw_open (read_only ? O_RDONLY : O_RDWR) == 0) {
                        fprintf (stderr, _("%s: cannot open %s\n"),
@@ -319,7 +317,7 @@ static void close_files (bool changed)
         * changes to the files.
         */
        if (changed) {
-               if (pw_opened && pw_close () == 0) {
+               if (pw_close () == 0) {
                        fprintf (stderr,
                                 _("%s: failure while writing changes to %s\n"),
                                 Prog, pw_dbname ());
@@ -330,8 +328,7 @@ static void close_files (bool changed)
                        }
                        fail_exit (E_CANTUPDATE);
                }
-               pw_opened = false;
-               if (is_shadow && spw_opened && (spw_close () == 0)) {
+               if (spw_opened && (spw_close () == 0)) {
                        fprintf (stderr,
                                 _("%s: failure while writing changes to %s\n"),
                                 Prog, spw_dbname ());
@@ -640,7 +637,9 @@ static void check_pw_file (int *errors, bool *changed)
                                /* The passwd entry has a shadow counterpart.
                                 * Make sure no passwords are in passwd.
                                 */
-                               if (strcmp (pwd->pw_passwd, SHADOW_PASSWD_STRING) != 0) {
+                               if (   !quiet
+                                   && (strcmp (pwd->pw_passwd,
+                                               SHADOW_PASSWD_STRING) != 0)) {
                                        printf (_("user %s has an entry in %s, but its password field in %s is not set to 'x'\n"),
                                                pwd->pw_name, spw_dbname (), pw_dbname ());
                                        *errors += 1;
@@ -813,11 +812,14 @@ static void check_spw_file (int *errors, bool *changed)
                /*
                 * Warn if last password change in the future.  --marekm
                 */
-               if (   !quiet
-                   && (spw->sp_lstchg > (long) time ((time_t *) 0) / SCALE)) {
-                       printf (_("user %s: last password change in the future\n"),
-                               spw->sp_namp);
-                       *errors += 1;
+               if (!quiet) {
+                       time_t t = time ((time_t *) 0);
+                       if (   (t != 0)
+                           && (spw->sp_lstchg > (long) t / SCALE)) {
+                               printf (_("user %s: last password change in the future\n"),
+                                       spw->sp_namp);
+                               *errors += 1;
+                       }
                }
        }
 }