diff options
author | Daniel Mack <daniel@zonque.org> | 2015-03-02 11:36:35 +0100 |
---|---|---|
committer | Daniel Mack <daniel@zonque.org> | 2015-03-02 11:36:35 +0100 |
commit | 606303a93ea52a70ebba55bb3152820e630f2164 (patch) | |
tree | d8f102c6dc42f6a5f81f3ee39639be4e5a872c95 /src/libsystemd/sd-bus/bus-control.c | |
parent | 9d3dec15ae8ac6153038c9b994e6c4fc22045180 (diff) |
sd-bus: sync kdbus.h (ABI break)
After some reconsideration, we decided to move the binary protocol
back to 64-bit wide UIDs and GIDs. After all, it should be possible
to redefine [gu]id_t to uint64_t and things should continue to
work. As we want to avoid such data types in kdbus.h, let's move
back to 64-bit values and be safe.
In sd-bus, we have to do a translation between uint64_t and gid_t
now for supplementary gids.
Some inline comments have also been updated in kdbus upstream.
Diffstat (limited to 'src/libsystemd/sd-bus/bus-control.c')
-rw-r--r-- | src/libsystemd/sd-bus/bus-control.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index 43c96726f8..c985b0e14a 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -583,16 +583,17 @@ static int bus_populate_creds_from_items( case KDBUS_ITEM_AUXGROUPS: if (mask & SD_BUS_CREDS_SUPPLEMENTARY_GIDS) { - size_t n; + size_t i, n; uid_t *g; - assert_cc(sizeof(gid_t) == sizeof(uint32_t)); - - n = (item->size - offsetof(struct kdbus_item, data32)) / sizeof(uint32_t); - g = newdup(gid_t, item->data32, n); + n = (item->size - offsetof(struct kdbus_item, data64)) / sizeof(uint64_t); + g = new(gid_t, n); if (!g) return -ENOMEM; + for (i = 0; i < n; i++) + g[i] = item->data64[i]; + free(c->supplementary_gids); c->supplementary_gids = g; c->n_supplementary_gids = n; |