From 5ab3eee820e97d632aa9401cbd2d25dc828ee1f0 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 12 Feb 2008 22:30:05 -0500 Subject: ck_seat_get_active_session shouldn't return a null ssid Da bus no likey nulls for object paths. Return false and set error if there is no active session. --- src/ck-manager.c | 31 +++++++++++-------------------- src/ck-seat.c | 26 +++++++++++++++++++++++--- src/test-method-access-policy | 2 +- 3 files changed, 35 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/ck-manager.c b/src/ck-manager.c index 9d9c786..6775e20 100644 --- a/src/ck-manager.c +++ b/src/ck-manager.c @@ -1880,6 +1880,8 @@ create_session_for_sender (CkManager *manager, char *ssid; CkSessionLeader *leader; + g_debug ("CkManager: create session for sender: %s", sender); + res = get_caller_info (manager, sender, &uid, @@ -1952,6 +1954,8 @@ ck_manager_get_session_for_cookie (CkManager *manager, ssid = NULL; + g_debug ("CkManager: get session for cookie"); + sender = dbus_g_method_get_sender (context); res = get_caller_info (manager, @@ -2038,12 +2042,12 @@ ck_manager_get_session_for_unix_process (CkManager *manager, char *sender; uid_t calling_uid; pid_t calling_pid; - CkProcessStat *stat; char *cookie; - GError *error; sender = dbus_g_method_get_sender (context); + g_debug ("CkManager: get session for unix process: %u", pid); + res = get_caller_info (manager, sender, &calling_uid, @@ -2060,27 +2064,12 @@ ck_manager_get_session_for_unix_process (CkManager *manager, return FALSE; } - error = NULL; - res = ck_process_stat_new_for_unix_pid (calling_pid, &stat, &error); - if (! res) { - GError *error; - g_debug ("stat on pid %d failed", calling_pid); - error = g_error_new (CK_MANAGER_ERROR, - CK_MANAGER_ERROR_GENERAL, - _("Unable to lookup information about calling process '%d'"), - calling_pid); - dbus_g_method_return_error (context, error); - g_error_free (error); - return FALSE; - } - - /* FIXME: check stuff? */ - - ck_process_stat_free (stat); - cookie = get_cookie_for_pid (manager, pid); if (cookie == NULL) { GError *error; + + g_debug ("CkManager: unable to lookup session for unix process: %u", pid); + error = g_error_new (CK_MANAGER_ERROR, CK_MANAGER_ERROR_GENERAL, _("Unable to lookup session information for process '%d'"), @@ -2114,6 +2103,8 @@ ck_manager_get_current_session (CkManager *manager, sender = dbus_g_method_get_sender (context); + g_debug ("CkManager: get current session"); + res = get_caller_info (manager, sender, &calling_uid, diff --git a/src/ck-seat.c b/src/ck-seat.c index bc39010..8d93693 100644 --- a/src/ck-seat.c +++ b/src/ck-seat.c @@ -124,17 +124,37 @@ ck_seat_get_active_session (CkSeat *seat, char **ssid, GError **error) { + gboolean ret; + char *session_id; + g_return_val_if_fail (CK_IS_SEAT (seat), FALSE); + g_debug ("CkSeat: get active session"); + session_id = NULL; + ret = FALSE; if (seat->priv->active_session != NULL) { - ck_session_get_id (seat->priv->active_session, ssid, NULL); + gboolean res; + res = ck_session_get_id (seat->priv->active_session, &session_id, NULL); + if (res) { + ret = TRUE; + } + } else { + g_debug ("CkSeat: seat has no active session"); + } + + if (! ret) { + g_set_error (error, + CK_SEAT_ERROR, + CK_SEAT_ERROR_GENERAL, + "%s", "Seat has no active session"); } else { if (ssid != NULL) { - *ssid = NULL; + *ssid = g_strdup (session_id); } } - return TRUE; + g_free (session_id); + return ret; } typedef struct diff --git a/src/test-method-access-policy b/src/test-method-access-policy index f9ea8e2..a950fc8 100755 --- a/src/test-method-access-policy +++ b/src/test-method-access-policy @@ -4,6 +4,7 @@ # import os +import sys import gobject import dbus import dbus.glib @@ -167,7 +168,6 @@ except: pass print "\t%s" % res - # Test Seat Interface seat_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Seat1') -- cgit