]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/login/logind-session-dbus.c
logind: allow taking control of devices only in some session types
[thirdparty/systemd.git] / src / login / logind-session-dbus.c
index d4e656ae85d031b7f3c64d6bfab7486b55c2776d..03a043fe7d82e14f03655263cd076aa930bd388b 100644 (file)
@@ -476,6 +476,9 @@ static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_er
         if (!DEVICE_MAJOR_VALID(major) || !DEVICE_MINOR_VALID(minor))
                 return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid.");
 
+        if (!SESSION_CLASS_CAN_TAKE_DEVICE(s->class))
+                return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Session class doesn't support taking device control.");
+
         if (!session_is_controller(s, sd_bus_message_get_sender(message)))
                 return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session");