From: Mike Gorse Date: Wed, 4 Jul 2012 01:52:25 +0000 (-0500) Subject: Don't create a sub-directory for the socket when running as root X-Git-Tag: AT_SPI2_ATK_2_12_0~100 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=commitdiff_plain;h=7fc3c0ed67c52371855c5db456f26f27dfd22126;ds=sidebyside Don't create a sub-directory for the socket when running as root If an application is running as root but within a user's runtime directory, then creating a temporary directory will result in the directory being owned by root, and the user will not have permission to search the directory to access the socket, so an AT running as the normal user will not be able to connect to the application running as root. Fixes regression introduced by the fix for BGO#678348. --- diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c index 8c9d6bc..9880639 100644 --- a/atk-adaptor/bridge.c +++ b/atk-adaptor/bridge.c @@ -298,15 +298,23 @@ register_application (SpiBridge * app) dbus_message_unref (message); #ifndef DISABLE_P2P - app->app_tmp_dir = g_build_filename (g_get_user_runtime_dir (), - "at-spi2-XXXXXX", NULL); - if (!g_mkdtemp (app->app_tmp_dir)) + if (getuid () != 0) { - g_free (app->app_tmp_dir); - app->app_tmp_dir = NULL; - return FALSE; + app->app_tmp_dir = g_build_filename (g_get_user_runtime_dir (), + "at-spi2-XXXXXX", NULL); + if (!g_mkdtemp (app->app_tmp_dir)) + { + g_free (app->app_tmp_dir); + app->app_tmp_dir = NULL; + return FALSE; + } } - app->app_bus_addr = g_strdup_printf ("unix:path=%s/socket", app->app_tmp_dir); + + if (app->app_tmp_dir) + app->app_bus_addr = g_strdup_printf ("unix:path=%s/socket", app->app_tmp_dir); + else + app->app_bus_addr = g_strdup_printf ("unix:path=%s/at-spi2-socket-%d", + g_get_user_runtime_dir (), getpid ()); #endif return TRUE;