mirror of
https://github.com/systemd/systemd
synced 2024-10-04 15:21:01 +00:00
core: refuse invalid emergency actions for SuccessAction= and friends in user service manager
Especially, soft-reboot is not supported by user service manager. Fixes a bug in13ffc60749
and3cf848f6cd
.
This commit is contained in:
parent
067857196c
commit
2a2d9539f0
|
@ -1083,9 +1083,8 @@
|
|||
<option>exit-force</option>, <option>soft-reboot</option>, <option>soft-reboot-force</option>,
|
||||
<option>kexec</option>, <option>kexec-force</option>, <option>halt</option>,
|
||||
<option>halt-force</option> and <option>halt-immediate</option>. In system mode, all options are
|
||||
allowed. In user mode, only <option>none</option>, <option>exit</option>,
|
||||
<option>exit-force</option>, <option>soft-reboot</option> and <option>soft-reboot-force</option> are
|
||||
allowed. Both options default to <option>none</option>.</para>
|
||||
allowed. In user mode, only <option>none</option>, <option>exit</option>, and
|
||||
<option>exit-force</option> are allowed. Both options default to <option>none</option>.</para>
|
||||
|
||||
<para>If <option>none</option> is set, no action will be triggered. <option>reboot</option> causes a
|
||||
reboot following the normal shutdown procedure (i.e. equivalent to <command>systemctl
|
||||
|
|
|
@ -14,14 +14,14 @@
|
|||
|
||||
static const char* const emergency_action_table[_EMERGENCY_ACTION_MAX] = {
|
||||
[EMERGENCY_ACTION_NONE] = "none",
|
||||
[EMERGENCY_ACTION_EXIT] = "exit",
|
||||
[EMERGENCY_ACTION_EXIT_FORCE] = "exit-force",
|
||||
[EMERGENCY_ACTION_REBOOT] = "reboot",
|
||||
[EMERGENCY_ACTION_REBOOT_FORCE] = "reboot-force",
|
||||
[EMERGENCY_ACTION_REBOOT_IMMEDIATE] = "reboot-immediate",
|
||||
[EMERGENCY_ACTION_POWEROFF] = "poweroff",
|
||||
[EMERGENCY_ACTION_POWEROFF_FORCE] = "poweroff-force",
|
||||
[EMERGENCY_ACTION_POWEROFF_IMMEDIATE] = "poweroff-immediate",
|
||||
[EMERGENCY_ACTION_EXIT] = "exit",
|
||||
[EMERGENCY_ACTION_EXIT_FORCE] = "exit-force",
|
||||
[EMERGENCY_ACTION_SOFT_REBOOT] = "soft-reboot",
|
||||
[EMERGENCY_ACTION_SOFT_REBOOT_FORCE] = "soft-reboot-force",
|
||||
[EMERGENCY_ACTION_KEXEC] = "kexec",
|
||||
|
@ -216,7 +216,7 @@ int parse_emergency_action(
|
|||
if (x < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (runtime_scope != RUNTIME_SCOPE_SYSTEM && x != EMERGENCY_ACTION_NONE && x < _EMERGENCY_ACTION_FIRST_USER_ACTION)
|
||||
if (runtime_scope != RUNTIME_SCOPE_SYSTEM && x > _EMERGENCY_ACTION_LAST_USER_ACTION)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
*ret = x;
|
||||
|
|
|
@ -7,15 +7,15 @@
|
|||
|
||||
typedef enum EmergencyAction {
|
||||
EMERGENCY_ACTION_NONE,
|
||||
EMERGENCY_ACTION_EXIT,
|
||||
EMERGENCY_ACTION_EXIT_FORCE,
|
||||
_EMERGENCY_ACTION_LAST_USER_ACTION = EMERGENCY_ACTION_EXIT_FORCE,
|
||||
EMERGENCY_ACTION_REBOOT,
|
||||
EMERGENCY_ACTION_REBOOT_FORCE,
|
||||
EMERGENCY_ACTION_REBOOT_IMMEDIATE,
|
||||
EMERGENCY_ACTION_POWEROFF,
|
||||
EMERGENCY_ACTION_POWEROFF_FORCE,
|
||||
EMERGENCY_ACTION_POWEROFF_IMMEDIATE,
|
||||
EMERGENCY_ACTION_EXIT,
|
||||
_EMERGENCY_ACTION_FIRST_USER_ACTION = EMERGENCY_ACTION_EXIT,
|
||||
EMERGENCY_ACTION_EXIT_FORCE,
|
||||
EMERGENCY_ACTION_SOFT_REBOOT,
|
||||
EMERGENCY_ACTION_SOFT_REBOOT_FORCE,
|
||||
EMERGENCY_ACTION_KEXEC,
|
||||
|
|
Loading…
Reference in a new issue