summaryrefslogtreecommitdiff
path: root/nslcd/db_shadow.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/db_shadow.c')
-rw-r--r--nslcd/db_shadow.c24
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);