diff options
| -rw-r--r-- | src/ck-manager.c | 31 | ||||
| -rw-r--r-- | src/ck-seat.c | 26 | ||||
| -rwxr-xr-x | src/test-method-access-policy | 2 | 
3 files changed, 35 insertions, 24 deletions
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')  | 
