diff options
Diffstat (limited to 'src/login')
-rw-r--r-- | src/login/logind-core.c | 2 | ||||
-rw-r--r-- | src/login/logind-dbus.c | 32 | ||||
-rw-r--r-- | src/login/logind-seat-dbus.c | 2 | ||||
-rw-r--r-- | src/login/logind-session-dbus.c | 36 | ||||
-rw-r--r-- | src/login/logind-session.c | 8 | ||||
-rw-r--r-- | src/login/logind.c | 4 | ||||
-rw-r--r-- | src/login/logind.conf.in | 2 |
7 files changed, 44 insertions, 42 deletions
diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 2ecf2120fd..cd3a374201 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -485,7 +485,7 @@ int config_parse_n_autovts( static int vt_is_busy(unsigned vtnr) { struct vt_stat vt_stat; int r; - _cleanup_close_ int fd; + _cleanup_close_ int fd = -1; assert(vtnr >= 1); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 526bf21d97..feeacc2d99 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -695,9 +695,9 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus return r; if (!uid_is_valid(uid)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid UID"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid UID"); if (leader < 0 || leader == 1 || leader == getpid_cached()) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid leader PID"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid leader PID"); if (isempty(type)) t = _SESSION_TYPE_INVALID; @@ -831,7 +831,7 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus vtnr < m->seat0->position_count && m->seat0->positions[vtnr] && m->seat0->positions[vtnr]->class != SESSION_GREETER) - return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY, "Already occupied by a session"); + return sd_bus_error_set(error, BUS_ERROR_SESSION_BUSY, "Already occupied by a session"); if (hashmap_size(m->sessions) >= m->sessions_max) return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED, @@ -1371,7 +1371,7 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) { } static int flush_devices(Manager *m) { - _cleanup_closedir_ DIR *d; + _cleanup_closedir_ DIR *d = NULL; assert(m); @@ -1879,9 +1879,9 @@ static int method_do_shutdown_or_sleep( if (r < 0) return r; if ((flags & ~SD_LOGIND_SHUTDOWN_AND_SLEEP_FLAGS_PUBLIC) != 0) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid flags parameter"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid flags parameter"); if (!streq(unit_name, SPECIAL_REBOOT_TARGET) && (flags & SD_LOGIND_REBOOT_VIA_KEXEC)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Reboot via kexec is only applicable with reboot operations"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Reboot via kexec is only applicable with reboot operations"); } else { /* Old style method: no flags parameter, but interactive bool passed as boolean in * payload. Let's convert this argument to the new-style flags parameter for our internal @@ -2073,7 +2073,7 @@ static int update_schedule_file(Manager *m) { m->scheduled_shutdown_type); if (!isempty(m->wall_message)) { - _cleanup_free_ char *t; + _cleanup_free_ char *t = NULL; t = cescape(m->wall_message); if (!t) { @@ -2140,6 +2140,8 @@ static int manager_scheduled_shutdown_handler( target = SPECIAL_POWEROFF_TARGET; else if (streq(m->scheduled_shutdown_type, "reboot")) target = SPECIAL_REBOOT_TARGET; + else if (streq(m->scheduled_shutdown_type, "kexec")) + target = SPECIAL_KEXEC_TARGET; else if (streq(m->scheduled_shutdown_type, "halt")) target = SPECIAL_HALT_TARGET; else @@ -2205,7 +2207,7 @@ static int method_schedule_shutdown(sd_bus_message *message, void *userdata, sd_ action = "org.freedesktop.login1.power-off"; action_multiple_sessions = "org.freedesktop.login1.power-off-multiple-sessions"; action_ignore_inhibit = "org.freedesktop.login1.power-off-ignore-inhibit"; - } else if (streq(type, "reboot")) { + } else if (STR_IN_SET(type, "reboot", "kexec")) { action = "org.freedesktop.login1.reboot"; action_multiple_sessions = "org.freedesktop.login1.reboot-multiple-sessions"; action_ignore_inhibit = "org.freedesktop.login1.reboot-ignore-inhibit"; @@ -2214,7 +2216,7 @@ static int method_schedule_shutdown(sd_bus_message *message, void *userdata, sd_ action_multiple_sessions = "org.freedesktop.login1.halt-multiple-sessions"; action_ignore_inhibit = "org.freedesktop.login1.halt-ignore-inhibit"; } else - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unsupported shutdown type"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Unsupported shutdown type"); r = verify_shutdown_creds(m, message, INHIBIT_SHUTDOWN, action, action_multiple_sessions, action_ignore_inhibit, 0, error); @@ -2672,7 +2674,7 @@ static int method_set_reboot_to_firmware_setup( r = efi_reboot_to_firmware_supported(); if (r == -EOPNOTSUPP) - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Firmware does not support boot into firmware."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Firmware does not support boot into firmware."); if (r < 0) return r; @@ -2684,7 +2686,7 @@ static int method_set_reboot_to_firmware_setup( if (r < 0) log_warning_errno(r, "Failed to parse $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP: %m"); - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Firmware does not support boot into firmware."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Firmware does not support boot into firmware."); } else /* non-EFI case: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP is set to on */ use_efi = false; @@ -2840,7 +2842,7 @@ static int method_set_reboot_to_boot_loader_menu( if (r < 0) log_warning_errno(r, "Failed to determine whether reboot to boot loader menu is supported: %m"); if (r < 0 || !FLAGS_SET(features, EFI_LOADER_FEATURE_CONFIG_TIMEOUT_ONE_SHOT)) - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Boot loader does not support boot into boot loader menu."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Boot loader does not support boot into boot loader menu."); use_efi = true; @@ -2850,7 +2852,7 @@ static int method_set_reboot_to_boot_loader_menu( if (r < 0) log_warning_errno(r, "Failed to parse $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU: %m"); - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Boot loader does not support boot into boot loader menu."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Boot loader does not support boot into boot loader menu."); } else /* non-EFI case: $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU is set to on */ use_efi = false; @@ -3042,7 +3044,7 @@ static int method_set_reboot_to_boot_loader_entry( if (r < 0) log_warning_errno(r, "Failed to determine whether reboot into boot loader entry is supported: %m"); if (r < 0 || !FLAGS_SET(features, EFI_LOADER_FEATURE_ENTRY_ONESHOT)) - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Loader does not support boot into boot loader entry."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Loader does not support boot into boot loader entry."); use_efi = true; @@ -3052,7 +3054,7 @@ static int method_set_reboot_to_boot_loader_entry( if (r < 0) log_warning_errno(r, "Failed to parse $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY: %m"); - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Loader does not support boot into boot loader entry."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Loader does not support boot into boot loader entry."); } else /* non-EFI case: $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY is set to on */ use_efi = false; diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 9c2625cdcc..cceb3b1d2d 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -206,7 +206,7 @@ static int method_switch_to(sd_bus_message *message, void *userdata, sd_bus_erro return r; if (to <= 0) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid virtual terminal"); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid virtual terminal"); r = check_polkit_chvt(message, s->manager, error); if (r < 0) diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index d342dc4193..afaef1123d 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -256,11 +256,11 @@ static int method_set_idle_hint(sd_bus_message *message, void *userdata, sd_bus_ return r; if (uid != 0 && uid != s->user->user_record->uid) - return sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may set idle hint"); + return sd_bus_error_set(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may set idle hint"); r = session_set_idle_hint(s, b); if (r == -ENOTTY) - return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Idle hint control is not supported on non-graphical sessions."); + return sd_bus_error_set(error, SD_BUS_ERROR_NOT_SUPPORTED, "Idle hint control is not supported on non-graphical sessions."); if (r < 0) return r; @@ -289,7 +289,7 @@ static int method_set_locked_hint(sd_bus_message *message, void *userdata, sd_bu return r; if (uid != 0 && uid != s->user->user_record->uid) - return sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may set locked hint"); + return sd_bus_error_set(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may set locked hint"); session_set_locked_hint(s, b); @@ -364,7 +364,7 @@ static int method_take_control(sd_bus_message *message, void *userdata, sd_bus_e return r; if (uid != 0 && (force || uid != s->user->user_record->uid)) - return sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may take control"); + return sd_bus_error_set(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may take control"); r = session_set_controller(s, sd_bus_message_get_sender(message), force, true); if (r < 0) @@ -380,7 +380,7 @@ static int method_release_control(sd_bus_message *message, void *userdata, sd_bu assert(s); if (!session_is_controller(s, sd_bus_message_get_sender(message))) - return sd_bus_error_setf(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); + return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); session_drop_controller(s); @@ -406,7 +406,7 @@ static int method_set_type(sd_bus_message *message, void *userdata, sd_bus_error "Invalid session type '%s'", t); if (!session_is_controller(s, sd_bus_message_get_sender(message))) - return sd_bus_error_setf(error, BUS_ERROR_NOT_IN_CONTROL, "You must be in control of this session to set type"); + return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You must be in control of this session to set type"); session_set_type(s, type); @@ -428,10 +428,10 @@ static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_er return r; if (!DEVICE_MAJOR_VALID(major) || !DEVICE_MINOR_VALID(minor)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); if (!session_is_controller(s, sd_bus_message_get_sender(message))) - return sd_bus_error_setf(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); + return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); dev = makedev(major, minor); sd = hashmap_get(s->devices, &dev); @@ -441,7 +441,7 @@ static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_er * The caller should use dup() if it requires more * than one fd (it would be functionally * equivalent). */ - return sd_bus_error_setf(error, BUS_ERROR_DEVICE_IS_TAKEN, "Device already taken"); + return sd_bus_error_set(error, BUS_ERROR_DEVICE_IS_TAKEN, "Device already taken"); r = session_device_new(s, dev, true, &sd); if (r < 0) @@ -478,15 +478,15 @@ static int method_release_device(sd_bus_message *message, void *userdata, sd_bus return r; if (!DEVICE_MAJOR_VALID(major) || !DEVICE_MINOR_VALID(minor)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); if (!session_is_controller(s, sd_bus_message_get_sender(message))) - return sd_bus_error_setf(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); + return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); dev = makedev(major, minor); sd = hashmap_get(s->devices, &dev); if (!sd) - return sd_bus_error_setf(error, BUS_ERROR_DEVICE_NOT_TAKEN, "Device not taken"); + return sd_bus_error_set(error, BUS_ERROR_DEVICE_NOT_TAKEN, "Device not taken"); session_device_free(sd); session_save(s); @@ -509,15 +509,15 @@ static int method_pause_device_complete(sd_bus_message *message, void *userdata, return r; if (!DEVICE_MAJOR_VALID(major) || !DEVICE_MINOR_VALID(minor)) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); + return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Device major/minor is not valid."); if (!session_is_controller(s, sd_bus_message_get_sender(message))) - return sd_bus_error_setf(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); + return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You are not in control of this session"); dev = makedev(major, minor); sd = hashmap_get(s->devices, &dev); if (!sd) - return sd_bus_error_setf(error, BUS_ERROR_DEVICE_NOT_TAKEN, "Device not taken"); + return sd_bus_error_set(error, BUS_ERROR_DEVICE_NOT_TAKEN, "Device not taken"); session_device_complete_pause(sd); @@ -546,9 +546,9 @@ static int method_set_brightness(sd_bus_message *message, void *userdata, sd_bus return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Not a valid device name %s, refusing.", name); if (!s->seat) - return sd_bus_error_setf(error, BUS_ERROR_NOT_YOUR_DEVICE, "Your session has no seat, refusing."); + return sd_bus_error_set(error, BUS_ERROR_NOT_YOUR_DEVICE, "Your session has no seat, refusing."); if (s->seat->active != s) - return sd_bus_error_setf(error, BUS_ERROR_NOT_YOUR_DEVICE, "Session is not in foreground, refusing."); + return sd_bus_error_set(error, BUS_ERROR_NOT_YOUR_DEVICE, "Session is not in foreground, refusing."); r = sd_bus_query_sender_creds(message, SD_BUS_CREDS_EUID, &creds); if (r < 0) @@ -559,7 +559,7 @@ static int method_set_brightness(sd_bus_message *message, void *userdata, sd_bus return r; if (uid != 0 && uid != s->user->user_record->uid) - return sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may change brightness."); + return sd_bus_error_set(error, SD_BUS_ERROR_ACCESS_DENIED, "Only owner of session may change brightness."); r = sd_device_new_from_subsystem_sysname(&d, subsystem, name); if (r < 0) diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 34fcde92aa..6a3dd860db 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -266,7 +266,7 @@ int session_save(Session *s) { fprintf(f, "DISPLAY=%s\n", s->display); if (s->remote_host) { - _cleanup_free_ char *escaped; + _cleanup_free_ char *escaped = NULL; escaped = cescape(s->remote_host); if (!escaped) { @@ -278,7 +278,7 @@ int session_save(Session *s) { } if (s->remote_user) { - _cleanup_free_ char *escaped; + _cleanup_free_ char *escaped = NULL; escaped = cescape(s->remote_user); if (!escaped) { @@ -290,7 +290,7 @@ int session_save(Session *s) { } if (s->service) { - _cleanup_free_ char *escaped; + _cleanup_free_ char *escaped = NULL; escaped = cescape(s->service); if (!escaped) { @@ -302,7 +302,7 @@ int session_save(Session *s) { } if (s->desktop) { - _cleanup_free_ char *escaped; + _cleanup_free_ char *escaped = NULL; escaped = cescape(s->desktop); if (!escaped) { diff --git a/src/login/logind.c b/src/login/logind.c index 4887889fac..b782938a5c 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -268,8 +268,8 @@ static int manager_enumerate_seats(Manager *m) { s = hashmap_get(m->seats, de->d_name); if (!s) { if (unlinkat(dirfd(d), de->d_name, 0) < 0) - log_warning("Failed to remove /run/systemd/seats/%s: %m", - de->d_name); + log_warning_errno(errno, "Failed to remove /run/systemd/seats/%s, ignoring: %m", + de->d_name); continue; } diff --git a/src/login/logind.conf.in b/src/login/logind.conf.in index 76f529c176..564868e7ae 100644 --- a/src/login/logind.conf.in +++ b/src/login/logind.conf.in @@ -7,7 +7,7 @@ # # Entries in this file show the compile time defaults. Local configuration # should be created by either modifying this file, or by creating "drop-ins" in -# the system.conf.d/ subdirectory. The latter is generally recommended. +# the logind.conf.d/ subdirectory. The latter is generally recommended. # Defaults can be restored by simply deleting this file and all drop-ins. # # Use 'systemd-analyze cat-config systemd/logind.conf' to display the full config. |