aboutsummaryrefslogtreecommitdiff
path: root/jim-file.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2014-04-28 08:13:18 +1000
committerSteve Bennett <steveb@workware.net.au>2014-04-28 08:20:09 +1000
commit9dd0d2c1a7ed851474d08714e20511d66ef3122b (patch)
tree81968c69d5a3c7aabfcddc62e435a4d7c48d95a3 /jim-file.c
parentf3bcce096ce1f62d578ca5636a12ce34e08f6a88 (diff)
downloadjimtcl-9dd0d2c1a7ed851474d08714e20511d66ef3122b.zip
jimtcl-9dd0d2c1a7ed851474d08714e20511d66ef3122b.tar.gz
jimtcl-9dd0d2c1a7ed851474d08714e20511d66ef3122b.tar.bz2
exec, file: set umask before mkstemp
Set umask so that temp files are created with permissions 0600. Courtesy of coverity. Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-file.c')
-rw-r--r--jim-file.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/jim-file.c b/jim-file.c
index ddb0ede..6d10a2b 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -489,6 +489,7 @@ static int file_cmd_tempfile(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int fd;
char *filename;
const char *template = "/tmp/tcl.tmp.XXXXXX";
+ mode_t mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
if (argc >= 1) {
template = Jim_String(argv[0]);
@@ -496,6 +497,7 @@ static int file_cmd_tempfile(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
filename = Jim_StrDup(template);
fd = mkstemp(filename);
+ umask(mask);
if (fd < 0) {
Jim_SetResultString(interp, "Failed to create tempfile", -1);
Jim_Free(filename);