Merge pull request #15448 from keszybz/logind-avoid-polkit-query

logind: avoid polkit query for SetWallMessage()
This commit is contained in:
Lennart Poettering
2020-04-16 19:42:42 +02:00
committed by GitHub
2 changed files with 16 additions and 3 deletions
+9 -3
View File
@@ -825,7 +825,15 @@ static int show_properties(sd_bus *bus, const char *path, bool *new_line) {
*new_line = true;
r = bus_print_all_properties(bus, "org.freedesktop.login1", path, print_property, arg_property, arg_value, arg_all, NULL);
r = bus_print_all_properties(
bus,
"org.freedesktop.login1",
path,
print_property,
arg_property,
arg_value,
arg_all,
NULL);
if (r < 0)
return bus_log_parse_error(r);
@@ -1347,7 +1355,6 @@ static int help(int argc, char *argv[], void *userdata) {
}
static int parse_argv(int argc, char *argv[]) {
enum {
ARG_VERSION = 0x100,
ARG_VALUE,
@@ -1486,7 +1493,6 @@ static int parse_argv(int argc, char *argv[]) {
}
static int loginctl_main(int argc, char *argv[], sd_bus *bus) {
static const Verb verbs[] = {
{ "help", VERB_ANY, VERB_ANY, 0, help },
{ "list-sessions", VERB_ANY, 1, VERB_DEFAULT, list_sessions },
+7
View File
@@ -3170,6 +3170,12 @@ static int method_set_wall_message(
if (r < 0)
return r;
/* Short-circuit the operation if the desired state is already in place, to
* avoid an unnecessary polkit permission check. */
if (streq_ptr(m->wall_message, empty_to_null(wall_message)) &&
m->enable_wall_messages == enable_wall_messages)
goto done;
r = bus_verify_polkit_async(message,
CAP_SYS_ADMIN,
"org.freedesktop.login1.set-wall-message",
@@ -3189,6 +3195,7 @@ static int method_set_wall_message(
m->enable_wall_messages = enable_wall_messages;
done:
return sd_bus_reply_method_return(message, NULL);
}