1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 17:51:22 +03:00

bus: check allow-interactive-auhtorization flag when doing polkit

This commit is contained in:
Lennart Poettering 2014-10-13 17:17:48 +02:00
parent 53a83f4bc0
commit b911eb1560

View File

@ -212,13 +212,19 @@ int bus_verify_polkit(
#ifdef ENABLE_POLKIT
else {
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
int authorized = false, challenge = false;
int authorized = false, challenge = false, c;
const char *sender;
sender = sd_bus_message_get_sender(call);
if (!sender)
return -EBADMSG;
c = sd_bus_message_get_allow_interactive_authorization(call);
if (c < 0)
return c;
if (c > 0)
interactive = true;
r = sd_bus_call_method(
call->bus,
"org.freedesktop.PolicyKit1",
@ -231,7 +237,7 @@ int bus_verify_polkit(
"system-bus-name", 1, "name", "s", sender,
action,
0,
interactive ? 1 : 0,
!!interactive,
"");
if (r < 0) {
@ -334,6 +340,7 @@ int bus_verify_polkit_async(
const char *sender;
sd_bus_message_handler_t callback;
void *userdata;
int c;
#endif
int r;
@ -399,6 +406,12 @@ int bus_verify_polkit_async(
if (!sender)
return -EBADMSG;
c = sd_bus_message_get_allow_interactive_authorization(call);
if (c < 0)
return c;
if (c > 0)
interactive = true;
r = hashmap_ensure_allocated(registry, NULL);
if (r < 0)
return r;
@ -419,7 +432,7 @@ int bus_verify_polkit_async(
"system-bus-name", 1, "name", "s", sender,
action,
0,
interactive ? 1 : 0,
!!interactive,
NULL);
if (r < 0)
return r;