mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-11 04:58:19 +03:00
bus-polkit: don't propagate error from polkit
An error reply from polkit is a valid case and should not be propagated as failure of async_polkit_callback(). It should only be saved here. It'll be returned by bus_verify_polkit_async() later, when it's called for the same method again. Follow-up for #26365. (cherry picked from commit 45b1c015b0eaff65b1f34e0ba8d072939eaa3926)
This commit is contained in:
parent
7ddbacbaa5
commit
3f5e2f806d
@ -268,15 +268,18 @@ static int async_polkit_read_reply(sd_bus_message *reply, AsyncPolkitQuery *q) {
|
||||
|
||||
e = sd_bus_message_get_error(reply);
|
||||
|
||||
/* Save error from polkit reply, so it can be returned when the same authorization is
|
||||
* attempted for second time */
|
||||
if (!bus_error_is_unknown_service(e)) {
|
||||
if (bus_error_is_unknown_service(e))
|
||||
/* Treat no PK available as access denied */
|
||||
q->denied_action = TAKE_PTR(a);
|
||||
else {
|
||||
/* Save error from polkit reply, so it can be returned when the same authorization
|
||||
* is attempted for second time */
|
||||
q->error_action = TAKE_PTR(a);
|
||||
return sd_bus_error_copy(&q->error, e);
|
||||
r = sd_bus_error_copy(&q->error, e);
|
||||
if (r == -ENOMEM)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Treat no PK available as access denied */
|
||||
q->denied_action = TAKE_PTR(a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -290,7 +293,7 @@ static int async_polkit_read_reply(sd_bus_message *reply, AsyncPolkitQuery *q) {
|
||||
LIST_PREPEND(authorized, q->authorized_actions, TAKE_PTR(a));
|
||||
else if (challenge) {
|
||||
q->error_action = TAKE_PTR(a);
|
||||
return sd_bus_error_set(&q->error, SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED, "Interactive authentication required.");
|
||||
sd_bus_error_set_const(&q->error, SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED, "Interactive authentication required.");
|
||||
} else
|
||||
q->denied_action = TAKE_PTR(a);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user