[systemd-devel] [PATCH] bus-proxyd: overwrite 'sender' field in process_driver() function
Lukasz Skalski
l.skalski at samsung.com
Mon Jan 5 08:03:18 PST 2015
To keep compatibility with dbus-1, before we use synthetic_reply_method_*()
functions, we should overwrite 'sender' field - otherwise functions
sd_bus_message_new_method_return() and sd_bus_message_new_method_error() never
set 'destination' field.
Thanks to this we have proper 'destination' value:
dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply / org.freedesktop.DBus.ListNames
method return sender=org.freedesktop.DBus -> dest=:1.338 reply_serial=2
array [
string ":1.1"
string ":1.18"
string ":1.27"
string ":1.338"
string ":1.35"
string "org.freedesktop.DBus"
string "org.freedesktop.login1"
string "org.freedesktop.systemd1"
]
instead of '(null destination)':
dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply / org.freedesktop.DBus.ListNames
method return sender=org.freedesktop.DBus -> dest=(null destination) reply_serial=2
---
src/bus-proxyd/bus-proxyd.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c
index fc70cce..add1ccb 100644
--- a/src/bus-proxyd/bus-proxyd.c
+++ b/src/bus-proxyd/bus-proxyd.c
@@ -456,6 +456,7 @@ static int get_creds_by_message(sd_bus *bus, sd_bus_message *m, uint64_t mask, s
static int process_driver(sd_bus *a, sd_bus *b, sd_bus_message *m, Policy *policy, const struct ucred *ucred, Set *owned_names) {
int r;
+ _cleanup_free_ const char *unique;
assert(a);
assert(b);
@@ -467,6 +468,11 @@ static int process_driver(sd_bus *a, sd_bus *b, sd_bus_message *m, Policy *polic
if (!streq_ptr(sd_bus_message_get_destination(m), "org.freedesktop.DBus"))
return 0;
+ r = sd_bus_get_unique_name(a, &unique);
+ if (r < 0)
+ return 0;
+ m->sender = unique;
+
/* The "Hello()" call is is handled in process_hello() */
if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
--
1.9.3
More information about the systemd-devel
mailing list