[at-spi2-atk] Use XDG_RUNTIME_DIR to hold sockets, and do not make a world-writable dir
- From: Mike Gorse <mgorse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [at-spi2-atk] Use XDG_RUNTIME_DIR to hold sockets, and do not make a world-writable dir
- Date: Mon, 25 Jun 2012 22:23:45 +0000 (UTC)
commit e4f3eee2e137cd34cd427875365f458c65458164
Author: Mike Gorse <mgorse suse com>
Date: Thu Jun 21 16:56:40 2012 -0500
Use XDG_RUNTIME_DIR to hold sockets, and do not make a world-writable dir
If we use XDG_RUNTIME_DIR, then the directory should be owned by the
appropriate user, so it should not need to be world-writable. Hopefully this
won't break accessibility for administrative apps on some distro.
https://bugzilla.gnome.org/show_bug.cgi?id=678348
atk-adaptor/adaptors/application-adaptor.c | 2 +
atk-adaptor/bridge.c | 36 ++++++++++++++++++++-------
atk-adaptor/bridge.h | 3 +-
3 files changed, 30 insertions(+), 11 deletions(-)
---
diff --git a/atk-adaptor/adaptors/application-adaptor.c b/atk-adaptor/adaptors/application-adaptor.c
index 1b85969..dc2231d 100644
--- a/atk-adaptor/adaptors/application-adaptor.c
+++ b/atk-adaptor/adaptors/application-adaptor.c
@@ -110,6 +110,8 @@ if (reply)
const char *retval = (g_getenv ("AT_SPI_CLIENT") ?
"":
spi_global_app_data->app_bus_addr);
+ if (!retval)
+ retval = "";
dbus_message_append_args(reply, DBUS_TYPE_STRING, &retval, DBUS_TYPE_INVALID);
}
diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
index 69527c6..8c9d6bc 100644
--- a/atk-adaptor/bridge.c
+++ b/atk-adaptor/bridge.c
@@ -270,7 +270,6 @@ register_application (SpiBridge * app)
DBusMessageIter iter;
DBusError error;
DBusPendingCall *pending;
- const int max_addr_length = 128; /* should be long enough */
dbus_error_init (&error);
@@ -298,16 +297,16 @@ register_application (SpiBridge * app)
if (message)
dbus_message_unref (message);
- /* could this be better, we accept some amount of race in getting the temp name*/
- /* make sure the directory exists */
- mkdir ("/tmp/at-spi2/", S_IRWXU|S_IRWXG|S_IRWXO|S_ISVTX);
- chmod ("/tmp/at-spi2/", S_IRWXU|S_IRWXG|S_IRWXO|S_ISVTX);
- app->app_bus_addr = g_malloc(max_addr_length * sizeof(char));
#ifndef DISABLE_P2P
- sprintf (app->app_bus_addr, "unix:path=/tmp/at-spi2/socket-%d-%d", getpid(),
- rand());
-#else
- app->app_bus_addr [0] = '\0';
+ 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);
#endif
return TRUE;
@@ -338,6 +337,20 @@ deregister_application (SpiBridge * app)
dbus_connection_send (app->bus, message, NULL);
if (message)
dbus_message_unref (message);
+
+ if (app->app_bus_addr)
+ {
+ unlink (app->app_bus_addr);
+ g_free (app->app_bus_addr);
+ app->app_bus_addr = NULL;
+ }
+
+ if (app->app_tmp_dir)
+ {
+ rmdir (app->app_tmp_dir);
+ g_free (app->app_tmp_dir);
+ app->app_tmp_dir = NULL;
+ }
}
/*---------------------------------------------------------------------------*/
@@ -525,6 +538,9 @@ setup_bus (void)
DBusServer *server;
DBusError err;
+ if (!spi_global_app_data->app_bus_addr)
+ return -1;
+
dbus_error_init(&err);
server = dbus_server_listen(spi_global_app_data->app_bus_addr, &err);
if (server == NULL)
diff --git a/atk-adaptor/bridge.h b/atk-adaptor/bridge.h
index c24183e..2a79c6d 100644
--- a/atk-adaptor/bridge.h
+++ b/atk-adaptor/bridge.h
@@ -59,7 +59,8 @@ struct _SpiBridge
*/
gchar *desktop_name;
gchar *desktop_path;
-char *app_bus_addr;
+gchar *app_tmp_dir;
+gchar *app_bus_addr;
GList *events;
gboolean events_initialized;
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]