[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#689361: marked as done (unblock: at-spi2-atk/2.5.3-2)



Your message dated Sun, 14 Oct 2012 16:03:10 +0100
with message-id <490cce03024190b85d6e541815595a33@mail.adsl.funky-badger.org>
and subject line Re: Bug#689361: unblock: at-spi2-atk/2.5.3-2
has caused the Debian Bug report #689361,
regarding unblock: at-spi2-atk/2.5.3-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
689361: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689361
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hello,

Please unblock package at-spi2-atk

unblock at-spi2-atk/2.5.3-2

Upstream has fixed a lot of reference leaks (which would translate into
memory leaks in applications, including long-running ones such as the
desktop).  These are recorded in patches/leak*.

In addition, bug #688094 shows that at-spi2-atk leaves a lot of sockets
in the user's home directory, and even root-owned ones for gksu
applications. This is mitigated by the two upstream fixes recorded in
patches/socket*

Lastly, there are a couple translation updates in patches/lv and
patches/pl

Samuel

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.0.4 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

-- 
Samuel
<m> argh, pi est plus grand que 2. Ca casse tout
 -+- #ens-mim -+-
diff -Nru at-spi2-atk-2.5.3/debian/changelog at-spi2-atk-2.5.3/debian/changelog
--- at-spi2-atk-2.5.3/debian/changelog	2012-06-29 04:35:37.000000000 +0200
+++ at-spi2-atk-2.5.3/debian/changelog	2012-09-30 17:46:16.000000000 +0200
@@ -1,3 +1,13 @@
+at-spi2-atk (2.5.3-2) unstable; urgency=low
+
+  * patches/leak*: Cherry-pick from upstream: fix reference leaks.
+  * patches/socket*: Cherry-pick from upstream: mitigate at-spi socket
+    creation. (Closes: #688094)
+  * patches/lv: Cherry-pick from upstream: lv translation update.
+  * patches/pl: Cherry-pick from upstream: pl translation update.
+
+ -- Samuel Thibault <sthibault@debian.org>  Sun, 30 Sep 2012 16:28:06 +0200
+
 at-spi2-atk (2.5.3-1) unstable; urgency=low
 
   [ Samuel Thibault ]
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak1 at-spi2-atk-2.5.3/debian/patches/leak1
--- at-spi2-atk-2.5.3/debian/patches/leak1	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak1	2012-09-30 17:30:26.000000000 +0200
@@ -0,0 +1,22 @@
+commit e4a899792e389b9d733f1a74702a8f4158f93acc
+Author: Cosimo Cecchi <cosimoc@gnome.org>
+Date:   Mon Jul 2 16:14:12 2012 -0400
+
+    atk-adaptor: plug a refcount leak
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=679285
+
+diff --git a/atk-adaptor/adaptors/accessible-adaptor.c b/atk-adaptor/adaptors/accessible-adaptor.c
+index 25d7823..77aacbb 100644
+--- a/atk-adaptor/adaptors/accessible-adaptor.c
++++ b/atk-adaptor/adaptors/accessible-adaptor.c
+@@ -337,6 +337,8 @@ impl_GetRelationSet (DBusConnection * bus,
+     }
+   dbus_message_iter_close_container (&iter, &iter_array);
+ oom:
++  if (set)
++    g_object_unref (set);
+   // TODO: handle out of memory */
+   return reply;
+ }
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak2 at-spi2-atk-2.5.3/debian/patches/leak2
--- at-spi2-atk-2.5.3/debian/patches/leak2	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak2	2012-09-30 17:30:31.000000000 +0200
@@ -0,0 +1,21 @@
+commit 246c99e7f62d5009d5bd4b09c491b74afddae9a6
+Author: Cosimo Cecchi <cosimoc@gnome.org>
+Date:   Mon Jul 2 16:14:48 2012 -0400
+
+    atk-adaptor: plug a refcount leak
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=679285
+
+diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c
+index d19f451..1cbda23 100644
+--- a/atk-adaptor/event.c
++++ b/atk-adaptor/event.c
+@@ -1017,6 +1017,7 @@ children_changed_event_listener (GSignalInvocationHint * signal_hint,
+                                             detail1);
+       emit_event (accessible, ITF_EVENT_OBJECT, name, minor, detail1, detail2,
+                   "(so)", ao, append_object);
++      g_object_unref (ao);
+     }
+   else
+     {
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak3 at-spi2-atk-2.5.3/debian/patches/leak3
--- at-spi2-atk-2.5.3/debian/patches/leak3	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak3	2012-09-30 17:30:34.000000000 +0200
@@ -0,0 +1,57 @@
+commit d1e52eb847dcabf7a2be07dbd71cfcb4e0805306
+Author: Cosimo Cecchi <cosimoc@gnome.org>
+Date:   Thu Sep 13 13:37:50 2012 -0400
+
+    atk-adaptor: plug some refcount leaks
+    
+    cache->add_traversal holds GObject references, so when we remove/pop
+    items from it, we should also drop the reference, unless it's transfered
+    to another queue.
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=683979
+
+diff --git a/atk-adaptor/accessible-cache.c b/atk-adaptor/accessible-cache.c
+index afaedb0..3a30b51 100644
+--- a/atk-adaptor/accessible-cache.c
++++ b/atk-adaptor/accessible-cache.c
+@@ -180,7 +180,10 @@ remove_object (GObject * source, GObject * gobj, gpointer data)
+       g_hash_table_remove (cache->objects, gobj);
+     }
+   else
+-    g_queue_remove (cache->add_traversal, gobj);
++    {
++      g_queue_remove (cache->add_traversal, gobj);
++      g_object_unref (gobj);
++    }
+ }
+ 
+ static void
+@@ -277,12 +280,14 @@ add_pending_items (gpointer data)
+   while (!g_queue_is_empty (cache->add_traversal))
+     {
+       AtkStateSet *set;
+-      
++
++      /* cache->add_traversal holds a ref to current */
+       current = g_queue_pop_head (cache->add_traversal);
+       set = atk_object_ref_state_set (current);
+ 
+       if (set && !atk_state_set_contains_state (set, ATK_STATE_TRANSIENT))
+         {
++          /* transfer the ref into to_add */
+ 	  g_queue_push_tail (to_add, current);
+           if (!spi_cache_in (cache, G_OBJECT (current)) &&
+               !atk_state_set_contains_state  (set, ATK_STATE_MANAGES_DESCENDANTS) &&
+@@ -291,6 +296,11 @@ add_pending_items (gpointer data)
+               append_children (current, cache->add_traversal);
+             }
+         }
++      else
++        {
++          /* drop the ref for the removed object */
++          g_object_unref (current);
++        }
+ 
+       if (set)
+         g_object_unref (set);
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak4 at-spi2-atk-2.5.3/debian/patches/leak4
--- at-spi2-atk-2.5.3/debian/patches/leak4	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak4	2012-09-30 17:30:39.000000000 +0200
@@ -0,0 +1,46 @@
+commit 1b1fa3c23337e39eba5adfbf689302a9163d4c01
+Author: William Jon McCann <jmccann@redhat.com>
+Date:   Fri Sep 14 16:39:58 2012 -0400
+
+    Don't leak strings
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=684077
+
+diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
+index e3056e9..738c10b 100644
+--- a/atk-adaptor/bridge.c
++++ b/atk-adaptor/bridge.c
+@@ -249,7 +249,9 @@ register_reply (DBusPendingCall *pending, void *user_data)
+           dbus_message_iter_next (&iter_struct);
+           dbus_message_iter_get_basic (&iter_struct, &obj_path);
+ 
++          g_free (app->desktop_name);
+           app->desktop_name = g_strdup (app_name);
++          g_free (app->desktop_path);
+           app->desktop_path = g_strdup (obj_path);
+         }
+     }
+@@ -275,8 +277,8 @@ register_application (SpiBridge * app)
+ 
+   /* These will be overridden when we get a reply, but in practice these
+      defaults should always be correct */
+-  app->desktop_name = ATSPI_DBUS_NAME_REGISTRY;
+-  app->desktop_path = ATSPI_DBUS_PATH_ROOT;
++  app->desktop_name = g_strdup (ATSPI_DBUS_NAME_REGISTRY);
++  app->desktop_path = g_strdup (ATSPI_DBUS_PATH_ROOT);
+ 
+   message = dbus_message_new_method_call (SPI_DBUS_NAME_REGISTRY,
+                                           ATSPI_DBUS_PATH_ROOT,
+@@ -339,6 +341,11 @@ deregister_application (SpiBridge * app)
+     g_free (app->app_tmp_dir);
+     app->app_tmp_dir = NULL;
+   }
++
++  g_free (app->desktop_name);
++  app->desktop_name = NULL;
++  g_free (app->desktop_path);
++  app->desktop_path = NULL;
+ }
+ 
+ /*---------------------------------------------------------------------------*/
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak5 at-spi2-atk-2.5.3/debian/patches/leak5
--- at-spi2-atk-2.5.3/debian/patches/leak5	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak5	2012-09-30 17:30:44.000000000 +0200
@@ -0,0 +1,21 @@
+commit 5431ebbe7f471a01014236100ec803631dc3941b
+Author: William Jon McCann <jmccann@redhat.com>
+Date:   Fri Sep 14 17:11:37 2012 -0400
+
+    Don't leak message
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=684077
+
+diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
+index 738c10b..a66f0e2 100644
+--- a/atk-adaptor/bridge.c
++++ b/atk-adaptor/bridge.c
+@@ -291,6 +291,7 @@ register_application (SpiBridge * app)
+     if (!dbus_connection_send_with_reply (app->bus, message, &pending, -1)
+         || !pending)
+     {
++        dbus_message_unref (message);
+         return FALSE;
+     }
+ 
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak6 at-spi2-atk-2.5.3/debian/patches/leak6
--- at-spi2-atk-2.5.3/debian/patches/leak6	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak6	2012-09-30 17:30:49.000000000 +0200
@@ -0,0 +1,23 @@
+commit e1015608a0f79178be66220f17d1af5fab030bfa
+Author: William Jon McCann <jmccann@redhat.com>
+Date:   Fri Sep 14 17:29:10 2012 -0400
+
+    Don't leak pending calls
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=684077
+
+diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
+index a66f0e2..99a6a36 100644
+--- a/atk-adaptor/bridge.c
++++ b/atk-adaptor/bridge.c
+@@ -291,6 +291,9 @@ register_application (SpiBridge * app)
+     if (!dbus_connection_send_with_reply (app->bus, message, &pending, -1)
+         || !pending)
+     {
++        if (pending)
++          dbus_pending_call_unref (pending);
++
+         dbus_message_unref (message);
+         return FALSE;
+     }
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/leak7 at-spi2-atk-2.5.3/debian/patches/leak7
--- at-spi2-atk-2.5.3/debian/patches/leak7	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/leak7	2012-09-30 17:30:53.000000000 +0200
@@ -0,0 +1,26 @@
+commit da10ef8b744bf7b04d18bda4cead3a9d71548a3e
+Author: Mike Gorse <mgorse@suse.com>
+Date:   Mon Sep 17 19:06:40 2012 -0500
+
+    Fix an errant g_object_unref
+    
+    If an object is deregistered but not in the cache, then only unref it if
+    it was found in the queue of objects to be added (ie, it is possible
+    that it is leased, rather than queued to be cached, in which case it
+    should not be unrefed).
+
+diff --git a/atk-adaptor/accessible-cache.c b/atk-adaptor/accessible-cache.c
+index 3a30b51..be247e4 100644
+--- a/atk-adaptor/accessible-cache.c
++++ b/atk-adaptor/accessible-cache.c
+@@ -179,9 +179,8 @@ remove_object (GObject * source, GObject * gobj, gpointer data)
+       g_signal_emit (cache, cache_signals [OBJECT_REMOVED], 0, gobj);
+       g_hash_table_remove (cache->objects, gobj);
+     }
+-  else
++  else if (g_queue_remove (cache->add_traversal, gobj))
+     {
+-      g_queue_remove (cache->add_traversal, gobj);
+       g_object_unref (gobj);
+     }
+ }
diff -Nru at-spi2-atk-2.5.3/debian/patches/lv at-spi2-atk-2.5.3/debian/patches/lv
--- at-spi2-atk-2.5.3/debian/patches/lv	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/lv	2012-09-30 17:24:55.000000000 +0200
@@ -0,0 +1,28 @@
+commit c74fce065b40f0fb2e82bf740bf7f2744eda4466
+Author: Rūdolfs Mazurs <rudolfsm@src.gnome.org>
+Date:   Sat Sep 1 00:09:41 2012 +0300
+
+    Updated Latvian translation
+
+diff --git a/po/lv.po b/po/lv.po
+index 2cde3f7..3bdca61 100644
+--- a/po/lv.po
++++ b/po/lv.po
+@@ -1,7 +1,7 @@
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+ # This file is distributed under the same license as the PACKAGE package.
+ #
+-# Rudolfs <rudolfs.mazurs@gmail.com>, 2011.
++# Rudolfs <rudolfs.mazurs@gmail.com>, 2011, 2012.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: \n"
+@@ -21,7 +21,7 @@ msgstr ""
+ #: ../atk-adaptor/bridge.c:538
+ #, c-format
+ msgid "atk-bridge: Couldn't listen on dbus server: %s"
+-msgstr "atk-bridge: neizdevās klausīties uz dbus servera: %s"
++msgstr "atk-bridge: neizdevās klausīties dbus serveri — %s"
+ 
+ #~ msgid "Enable DBus-based AT-SPI infrastructure"
+ #~ msgstr "Ieslēgt AT-SPI infrastruktūru uz DBus- pamata"
diff -Nru at-spi2-atk-2.5.3/debian/patches/pl at-spi2-atk-2.5.3/debian/patches/pl
--- at-spi2-atk-2.5.3/debian/patches/pl	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/pl	2012-09-30 17:24:55.000000000 +0200
@@ -0,0 +1,20 @@
+commit 8149343f5034b1aca8d25db4ea24507f2fd9f06a
+Author: Piotr Drąg <piotrdrag@gmail.com>
+Date:   Sat Sep 1 20:50:35 2012 +0200
+
+    Updated Polish translation
+
+diff --git a/po/pl.po b/po/pl.po
+index 2af1133..d9f1b83 100644
+--- a/po/pl.po
++++ b/po/pl.po
+@@ -4,6 +4,9 @@
+ # pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
+ # gnomepl@aviary.pl
+ # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
++# Artur Flinta <aflinta@at.kernel.pl>, 2003.
++# Piotr Drąg <piotrdrag@gmail.com>, 2010-2011.
++# Aviary.pl <gnomepl@aviary.pl>, 2010-2011.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: at-spi2-atk\n"
diff -Nru at-spi2-atk-2.5.3/debian/patches/series at-spi2-atk-2.5.3/debian/patches/series
--- at-spi2-atk-2.5.3/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/series	2012-09-30 17:31:24.000000000 +0200
@@ -0,0 +1,11 @@
+leak1
+leak2
+leak3
+leak4
+leak5
+leak6
+leak7
+socket1
+socket2
+lv
+pl
diff -Nru at-spi2-atk-2.5.3/debian/patches/socket1 at-spi2-atk-2.5.3/debian/patches/socket1
--- at-spi2-atk-2.5.3/debian/patches/socket1	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/socket1	2012-09-30 17:31:11.000000000 +0200
@@ -0,0 +1,49 @@
+commit 7fc3c0ed67c52371855c5db456f26f27dfd22126
+Author: Mike Gorse <mgorse@suse.com>
+Date:   Tue Jul 3 20:52:25 2012 -0500
+
+    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;
+
diff -Nru at-spi2-atk-2.5.3/debian/patches/socket2 at-spi2-atk-2.5.3/debian/patches/socket2
--- at-spi2-atk-2.5.3/debian/patches/socket2	1970-01-01 01:00:00.000000000 +0100
+++ at-spi2-atk-2.5.3/debian/patches/socket2	2012-09-30 17:31:16.000000000 +0200
@@ -0,0 +1,174 @@
+commit 6fbb1ba2c5281706525ae93bd78ee6cd1f1c9bc8
+Author: Mike Gorse <mgorse@suse.com>
+Date:   Thu Jul 5 19:58:43 2012 -0500
+
+    Only create a directory and a socket when requested
+    
+    Currently, atk-bridge clutters XDG_RUNTIME_DIR with directories for sockets,
+    which is especially annoying since gtk currently does not call
+    atk_bridge_adaptor_cleanup, so the directories never go away. This change does
+    not really solve the problem--it only hides it from users who do not really
+    need AT-SPI--but, nevertheless, there is no reason to create a directory or a
+    socket if nothing has requested it, so doing this lazily makes sense.
+
+diff --git a/atk-adaptor/adaptors/application-adaptor.c b/atk-adaptor/adaptors/application-adaptor.c
+index dc2231d..260a4d7 100644
+--- a/atk-adaptor/adaptors/application-adaptor.c
++++ b/atk-adaptor/adaptors/application-adaptor.c
+@@ -104,6 +104,9 @@ DBusMessage *reply;
+   if (bus == spi_global_app_data->bus)
+     spi_atk_add_client (dbus_message_get_sender (msg));
+ 
++  if (!spi_global_app_data->app_bus_addr)
++    spi_atk_create_socket (spi_global_app_data);
++
+ reply = dbus_message_new_method_return(msg);
+ if (reply)
+     {
+diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
+index 9880639..08dfbd4 100644
+--- a/atk-adaptor/bridge.c
++++ b/atk-adaptor/bridge.c
+@@ -297,26 +297,6 @@ register_application (SpiBridge * app)
+   if (message)
+     dbus_message_unref (message);
+ 
+-#ifndef DISABLE_P2P
+-  if (getuid () != 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;
+-    }
+-  }
+-
+-  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;
+ }
+ 
+@@ -539,37 +519,6 @@ new_connection_cb (DBusServer *server, DBusConnection *con, void *data)
+   spi_global_app_data->direct_connections = g_list_append (spi_global_app_data->direct_connections, con);
+ }
+ 
+-static int
+-setup_bus (void)
+-{
+-#ifndef DISABLE_P2P
+-  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)
+-  {
+-    g_warning ("atk-bridge: Couldn't listen on dbus server: %s", err.message);
+-    dbus_error_init (&err);
+-    spi_global_app_data->app_bus_addr [0] = '\0';
+-    g_main_context_unref (spi_global_app_data->main_context);
+-    spi_global_app_data->main_context = NULL;
+-    return -1;
+-  }
+-
+-  atspi_dbus_server_setup_with_g_main(server, NULL);
+-  dbus_server_set_new_connection_function(server, new_connection_cb, NULL, NULL);
+-
+-  spi_global_app_data->server = server;
+-#endif
+-
+-  return 0;
+-}
+-
+ 
+ gchar *atspi_dbus_name = NULL;
+ static gboolean atspi_no_register = FALSE;
+@@ -724,6 +673,55 @@ signal_filter (DBusConnection *bus, DBusMessage *message, void *user_data)
+   return result;
+ }
+ 
++int
++spi_atk_create_socket (SpiBridge *app)
++{
++#ifndef DISABLE_P2P
++  DBusServer *server;
++  DBusError err;
++
++  if (getuid () != 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;
++    }
++  }
++
++  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 ());
++
++  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)
++  {
++    g_warning ("atk-bridge: Couldn't listen on dbus server: %s", err.message);
++    dbus_error_init (&err);
++    spi_global_app_data->app_bus_addr [0] = '\0';
++    g_main_context_unref (spi_global_app_data->main_context);
++    spi_global_app_data->main_context = NULL;
++    return -1;
++  }
++
++  atspi_dbus_server_setup_with_g_main(server, NULL);
++  dbus_server_set_new_connection_function(server, new_connection_cb, NULL, NULL);
++
++  spi_global_app_data->server = server;
++#endif
++
++  return 0;
++}
++
+ /*
+  * Checks the status of the environment variables
+  *
+@@ -896,8 +894,6 @@ atk_bridge_adaptor_init (gint * argc, gchar ** argv[])
+   else
+     get_registered_event_listeners (spi_global_app_data);
+ 
+-  setup_bus();
+-
+   return 0;
+ }
+ 
+diff --git a/atk-adaptor/bridge.h b/atk-adaptor/bridge.h
+index 2a79c6d..ddc79f5 100644
+--- a/atk-adaptor/bridge.h
++++ b/atk-adaptor/bridge.h
+@@ -70,6 +70,8 @@ extern SpiBridge *spi_global_app_data;
+ void spi_atk_add_client (const char *bus_name);
+ void spi_atk_remove_client (const char *bus_name);
+ 
++int spi_atk_create_socket (SpiBridge *app);
++
+ G_END_DECLS
+ 
+ #endif /* BRIDGE_H */

--- End Message ---
--- Begin Message ---
On 01.10.2012 22:48, Samuel Thibault wrote:
Please unblock package at-spi2-atk

unblock at-spi2-atk/2.5.3-2

Upstream has fixed a lot of reference leaks (which would translate into
memory leaks in applications, including long-running ones such as the
desktop).  These are recorded in patches/leak*.

In addition, bug #688094 shows that at-spi2-atk leaves a lot of sockets
in the user's home directory, and even root-owned ones for gksu
applications. This is mitigated by the two upstream fixes recorded in
patches/socket*

Unblocked; thanks.

Regards,

Adam

--- End Message ---

Reply to: