diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2012-05-05 09:30:51 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2012-05-05 09:30:51 +0300 |
commit | 68ee9c0807fd3c9a66c649aa7bd3bebacfb0dff0 (patch) | |
tree | ac63807666eaf2ebc05379c848806981ba536332 /libgfortran/runtime | |
parent | 9154c66213636f44954feb8d73257560370c11c2 (diff) | |
download | gcc-68ee9c0807fd3c9a66c649aa7bd3bebacfb0dff0.zip gcc-68ee9c0807fd3c9a66c649aa7bd3bebacfb0dff0.tar.gz gcc-68ee9c0807fd3c9a66c649aa7bd3bebacfb0dff0.tar.bz2 |
Fix handling of temporary files.
2012-05-05 Janne Blomqvist <jb@gcc.gnu.org>
* gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain
algorithm for choosing temp directory.
2012-05-05 Janne Blomqvist <jb@gcc.gnu.org>
* config.h.in: Regenerated.
* configure: Regenerated.
* configure.ac: Add checks for getegid and __secure_getenv.
* io/unix.c (P_tmpdir): Fallback definition for macro.
(tempfile_open): New function.
(tempfile): Use secure_getenv, call tempfile_open to try each
directory in turn.
* libgfortran.h (DEFAULT_TMPDIR): Remove macro.
(secure_getenv): New macro/prototype.
* runtime/environ.c (secure_getenv): New function.
(variable_table): Rename GFORTRAN_TMPDIR to TMPDIR.
* runtime/main.c (find_addr2line): Use secure_getenv.
From-SVN: r187190
Diffstat (limited to 'libgfortran/runtime')
-rw-r--r-- | libgfortran/runtime/environ.c | 18 | ||||
-rw-r--r-- | libgfortran/runtime/main.c | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/libgfortran/runtime/environ.c b/libgfortran/runtime/environ.c index 7782cee..bcb91f4 100644 --- a/libgfortran/runtime/environ.c +++ b/libgfortran/runtime/environ.c @@ -56,6 +56,19 @@ variable; static void init_unformatted (variable *); + +#ifdef FALLBACK_SECURE_GETENV +char * +secure_getenv (const char *name) +{ + if ((getuid () == geteuid ()) && (getgid () == getegid ())) + return getenv (name); + else + return NULL; +} +#endif + + /* print_spaces()-- Print a particular number of spaces. */ static void @@ -285,9 +298,8 @@ static variable variable_table[] = { "Unit number that will be preconnected to standard error\n" "(No preconnection if negative)", 0}, - {"GFORTRAN_TMPDIR", 0, NULL, init_string, show_string, - "Directory for scratch files. Overrides the TMP environment variable\n" - "If TMP is not set " DEFAULT_TEMPDIR " is used.", 0}, + {"TMPDIR", 0, NULL, init_string, show_string, + "Directory for scratch files.", 0}, {"GFORTRAN_UNBUFFERED_ALL", 0, &options.all_unbuffered, init_boolean, show_boolean, diff --git a/libgfortran/runtime/main.c b/libgfortran/runtime/main.c index 79659e5..72c32fc 100644 --- a/libgfortran/runtime/main.c +++ b/libgfortran/runtime/main.c @@ -163,7 +163,7 @@ find_addr2line (void) { #ifdef HAVE_ACCESS #define A2L_LEN 10 - char *path = getenv ("PATH"); + char *path = secure_getenv ("PATH"); if (!path) return; size_t n = strlen (path); |