X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=nss%2Fpw.c;h=c7e056666216c1cf7e3143dd5626583d1b22298d;hb=959bf6db509da88477dc64d40cf04c4def91a7b3;hp=813b4f5cbbe433a4788deec326932fbc790eada1;hpb=92afde4e875a96e1ab865e29b9f0d11b08d7db1c;p=nsscash%2Fnsscash.git diff --git a/nss/pw.c b/nss/pw.c index 813b4f5..c7e0566 100644 --- a/nss/pw.c +++ b/nss/pw.c @@ -18,8 +18,6 @@ */ #include -#include -#include #include #include #include @@ -27,11 +25,13 @@ #include -#include "cash.h" +#include "cash_nss.h" #include "file.h" #include "search.h" +// NOTE: This file is very similar to gr.c, keep in sync! + struct passwd_entry { uint64_t uid; uint64_t gid; @@ -48,7 +48,7 @@ struct passwd_entry { * concatenated, with their trailing NUL. The off_* variables point to * beginning of each string. */ - char data[]; + const char data[]; } __attribute__((packed)); static bool entry_to_passwd(const struct passwd_entry *e, struct passwd *p, char *tmp, size_t space) { @@ -140,9 +140,9 @@ static enum nss_status internal_getpw(struct search_key *key, struct passwd *res const struct header *h = f.header; key->data = h->data + h->off_data; - uint64_t off_index = (key->id != NULL) - ? h->off_id_index - : h->off_name_index; + uint64_t off_index = (key->name != NULL) + ? h->off_name_index + : h->off_id_index; uint64_t *off = search(key, h->data + off_index, h->count); if (off == NULL) { unmap_file(&f);