summaryrefslogtreecommitdiff
path: root/hostfile.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2015-01-26 13:36:53 +0000
committerDamien Miller <djm@mindrot.org>2015-01-27 00:37:35 +1100
commit3076ee7d530d5b16842fac7a6229706c7e5acd26 (patch)
tree2dac135bdfc06f5c94deeab2f2d3a2e963d24447 /hostfile.c
parentd411d395556b73ba1b9e451516a0bd6697c4b03d (diff)
upstream commit
properly restore umask
Diffstat (limited to 'hostfile.c')
-rw-r--r--hostfile.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hostfile.c b/hostfile.c
index 9de1b383b..ea6bc6fc8 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.c,v 1.62 2015/01/26 03:04:45 djm Exp $ */ 1/* $OpenBSD: hostfile.c,v 1.63 2015/01/26 13:36:53 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -551,6 +551,8 @@ hostfile_replace_entries(const char *filename, const char *host,
551 mode_t omask; 551 mode_t omask;
552 size_t i; 552 size_t i;
553 553
554 omask = umask(077);
555
554 memset(&ctx, 0, sizeof(ctx)); 556 memset(&ctx, 0, sizeof(ctx));
555 ctx.host = host; 557 ctx.host = host;
556 ctx.quiet = quiet; 558 ctx.quiet = quiet;
@@ -568,7 +570,6 @@ hostfile_replace_entries(const char *filename, const char *host,
568 goto fail; 570 goto fail;
569 } 571 }
570 572
571 omask = umask(077);
572 if ((fd = mkstemp(temp)) == -1) { 573 if ((fd = mkstemp(temp)) == -1) {
573 oerrno = errno; 574 oerrno = errno;
574 error("%s: mkstemp: %s", __func__, strerror(oerrno)); 575 error("%s: mkstemp: %s", __func__, strerror(oerrno));
@@ -636,6 +637,7 @@ hostfile_replace_entries(const char *filename, const char *host,
636 if (ctx.out != NULL) 637 if (ctx.out != NULL)
637 fclose(ctx.out); 638 fclose(ctx.out);
638 free(ctx.skip_keys); 639 free(ctx.skip_keys);
640 umask(omask);
639 if (r == SSH_ERR_SYSTEM_ERROR) 641 if (r == SSH_ERR_SYSTEM_ERROR)
640 errno = oerrno; 642 errno = oerrno;
641 return r; 643 return r;