summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mack <daniel@zonque.org>2014-10-22 14:18:18 +0200
committerDaniel Mack <daniel@zonque.org>2014-10-22 14:18:18 +0200
commit237153466d1a6efa54dada51fb4f944bcd6a7394 (patch)
tree7cfc7382d5f38c68f22dfce4a964033cd5ac9809
parent559d061d5853b63656d71e63d3f491ae9679d8ed (diff)
downloadkdbus-bus-237153466d1a6efa54dada51fb4f944bcd6a7394.tar.gz
kdbus-bus-237153466d1a6efa54dada51fb4f944bcd6a7394.tar.bz2
kdbus-bus-237153466d1a6efa54dada51fb4f944bcd6a7394.zip
test-fd: add a bloom filter to broadcast message
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>
-rw-r--r--test/test-fd.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/test/test-fd.c b/test/test-fd.c
index 84708e824a4..b635b2c45c1 100644
--- a/test/test-fd.c
+++ b/test/test-fd.c
@@ -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);