summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2011-06-10 18:47:41 -0400
committerRay Strode <rstrode@redhat.com>2012-02-21 17:39:34 -0500
commit2895a09bc0666cf7b26190bdb648ad1f52c174da (patch)
treef43bcef5567e4517b8bf3fa8e3e7433f97edc243
parentea6894303f7ebadb98bf4bf70a79c5bf6ef7cb90 (diff)
downloadgconf-2895a09bc0666cf7b26190bdb648ad1f52c174da.tar.gz
daemon: store daemon data in XDG_RUNTIME_DIR
If XDG_RUNTIME_DIR is available it's a much better directory than /tmp since it ensures there's no DoS possibilities https://bugzilla.gnome.org/show_bug.cgi?id=652289
-rw-r--r--gconf/gconf-internals.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/gconf/gconf-internals.c b/gconf/gconf-internals.c
index 9550b1a7..784bcb3f 100644
--- a/gconf/gconf-internals.c
+++ b/gconf/gconf-internals.c
@@ -2796,13 +2796,18 @@ gconf_get_daemon_dir (void)
const char *tmpdir;
subdir = g_strconcat ("gconfd-", g_get_user_name (), NULL);
-
- if (g_getenv ("GCONF_TMPDIR")) {
- tmpdir = g_getenv ("GCONF_TMPDIR");
- } else {
- tmpdir = g_get_tmp_dir ();
- }
-
+
+ if (g_getenv ("GCONF_TMPDIR"))
+ tmpdir = g_getenv ("GCONF_TMPDIR");
+ else if (g_getenv ("XDG_RUNTIME_DIR"))
+ {
+ g_free (subdir);
+ subdir = g_strdup ("gconfd");
+ tmpdir = g_getenv ("XDG_RUNTIME_DIR");
+ }
+ else
+ tmpdir = g_get_tmp_dir ();
+
s = g_build_filename (tmpdir, subdir, NULL);
g_free (subdir);