diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index f934a5326a..2154b878dd 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -332,28 +332,15 @@ int seat_object_find(sd_bus *bus, const char *path, const char *interface, void assert(m); if (streq(path, "/org/freedesktop/login1/seat/self")) { - _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL; sd_bus_message *message; - Session *session; - const char *name; message = sd_bus_get_current_message(bus); if (!message) return 0; - r = sd_bus_query_sender_creds(message, SD_BUS_CREDS_SESSION|SD_BUS_CREDS_AUGMENT, &creds); + r = manager_get_seat_from_creds(m, message, NULL, error, &seat); if (r < 0) return r; - - r = sd_bus_creds_get_session(creds, &name); - if (r < 0) - return r; - - session = hashmap_get(m->sessions, name); - if (!session) - return 0; - - seat = session->seat; } else { _cleanup_free_ char *e = NULL; const char *p; @@ -367,11 +354,10 @@ int seat_object_find(sd_bus *bus, const char *path, const char *interface, void return -ENOMEM; seat = hashmap_get(m->seats, e); + if (!seat) + return 0; } - if (!seat) - return 0; - *found = seat; return 1; } diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 649f3c155e..09ecb49d33 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -580,23 +580,15 @@ int session_object_find(sd_bus *bus, const char *path, const char *interface, vo assert(m); if (streq(path, "/org/freedesktop/login1/session/self")) { - _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL; sd_bus_message *message; - const char *name; message = sd_bus_get_current_message(bus); if (!message) return 0; - r = sd_bus_query_sender_creds(message, SD_BUS_CREDS_SESSION|SD_BUS_CREDS_AUGMENT, &creds); + r = manager_get_session_from_creds(m, message, NULL, error, &session); if (r < 0) return r; - - r = sd_bus_creds_get_session(creds, &name); - if (r < 0) - return r; - - session = hashmap_get(m->sessions, name); } else { _cleanup_free_ char *e = NULL; const char *p; @@ -610,11 +602,10 @@ int session_object_find(sd_bus *bus, const char *path, const char *interface, vo return -ENOMEM; session = hashmap_get(m->sessions, e); + if (!session) + return 0; } - if (!session) - return 0; - *found = session; return 1; } diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index 987c63014f..921f1e0f91 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -270,18 +270,15 @@ int user_object_find(sd_bus *bus, const char *path, const char *interface, void assert(m); if (streq(path, "/org/freedesktop/login1/user/self")) { - _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL; sd_bus_message *message; message = sd_bus_get_current_message(bus); if (!message) return 0; - r = sd_bus_query_sender_creds(message, SD_BUS_CREDS_OWNER_UID|SD_BUS_CREDS_AUGMENT, &creds); + r = manager_get_user_from_creds(m, message, UID_INVALID, error, &user); if (r < 0) return r; - - r = sd_bus_creds_get_owner_uid(creds, &uid); } else { const char *p;