chiark / gitweb /
sd-bus: given that the kernel now passes the auxgroups list as 32bit array to us...
[elogind.git] / src / libsystemd / sd-bus / bus-kernel.c
index 907c5c5cf6458fbda0887a1c8c5eaca8bcfb4a6c..2beaa892bca66de40c370af3cf9044a590c4a092 100644 (file)
@@ -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;
                         }