From: Lennart Poettering Date: Tue, 30 Apr 2019 11:48:11 +0000 (+0200) Subject: logind: support self/auto seats for AttachDevice(), too X-Git-Tag: v243-rc1~295^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ed179418aeb550138d308263eb4742683282c727;p=thirdparty%2Fsystemd.git logind: support self/auto seats for AttachDevice(), too --- diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index e1b182150b4..6655d395ce6 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1409,8 +1409,17 @@ static int method_attach_device(sd_bus_message *message, void *userdata, sd_bus_ if (!path_startswith(sysfs, "/sys")) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not in /sys", sysfs); - if (!seat_name_is_valid(seat)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Seat %s is not valid", seat); + if (SEAT_IS_SELF(seat) || SEAT_IS_AUTO(seat)) { + Seat *found; + + r = manager_get_seat_from_creds(m, message, seat, error, &found); + if (r < 0) + return r; + + seat = found->id; + + } else if (!seat_name_is_valid(seat)) /* Note that a seat does not have to exist yet for this operation to succeed */ + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Seat name %s is not valid", seat); r = bus_verify_polkit_async( message,