bus-polkit: treat various well-known PK errors as denied

Various recognizable errors from

https://www.freedesktop.org/software/polkit/docs/latest/eggdbus-interface-org.freedesktop.PolicyKit1.Authority.html#eggdbus-errordomain-org.freedesktop.PolicyKit1.Error.

should be considered access failures, hence treat them like that.
This commit is contained in:
Lennart Poettering
2024-01-16 13:59:49 +01:00
parent c5ff54c40f
commit 956d8aee01
+7 -2
View File
@@ -280,8 +280,13 @@ static int async_polkit_read_reply(sd_bus_message *reply, AsyncPolkitQuery *q) {
e = sd_bus_message_get_error(reply);
if (bus_error_is_unknown_service(e))
/* Treat no PK available as access denied */
if (bus_error_is_unknown_service(e) ||
sd_bus_error_has_names(
e,
"org.freedesktop.PolicyKit1.Error.Failed",
"org.freedesktop.PolicyKit1.Error.Cancelled",
"org.freedesktop.PolicyKit1.Error.NotAuthorized"))
/* Treat no PK available as access denied. Also treat some of the well-known PK errors as such. */
q->denied_action = TAKE_PTR(a);
else {
/* Save error from polkit reply, so it can be returned when the same authorization