aboutsummaryrefslogtreecommitdiff
path: root/jim-exec.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-exec.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-exec.c')
-rw-r--r--jim-exec.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/jim-exec.c b/jim-exec.c
index 6856355..a6fdb02 100644
--- a/jim-exec.c
+++ b/jim-exec.c
@@ -126,6 +126,7 @@ int Jim_execInit(Jim_Interp *interp)
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
+ #include <sys/stat.h>
typedef int fdtype;
typedef int pidtype;
@@ -1576,8 +1577,9 @@ static int JimRewindFd(int fd)
static int JimCreateTemp(Jim_Interp *interp, const char *contents, int len)
{
char inName[] = "/tmp/tcl.tmp.XXXXXX";
-
+ mode_t mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
int fd = mkstemp(inName);
+ umask(mask);
if (fd == JIM_BAD_FD) {
Jim_SetResultErrno(interp, "couldn't create temp file");
return -1;