From 581fe6c8176c6ea4ad998566df0746bf7b56456f Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Thu, 2 Oct 2014 13:02:41 +0200 Subject: [PATCH] sd-bus: sync kdbus.h (ABI break) struct kdbus_cmd_conn_info takes a list of items now instead of a string. Fix the only user in SD of that ioctl. --- src/libsystemd/sd-bus/bus-control.c | 10 +++++++--- src/libsystemd/sd-bus/kdbus.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index 4ad44469b..d9a53c702 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -389,13 +389,17 @@ static int bus_get_owner_kdbus( if (r < 0) return r; if (r > 0) { - size = offsetof(struct kdbus_cmd_conn_info, name); + size = offsetof(struct kdbus_cmd_conn_info, items); cmd = alloca0_align(size, 8); cmd->id = id; } else { - size = offsetof(struct kdbus_cmd_conn_info, name) + strlen(name) + 1; + size_t item_size = KDBUS_ITEM_HEADER_SIZE + strlen(name) + 1; + + size = offsetof(struct kdbus_cmd_conn_info, items) + item_size; cmd = alloca0_align(size, 8); - strcpy(cmd->name, name); + cmd->items[0].size = item_size; + cmd->items[0].type = KDBUS_ITEM_NAME; + strcpy(cmd->items[0].str, name); } cmd->size = size; diff --git a/src/libsystemd/sd-bus/kdbus.h b/src/libsystemd/sd-bus/kdbus.h index 7fb11713f..c97994974 100644 --- a/src/libsystemd/sd-bus/kdbus.h +++ b/src/libsystemd/sd-bus/kdbus.h @@ -681,7 +681,7 @@ struct kdbus_cmd_conn_info { __u64 flags; __u64 id; __u64 offset; - char name[0]; + struct kdbus_item items[0]; } __attribute__((aligned(8))); /** -- 2.30.2