From 8183ebcd45c719f81dfb9fbe5cbebbd4295433a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 14 Apr 2020 16:53:43 +0200 Subject: [PATCH 1/2] loginctl: adjust indentation --- src/login/loginctl.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 2e39f55763..9067ba4153 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -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 }, From 5644d47b7c288c4126aab60d2d6a65923f7df4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 16 Apr 2020 13:46:37 +0200 Subject: [PATCH 2/2] logind: skip polkit query with --no-wall Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1800875. --- src/login/logind-dbus.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 15201f900f..047f835327 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -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); }