summaryrefslogtreecommitdiff
path: root/nslcd/db_passwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/db_passwd.c')
-rw-r--r--nslcd/db_passwd.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/nslcd/db_passwd.c b/nslcd/db_passwd.c
index 743f4bc..ed57098 100644
--- a/nslcd/db_passwd.c
+++ b/nslcd/db_passwd.c
@@ -84,9 +84,10 @@ static int write_passwd(TFILE *fp, struct passwd *entry, uid_t calleruid)
NSLCD_HANDLE_UID(PASSWD, BYNAME
,/* decls */
char name[BUFLEN_NAME];
- ,/* read */
+ ,/* int read(TFILE *fp) */
READ_STRING(fp, name);
log_setrequest("passwd=\"%s\"", name);
+ return 0;
,/* check */
if (!isvalidname(name))
{
@@ -94,21 +95,19 @@ NSLCD_HANDLE_UID(PASSWD, BYNAME
return -1;
}
nsswitch_check_reload();
- ,/* search */
+ ,/* tentry *search(struct session *session, int *rcp, bool *more) */
struct passwd,
- 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;
- return &(session->users[n]);
+ return &(session->users[i]);
}
}
return NULL;
- ,/* write */
+ ,/* int write(TFILE *fp, tentry *entry) */
return write_passwd(fp, entry, calleruid);
,/* cleanup */
)
@@ -116,46 +115,47 @@ NSLCD_HANDLE_UID(PASSWD, BYNAME
NSLCD_HANDLE_UID(PASSWD, BYUID
,/* decls */
uid_t uid;
- ,/* read */
+ ,/* int read(TFILe *fp) */
READ_INT32(fp, uid);
log_setrequest("passwd=%lu", (unsigned long int)uid);
+ return 0;
,/* check */
if (uid < nslcd_cfg->nss_min_uid)
{
/* return an empty result */
- WRITE_INT32(fp, NSLCD_VERSION);
- WRITE_INT32(fp, NSLCD_ACTION_PASSWD_BYUID);
- WRITE_INT32(fp, NSLCD_RESULT_END);
+ WRITE_INT32(_handle_fp, NSLCD_VERSION);
+ WRITE_INT32(_handle_fp, NSLCD_ACTION_PASSWD_BYUID);
+ WRITE_INT32(_handle_fp, NSLCD_RESULT_END);
return 0;
}
nsswitch_check_reload();
- ,/* search */
+ ,/* tentry *search(struct session *session, int *rcp, bool *more) */
struct passwd,
- static size_t i = 0;
- for (; i < session->cnt; i++)
+ *more = false;
+ for (size_t i = 0; i < session->cnt; i++)
{
if (uid == session->users[i].pw_uid) {
*rcp = 0;
- size_t n = i;
- i = session->cnt;
- return &(session->users[n]);
+ return &(session->users[i]);
}
}
return NULL;
- ,/* write */
+ ,/* int write(TFILe *fp, tentry *entry */
return write_passwd(fp, entry, calleruid);
,/* cleanup */
)
NSLCD_HANDLE_UID(PASSWD, ALL
,/* decls */
- ,/* read */
+ ,/* int read(TFILE *fp) */
log_setrequest("passwd(all)");
+ return 0;
,/* check */
nsswitch_check_reload();
- ,/* search */
+ ,/* tentry *search(struct session *session, int *rcp, bool *more) */
struct passwd,
- 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) {
@@ -163,8 +163,9 @@ NSLCD_HANDLE_UID(PASSWD, ALL
return &(session->users[i]);
}
}
+ i = 0;
return NULL;
- ,/* write */
+ ,/* int write(TFILE *fp, tentry *entry) */
return write_passwd(fp, entry, calleruid);
,/* cleanup */
)