]> granicus.if.org Git - shadow/commitdiff
* src/vipw.c: Make sure opened files are closed.
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 25 May 2009 19:51:23 +0000 (19:51 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 25 May 2009 19:51:23 +0000 (19:51 +0000)
ChangeLog
src/vipw.c

index fc41df05dc67b27c997d39042f8463c8c2219348..189227c141f58fa6d138db64577627a803f99489 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-25  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/vipw.c: Make sure opened files are closed.
+
 2009-05-25  Nicolas François  <nicolas.francois@centraliens.net>
 
        * man/chpasswd.8.xml, man/grpck.8.xml, man/newgrp.1.xml,
index 5a3b4b3083b5f8c636932a6d46537c3794e3c404..bc77b97bc4468e26035b0bdc328b0049124f87e5 100644 (file)
@@ -116,8 +116,12 @@ static int create_backup_file (FILE * fp, const char *backup, struct stat *sb)
                unlink (backup);
                return -1;
        }
-       if (   (fsync (fileno (bkfp)) != 0)
-           || (fclose (bkfp) != 0)) {
+       if (fsync (fileno (bkfp)) != 0) {
+               (void) fclose (bkfp);
+               unlink (backup);
+               return -1;
+       }
+       if (fclose (bkfp) != 0) {
                unlink (backup);
                return -1;
        }
@@ -225,6 +229,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void))
        if (create_backup_file (f, fileedit, &st1) != 0) {
                vipwexit (_("Couldn't make backup"), errno, 1);
        }
+       (void) fclose (f);
        createedit = true;
 
        editor = getenv ("VISUAL");