X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Fbus-kernel.c;h=2beaa892bca66de40c370af3cf9044a590c4a092;hp=907c5c5cf6458fbda0887a1c8c5eaca8bcfb4a6c;hb=e12d81ae80214ef05ddedafd016bdd604ce17d12;hpb=8514b67754c5ff7fa628929b3d27131010c21842 diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index 907c5c5cf..2beaa892b 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -677,21 +677,10 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { case KDBUS_ITEM_AUXGROUPS: if (bus->creds_mask & SD_BUS_CREDS_SUPPLEMENTARY_GIDS) { - size_t i, n; - uid_t *u; - n = (d->size - offsetof(struct kdbus_item, data32)) / sizeof(uint32_t); - u = new(uid_t, n); - if (!u) { - r = -ENOMEM; - goto fail; - } - - for (i = 0; i < n; i++) - u[i] = (uid_t) d->data32[i]; - - m->creds.supplementary_gids = u; - m->creds.n_supplementary_gids = n; + assert_cc(sizeof(gid_t) == sizeof(uint32_t)); + m->creds.n_supplementary_gids = (d->size - offsetof(struct kdbus_item, data32)) / sizeof(uint32_t); + m->creds.supplementary_gids = (gid_t*) d->data32; m->creds.mask |= SD_BUS_CREDS_SUPPLEMENTARY_GIDS; }