sd-bus: allow setting a per-connection default value for the "allow-interactive-authentication" message flag
Most of our client tools want to set this bit for all their method calls, even though it defaults to off in sd-bus, and rightfully so. Hence, to simplify thing, introduce a per sd_bus-object flag that sets the default value for all messages created on the connection.
This commit is contained in:
parent
b89c454b37
commit
c0765ddb74
|
@ -185,6 +185,8 @@ global:
|
|||
sd_bus_set_trusted;
|
||||
sd_bus_set_monitor;
|
||||
sd_bus_set_description;
|
||||
sd_bus_set_allow_interactive_authorization;
|
||||
sd_bus_get_allow_interactive_authorization;
|
||||
sd_bus_negotiate_fds;
|
||||
sd_bus_negotiate_timestamp;
|
||||
sd_bus_negotiate_creds;
|
||||
|
|
|
@ -211,6 +211,7 @@ struct sd_bus {
|
|||
bool manual_peer_interface:1;
|
||||
bool is_system:1;
|
||||
bool is_user:1;
|
||||
bool allow_interactive_authorization:1;
|
||||
|
||||
int use_memfd;
|
||||
|
||||
|
|
|
@ -634,6 +634,9 @@ static sd_bus_message *message_new(sd_bus *bus, uint8_t type) {
|
|||
m->root_container.need_offsets = BUS_MESSAGE_IS_GVARIANT(m);
|
||||
m->bus = sd_bus_ref(bus);
|
||||
|
||||
if (bus->allow_interactive_authorization)
|
||||
m->header->flags |= BUS_MESSAGE_ALLOW_INTERACTIVE_AUTHORIZATION;
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
|
|
@ -357,6 +357,21 @@ _public_ int sd_bus_set_description(sd_bus *bus, const char *description) {
|
|||
return free_and_strdup(&bus->description, description);
|
||||
}
|
||||
|
||||
_public_ int sd_bus_set_allow_interactive_authorization(sd_bus *bus, int b) {
|
||||
assert_return(bus, -EINVAL);
|
||||
assert_return(!bus_pid_changed(bus), -ECHILD);
|
||||
|
||||
bus->allow_interactive_authorization = !!b;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_get_allow_interactive_authorization(sd_bus *bus) {
|
||||
assert_return(bus, -EINVAL);
|
||||
assert_return(!bus_pid_changed(bus), -ECHILD);
|
||||
|
||||
return bus->allow_interactive_authorization;
|
||||
}
|
||||
|
||||
static int hello_callback(sd_bus *bus, sd_bus_message *reply, void *userdata, sd_bus_error *error) {
|
||||
const char *s;
|
||||
int r;
|
||||
|
|
|
@ -143,6 +143,8 @@ int sd_bus_can_send(sd_bus *bus, char type);
|
|||
int sd_bus_negotiate_timestamp(sd_bus *bus, int b);
|
||||
int sd_bus_negotiate_creds(sd_bus *bus, int b, uint64_t creds_mask);
|
||||
int sd_bus_get_creds_mask(sd_bus *bus, uint64_t *creds_mask);
|
||||
int sd_bus_set_allow_interactive_authorization(sd_bus *bus, int b);
|
||||
int sd_bus_get_allow_interactive_authorization(sd_bus *bus);
|
||||
|
||||
int sd_bus_start(sd_bus *ret);
|
||||
|
||||
|
|
Loading…
Reference in New Issue