diff options
author | Daniel Mack <daniel@zonque.org> | 2014-10-22 14:41:53 +0200 |
---|---|---|
committer | Daniel Mack <daniel@zonque.org> | 2014-11-11 14:14:01 +0100 |
commit | 022fb8558e797483709ab3e9fe846f04f7026dac (patch) | |
tree | 506558821d73d5a71578d3bd66377be289f16d52 /src/libsystemd/sd-bus/bus-message.c | |
parent | 7e27f3121e5a10629302b5221eb21345f832724a (diff) |
sd-bus: add sd_bus_message.verify_destination_id and .destination_ptr
kdbus learned to accept both a numerical destination ID as well as a
well-known-name. In that case, kdbus makes sure that the numerical ID is in
fact the owner of the provided name and fails otherwise.
This allows for race-free assertion of a bus name owner while sending a
message, which is a requirement for bus-proxyd.
Add two new fields to sd_bus_message, and set the numerical ID to
verify_destination_id if bus_message_setup_kmsg() is called for a
message with a well-known name.
Also, set the destination's name in the kdbus item to .destination_ptr
if it is non-NULL.
Normal users should not touch these fields, and they're not publicy
accessible.
Diffstat (limited to 'src/libsystemd/sd-bus/bus-message.c')
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index be36d9f417..1a8c445f0b 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -148,6 +148,11 @@ static void message_free(sd_bus_message *m) { if (m->iovec != m->iovec_fixed) free(m->iovec); + if (m->destination_ptr) { + free(m->destination_ptr); + m->destination_ptr = NULL; + } + message_reset_containers(m); free(m->root_container.signature); free(m->root_container.offsets); |