diff options
Diffstat (limited to 'nslcd/db_shadow.c')
-rw-r--r-- | nslcd/db_shadow.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/nslcd/db_shadow.c b/nslcd/db_shadow.c index 4e4d8e1..4011c7e 100644 --- a/nslcd/db_shadow.c +++ b/nslcd/db_shadow.c @@ -76,32 +76,31 @@ NSLCD_HANDLE_UID(SHADOW, BYNAME ,/* decls */ char name[BUFLEN_NAME]; struct shadow ret; - ,/* read */ + ,/* int read(TFILE *fp) */ READ_STRING(fp, name); log_setrequest("shadow=\"%s\"", name); + return 0; ,/* check */ if (!isvalidname(name)) { log_log(LOG_WARNING, "request denied by validnames option"); return -1; } - ,/* search */ + ,/* tentry *search(struct session *session, int *rcp, bool *more) */ struct shadow, - static size_t i = 0; - for (; i < session->cnt; i++) + *more = false; + for (size_t i = 0; i < session->cnt; i++) { if (session->users[i].pw_uid != UID_INVALID && STR_CMP(name, session->users[i].pw_name)==0) { *rcp = 0; - size_t n = i; - i = session->cnt; - passwd2shadow(&(session->users[n]), &ret); + passwd2shadow(&(session->users[i]), &ret); return &ret; } } return NULL; - ,/* write */ + ,/* int write(TFILE *fp, tentry *entry) */ return write_shadow(fp, entry, calleruid); ,/* cleanup */ ) @@ -109,12 +108,14 @@ NSLCD_HANDLE_UID(SHADOW, BYNAME NSLCD_HANDLE_UID(SHADOW, ALL ,/* decls */ struct shadow ret; - ,/* read */ + ,/* int read(TFILE *fp) */ log_setrequest("shadow(all)"); + return 0; ,/* check */ - ,/* search */ + ,/* tentry *search(struct session *session, int *rcp, bool *more) */ struct shadow, - static size_t i = 0; + static __thread size_t i = 0; + *more = true; for (; i < session->cnt; i++) { if (session->users[i].pw_uid != UID_INVALID) { @@ -123,6 +124,7 @@ NSLCD_HANDLE_UID(SHADOW, ALL return &ret; } } + i = 0; return NULL; ,/* write */ return write_shadow(fp, entry, calleruid); |