← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/bug543393 into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/bug543393 into lp:indicator-session.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)
Related bugs:
  #543393 indicator-session-service crashed with SIGSEGV in g_cclosure_marshal_VOID()
  https://bugs.launchpad.net/bugs/543393


Passing the right value to the callback, also adding protections so
these aren't crashers next time.
-- 
https://code.launchpad.net/~ted/indicator-session/bug543393/+merge/22885
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/session-service.c'
--- src/session-service.c	2010-03-25 18:09:23 +0000
+++ src/session-service.c	2010-04-06 17:10:35 +0000
@@ -545,7 +545,7 @@
           dbusmenu_menuitem_property_set (guest_mi, USER_ITEM_PROP_NAME, _("Guest Session"));
           dbusmenu_menuitem_property_set_bool (guest_mi, USER_ITEM_PROP_LOGGED_IN, FALSE);
           dbusmenu_menuitem_child_append (root, guest_mi);
-          g_signal_connect (G_OBJECT (guest_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_guest_session), NULL);
+          g_signal_connect (G_OBJECT (guest_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_guest_session), service);
           users_service_dbus_set_guest_item(service, guest_mi);
         }
 

=== modified file 'src/users-service-dbus.c'
--- src/users-service-dbus.c	2010-03-17 20:20:21 +0000
+++ src/users-service-dbus.c	2010-04-06 17:10:35 +0000
@@ -550,6 +550,7 @@
 add_sessions_for_user (UsersServiceDbus *self,
                        UserData         *user)
 {
+  g_return_if_fail(IS_USERS_SERVICE_DBUS(self));
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
   GError          *error;
   GPtrArray       *sessions;
@@ -582,6 +583,7 @@
                           const gchar      *session_id,
                           UsersServiceDbus *service)
 {
+  g_return_if_fail(IS_USERS_SERVICE_DBUS(service));
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (service);
   uid_t          uid;
   gboolean       res;
@@ -627,6 +629,7 @@
                             const gchar      *session_id,
                             UsersServiceDbus *service)
 {
+  g_return_if_fail(IS_USERS_SERVICE_DBUS(service));
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (service);
   UserData *user;
   gchar    *username;
@@ -671,6 +674,7 @@
 static void
 sync_users (UsersServiceDbus *self)
 {
+  g_return_if_fail(IS_USERS_SERVICE_DBUS(self));
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 
   if (g_hash_table_size (priv->users) > 0)
@@ -770,6 +774,7 @@
 session_is_login_window (UsersServiceDbus *self,
                          const char       *ssid)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), FALSE);
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
   DBusGProxy *proxy = NULL;
   GError     *error = NULL;
@@ -805,6 +810,7 @@
 static char *
 get_login_session (UsersServiceDbus *self)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), NULL);
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
   gboolean    can_activate;
   GError     *error = NULL;
@@ -871,6 +877,7 @@
                        const char       *seat,
                        const char       *ssid)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), FALSE);
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
   DBusMessage *message = NULL;
   DBusMessage *reply   = NULL;
@@ -1057,6 +1064,8 @@
 gint
 users_service_dbus_get_user_count (UsersServiceDbus *self)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), 0);
+
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 
   return priv->count;
@@ -1065,6 +1074,8 @@
 GList *
 users_service_dbus_get_user_list (UsersServiceDbus *self)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), NULL);
+
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 
   return g_hash_table_get_values (priv->users);
@@ -1074,6 +1085,7 @@
 gboolean
 users_service_dbus_activate_guest_session (UsersServiceDbus *self)
 {
+	g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), FALSE);
 	UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 	return org_gnome_DisplayManager_LocalDisplayFactory_switch_to_user(priv->gdm_local_proxy, "guest", NULL, NULL);
 }
@@ -1083,6 +1095,7 @@
 users_service_dbus_activate_user_session (UsersServiceDbus *self,
                                           UserData         *user)
 {
+	g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), FALSE);
 	UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 	return org_gnome_DisplayManager_LocalDisplayFactory_switch_to_user(priv->gdm_local_proxy, user->user_name, NULL, NULL);
 }
@@ -1090,6 +1103,7 @@
 gboolean
 users_service_dbus_can_activate_session (UsersServiceDbus *self)
 {
+  g_return_val_if_fail(IS_USERS_SERVICE_DBUS(self), FALSE);
   UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
   gboolean can_activate = FALSE;
   GError *error = NULL;
@@ -1124,6 +1138,7 @@
 void
 users_service_dbus_set_guest_item (UsersServiceDbus * self, DbusmenuMenuitem * mi)
 {
+	g_return_if_fail(IS_USERS_SERVICE_DBUS(self));
 	UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
 	priv->guest_item = mi;
 


Follow ups