ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #01394
[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