From: Tobias Burnus Date: Wed, 10 Oct 2012 18:42:34 +0000 (+0200) Subject: re PR fortran/54878 (libgfortran issues found by the Coverity scanner) X-Git-Tag: misc/gccgo-go1_1_2~260 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0ceafd19b0a33df40493df9f84f4a2866f6be5c;p=thirdparty%2Fgcc.git re PR fortran/54878 (libgfortran issues found by the Coverity scanner) 2012-10-10 Tobias Burnus PR fortran/54878 * io/unix.c (tempfile_open): Set umask before calling mkstemp. From-SVN: r192325 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 74d6294b39da..d52648688f7f 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2012-10-10 Tobias Burnus + + PR fortran/54878 + * io/unix.c (tempfile_open): Set umask before calling mkstemp. + 2012-10-06 Janne Blomqvist * configure.ac: Check for presence of secure_getenv. diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 805d4bbd205f..9d2e9d850879 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -1051,6 +1051,9 @@ tempfile_open (const char *tempdir, char **fname) { int fd; const char *slash = "/"; +#if defined(HAVE_UMASK) && defined(HAVE_MKSTEMP) + mode_t mode_mask; +#endif if (!tempdir) return -1; @@ -1072,8 +1075,17 @@ tempfile_open (const char *tempdir, char **fname) snprintf (template, tempdirlen + 23, "%s%sgfortrantmpXXXXXX", tempdir, slash); +#ifdef HAVE_UMASK + /* Temporarily set the umask such that the file has 0600 permissions. */ + mode_mask = umask (S_IXUSR | S_IRWXG | S_IRWXO); +#endif + fd = mkstemp (template); +#ifdef HAVE_UMASK + (void) umask (mode_mask); +#endif + #else /* HAVE_MKSTEMP */ fd = -1; int count = 0;