diff options
author | djm@openbsd.org <djm@openbsd.org> | 2015-01-26 13:36:53 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2015-01-27 00:37:35 +1100 |
commit | 3076ee7d530d5b16842fac7a6229706c7e5acd26 (patch) | |
tree | 2dac135bdfc06f5c94deeab2f2d3a2e963d24447 | |
parent | d411d395556b73ba1b9e451516a0bd6697c4b03d (diff) |
upstream commit
properly restore umask
-rw-r--r-- | hostfile.c | 6 |
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; |