Merge pull request #15448 from keszybz/logind-avoid-polkit-query
logind: avoid polkit query for SetWallMessage()
This commit is contained in:
@@ -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 },
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user