diff options
author | Martijn Dekker <martijn@inlv.org> | 2018-03-26 22:32:50 +0200 |
---|---|---|
committer | Peter Stephenson <p.stephenson@samsung.com> | 2018-03-27 09:32:55 +0100 |
commit | fa0105f78c9204d72cb0cd68c20d5f390b2a044b (patch) | |
tree | be4d7a30783b01099593e6a645846465394252e0 /Src/utils.c | |
parent | 9bc391105ffc9a430668373388badd369e314415 (diff) | |
download | zsh-fa0105f78c9204d72cb0cd68c20d5f390b2a044b.tar.gz zsh-fa0105f78c9204d72cb0cd68c20d5f390b2a044b.tar.xz zsh-fa0105f78c9204d72cb0cd68c20d5f390b2a044b.zip |
42538: Temporarily set umask for here document.
Done while signals are queued.
Diffstat (limited to 'Src/utils.c')
-rw-r--r-- | Src/utils.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Src/utils.c b/Src/utils.c index 6517e15b8..466014263 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -2177,10 +2177,12 @@ gettempfile(const char *prefix, int use_heap, char **tempname) { char *fn; int fd; + mode_t old_umask; #if HAVE_MKSTEMP char *suffix = prefix ? ".XXXXXX" : "XXXXXX"; queue_signals(); + old_umask = umask(0177); if (!prefix && !(prefix = getsparam("TMPPREFIX"))) prefix = DEFAULT_TMPPREFIX; if (use_heap) @@ -2198,6 +2200,7 @@ gettempfile(const char *prefix, int use_heap, char **tempname) int failures = 0; queue_signals(); + old_umask = umask(0177); do { if (!(fn = gettempname(prefix, use_heap))) { fd = -1; @@ -2212,6 +2215,7 @@ gettempfile(const char *prefix, int use_heap, char **tempname) #endif *tempname = fn; + umask(old_umask); unqueue_signals(); return fd; } |