From a6418fb0df6d96a3041ec4f2dbab39fd58a502ed Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Mon, 25 May 2009 19:51:23 +0000 Subject: [PATCH] * src/vipw.c: Make sure opened files are closed. --- ChangeLog | 4 ++++ src/vipw.c | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc41df05..189227c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-05-25 Nicolas François + + * src/vipw.c: Make sure opened files are closed. + 2009-05-25 Nicolas François * man/chpasswd.8.xml, man/grpck.8.xml, man/newgrp.1.xml, diff --git a/src/vipw.c b/src/vipw.c index 5a3b4b30..bc77b97b 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -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");