if (!(c->mask & SD_BUS_CREDS_WELL_KNOWN_NAMES))
return -ENODATA;
+ /* As a special hack we return the bus driver as well-known
+ * names list when this is requested. */
+ if (c->well_known_names_driver) {
+ static const char* const wkn[] = {
+ "org.freedesktop.DBus",
+ NULL
+ };
+
+ *well_known_names = (char**) wkn;
+ return 0;
+ }
+
*well_known_names = c->well_known_names;
return 0;
}
}
/* Override information from the user header with data from the kernel */
- if (k->src_id == KDBUS_SRC_ID_KERNEL)
+ if (k->src_id == KDBUS_SRC_ID_KERNEL) {
m->sender = m->creds.unique_name = (char*) "org.freedesktop.DBus";
- else {
+ m->creds.well_known_names_driver = true;
+ m->creds.mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES & bus->creds_mask;
+ } else {
snprintf(m->sender_buffer, sizeof(m->sender_buffer), ":1.%llu", (unsigned long long) k->src_id);
m->sender = m->creds.unique_name = m->sender_buffer;
}
return r;
m->sender = "org.freedesktop.DBus";
+ m->creds.well_known_names_driver = true;
+ m->creds.mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES & bus->creds_mask;
r = bus_seal_synthetic_message(bus, m);
if (r < 0)
return r;
m->sender = "org.freedesktop.DBus";
+ m->creds.well_known_names_driver = true;
+ m->creds.mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES & bus->creds_mask;
r = bus_seal_synthetic_message(bus, m);
if (r < 0)