eina debug monitor - dont use XDG_RUNTIME_DIR if setuid
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Wed, 8 Feb 2017 11:15:10 +0000 (20:15 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Wed, 8 Feb 2017 12:19:39 +0000 (21:19 +0900)
avoids possible issues with debug monitor + setuid

src/lib/eina/eina_debug_monitor.c

index 06e939b..1044d53 100644 (file)
@@ -650,10 +650,16 @@ _eina_debug_monitor_signal_init(void)
 static const char *
 _socket_home_get(void)
 {
+   static char *dir;
+
+   if (dir) return dir;
    // get possible debug daemon socket directory base
-   const char *dir = getenv("XDG_RUNTIME_DIR");
-   if (!dir) dir = eina_environment_home_get();
-   if (!dir) dir = eina_environment_tmp_get();
+#if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
+   if (getuid() == geteuid()) dir = getenv("XDG_RUNTIME_DIR");
+#endif
+   if (!dir) dir = (char *)eina_environment_home_get();
+   if (!dir) dir = (char *)eina_environment_tmp_get();
+   dir = strdup(dir);
    return dir;
 }