X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=nss%2Fgr.c;h=79ac54000a885ab6fece8a82986e7fbda781ea1b;hb=22695332931698776b4075451435025377bdb3d1;hp=d8d6d6a1520109b9a94384e5098e816e1618c936;hpb=67fb8cb9a157931c94bb420f25c36d55c2876d02;p=nsscash%2Fnsscash.git diff --git a/nss/gr.c b/nss/gr.c index d8d6d6a..79ac540 100644 --- a/nss/gr.c +++ b/nss/gr.c @@ -32,10 +32,12 @@ // NOTE: This file is very similar to pw.c, keep in sync! +// TODO: adapt offsets to 32 bit to fit more than 5000 users per group (for 9 +// byte user names) struct group_entry { uint64_t gid; - // off_name = 0 + // off_name = 0, not stored on disk uint16_t off_passwd; uint16_t off_mem_off; @@ -51,11 +53,12 @@ struct group_entry { * * All offsets are relative to the beginning of data. */ - uint16_t data_size; + uint16_t data_size; // size of data in bytes const char data[]; } __attribute__((packed)); static bool entry_to_group(const struct group_entry *e, struct group *g, char *tmp, size_t space) { + // Space required for the gr_mem array const size_t mem_size = (size_t)(e->mem_count + 1) * sizeof(char *); if (space < e->data_size + mem_size) {