chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d255133
)
systemctl: honour inhibitors only when running unprivileged
author
Lennart Poettering
<lennart@poettering.net>
Fri, 11 Jan 2013 23:09:22 +0000
(
00:09
+0100)
committer
Lennart Poettering
<lennart@poettering.net>
Mon, 14 Jan 2013 20:24:57 +0000
(21:24 +0100)
src/systemctl/systemctl.c
patch
|
blob
|
history
diff --git
a/src/systemctl/systemctl.c
b/src/systemctl/systemctl.c
index bfa4d45fc2d8c5ed7ad479314c200a9cef73c2ba..91467cc0855835551f0ed48cc2a072a51fbcae04 100644
(file)
--- a/
src/systemctl/systemctl.c
+++ b/
src/systemctl/systemctl.c
@@
-1791,7
+1791,16
@@
static int check_inhibitors(DBusConnection *bus, enum action a) {
int r;
unsigned c = 0;
int r;
unsigned c = 0;
- if (arg_ignore_inhibitors)
+ if (!bus)
+ return 0;
+
+ if (arg_ignore_inhibitors || arg_force > 0)
+ return 0;
+
+ if (arg_when > 0)
+ return 0;
+
+ if (geteuid() == 0)
return 0;
if (!on_tty())
return 0;
if (!on_tty())
@@
-1890,6
+1899,10
@@
static int start_special(DBusConnection *bus, char **args) {
a = verb_to_action(args[0]);
a = verb_to_action(args[0]);
+ r = check_inhibitors(bus, a);
+ if (r < 0)
+ return r;
+
if (arg_force >= 2 && geteuid() != 0) {
log_error("Must be root.");
return -EPERM;
if (arg_force >= 2 && geteuid() != 0) {
log_error("Must be root.");
return -EPERM;
@@
-1909,12
+1922,6
@@
static int start_special(DBusConnection *bus, char **args) {
a == ACTION_EXIT))
return daemon_reload(bus, args);
a == ACTION_EXIT))
return daemon_reload(bus, args);
- if (arg_force <= 0) {
- r = check_inhibitors(bus, a);
- if (r < 0)
- return r;
- }
-
/* first try logind, to allow authentication with polkit */
if (geteuid() != 0 &&
(a == ACTION_POWEROFF ||
/* first try logind, to allow authentication with polkit */
if (geteuid() != 0 &&
(a == ACTION_POWEROFF ||
@@
-5304,11
+5311,9
@@
static _noreturn_ void halt_now(enum action a) {
static int halt_main(DBusConnection *bus) {
int r;
static int halt_main(DBusConnection *bus) {
int r;
- if (arg_when <= 0 && arg_force <= 0) {
- r = check_inhibitors(bus, arg_action);
- if (r < 0)
- return r;
- }
+ r = check_inhibitors(bus, arg_action);
+ if (r < 0)
+ return r;
if (geteuid() != 0) {
/* Try logind if we are a normal user and no special
if (geteuid() != 0) {
/* Try logind if we are a normal user and no special