summaryrefslogtreecommitdiffstats
path: root/login-utils/vipw.c
diff options
context:
space:
mode:
authorSami Kerola2012-04-04 19:58:34 +0200
committerSami Kerola2012-04-04 19:58:34 +0200
commit439cdf1e2475d2f6622c151419f90c7da6de1434 (patch)
treec7e0fac0bef7831d7603fd95e8ff30cc805843da /login-utils/vipw.c
parentmisc-utils: verify writing to streams was successful (diff)
downloadkernel-qcow2-util-linux-439cdf1e2475d2f6622c151419f90c7da6de1434.tar.gz
kernel-qcow2-util-linux-439cdf1e2475d2f6622c151419f90c7da6de1434.tar.xz
kernel-qcow2-util-linux-439cdf1e2475d2f6622c151419f90c7da6de1434.zip
login-utils: verify writing to streams was successful
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'login-utils/vipw.c')
-rw-r--r--login-utils/vipw.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/login-utils/vipw.c b/login-utils/vipw.c
index 29e485cc4..2d16999d2 100644
--- a/login-utils/vipw.c
+++ b/login-utils/vipw.c
@@ -72,7 +72,7 @@
#include <unistd.h>
#include "c.h"
-#include "fileutils.h"
+#include "closestream.h"
#include "nls.h"
#include "setpwnam.h"
#include "strutils.h"
@@ -283,7 +283,8 @@ static void edit_file(int is_shadow)
ch_ret = fchmod(fileno(tmp_fd), 0400);
if (ch_ret < 0)
err(EXIT_FAILURE, "%s: %s", _("cannot chmod file"), orig_file);
- fclose(tmp_fd);
+ if (close_stream(tmp_fd) != 0)
+ err(EXIT_FAILURE, _("write error"));
pw_write();
close(passwd_file);
ulckpwdf();
@@ -294,6 +295,7 @@ int main(int argc, char *argv[])
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ atexit(close_stdout);
if (!strcmp(program_invocation_short_name, "vigr")) {
program = VIGR;