chiark / gitweb /
bus: send attach flags on BUS_MAKE
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 12 Dec 2014 13:02:57 +0000 (14:02 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Fri, 12 Dec 2014 13:02:57 +0000 (14:02 +0100)
Make sure to set send-attach-flags on BUS_MAKE. These control which
information is revealed about the bus-owner.

src/libsystemd/sd-bus/bus-kernel.c

index d910d8e492e59140a69b0cc020b5355c7d1bd97a..cdca48d92baa9cde3b403c042bcce8b7b6a89164 100644 (file)
@@ -1510,6 +1510,7 @@ int bus_kernel_create_bus(const char *name, bool world, char **s) {
         make = alloca0_align(offsetof(struct kdbus_cmd_make, items) +
                              ALIGN8(offsetof(struct kdbus_item, bloom_parameter) + sizeof(struct kdbus_bloom_parameter)) +
                              ALIGN8(offsetof(struct kdbus_item, data64) + sizeof(uint64_t)) +
+                             ALIGN8(offsetof(struct kdbus_item, data64) + sizeof(uint64_t)) +
                              ALIGN8(offsetof(struct kdbus_item, str) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1),
                              8);
 
@@ -1536,6 +1537,13 @@ int bus_kernel_create_bus(const char *name, bool world, char **s) {
         n->data64[0] = _KDBUS_ATTACH_ANY;
         make->size += ALIGN8(n->size);
 
+        /* Provide all metadata via bus-owner queries */
+        n = KDBUS_ITEM_NEXT(n);
+        n->type = KDBUS_ITEM_ATTACH_FLAGS_SEND;
+        n->size = offsetof(struct kdbus_item, data64) + sizeof(uint64_t);
+        n->data64[0] = _KDBUS_ATTACH_ANY;
+        make->size += ALIGN8(n->size);
+
         /* Set the a good name */
         n = KDBUS_ITEM_NEXT(n);
         sprintf(n->str, UID_FMT "-%s", getuid(), name);