eina_file: Give TMPDIR presedence over XDG_RUNTIME_DIR when defined
authorStefan Schmidt <s.schmidt@samsung.com>
Wed, 29 Oct 2014 14:51:11 +0000 (15:51 +0100)
committerStefan Schmidt <s.schmidt@samsung.com>
Wed, 29 Oct 2014 14:51:11 +0000 (15:51 +0100)
XDG_RUNTIME_DIR gives us a nice securty benefit by only allowing the
same user to read wand write files.

In some configuration this is problematic though. If one looks at the
bug report this fixes  for example you can see that there are build
scripts that use a special build user.

The way this has always worked on unix is that you can define your
own tempdir with TMPDIR. When I was making the original change towards
XDG_RUNTIME_DIR I expected some trouble with it but it worked quite
well so far.

To avoid breaking scripts out there and maybe configurations we
haven't tested yet give TMPDIR precedence over XDG_RUNTIME_DIR.

Fixes T1766

src/lib/eina/eina_file_common.c

index 2a2e3e4d692b7304aa3e0c7df476dbbc821ff18a..5c2b87a3ca5750dceb6c24156bb1b1e915fdf64c 100644 (file)
@@ -908,8 +908,8 @@ eina_file_mkstemp(const char *templatename, Eina_Tmpstr **path)
 #if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
    if (getuid() == geteuid())
 #endif
-     tmpdir = getenv("XDG_RUNTIME_DIR");
-   if (!tmpdir) tmpdir = getenv("TMPDIR");
+     tmpdir = getenv("TMPDIR");
+   if (!tmpdir) tmpdir = getenv("XDG_RUNTIME_DIR");
    if (!tmpdir) tmpdir = "/tmp";
 #else
    tmpdir = (char *)evil_tmpdir_get();