test-fd: add a bloom filter to broadcast message
authorDaniel Mack <daniel@zonque.org>
Wed, 22 Oct 2014 12:18:18 +0000 (14:18 +0200)
committerDaniel Mack <daniel@zonque.org>
Wed, 22 Oct 2014 12:18:18 +0000 (14:18 +0200)
Satisfy a kernel check so we can be sure we really bail out due
to the check we're actually enforcing.

Signed-off-by: Daniel Mack <daniel@zonque.org>
test/test-fd.c

index 84708e824a4565d454dd7ba1c2fa4612b2fd536d..b635b2c45c1d79e6d74006f0e37f92066a4d49a1 100644 (file)
@@ -93,11 +93,20 @@ static int send_memfds(struct kdbus_conn *conn, uint64_t dst_id,
        size = sizeof(struct kdbus_msg);
        size += memfd_count * KDBUS_ITEM_SIZE(sizeof(struct kdbus_memfd));
 
+       if (dst_id == KDBUS_DST_ID_BROADCAST)
+               size += KDBUS_ITEM_SIZE(sizeof(struct kdbus_bloom_filter)) + 64;
+
        ret = make_msg_payload_dbus(conn->id, dst_id, size, &msg);
        ASSERT_RETURN_VAL(ret == 0, ret);
 
        item = msg->items;
 
+       if (dst_id == KDBUS_DST_ID_BROADCAST) {
+               item->type = KDBUS_ITEM_BLOOM_FILTER;
+               item->size = KDBUS_ITEM_SIZE(sizeof(struct kdbus_bloom_filter)) + 64;
+               item = KDBUS_ITEM_NEXT(item);
+       }
+
        make_item_memfds(item, memfds_array, memfd_count);
 
        ret = ioctl(conn->fd, KDBUS_CMD_MSG_SEND, msg);
@@ -325,10 +334,9 @@ int kdbus_test_fd_passing(struct kdbus_test_env *env)
        memfd = memfd_write("memfd-name", &now, sizeof(now));
        ASSERT_RETURN(memfd >= 0);
 
-       /* Try to broadcast memfd. This must fail. */
-       ret = send_memfds(conn_src, KDBUS_DST_ID_BROADCAST,
-                         (int *)&memfd, 1);
-       ASSERT_RETURN(ret == -ENOTUNIQ);
+       /* Try to broadcast memfd. This must succeed. */
+       ret = send_memfds(conn_src, KDBUS_DST_ID_BROADCAST, (int *)&memfd, 1);
+       ASSERT_RETURN(ret == 0);
 
        ret = kdbus_send_multiple_fds(conn_src, conn_dst);
        ASSERT_RETURN(ret == 0);