summaryrefslogtreecommitdiff
path: root/source4/winbind
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-04-19 16:08:59 +0200
committerStefan Metzmacher <metze@samba.org>2010-04-19 16:09:14 +0200
commit23fd76433ab3f1fe4462e39633bc55e26bf050fc (patch)
treef02b482843ce1050fb61eea42794961bb909d6a3 /source4/winbind
parent629e73eeedb2aea2bda016bbc5559a66e3a86b59 (diff)
downloadsamba-23fd76433ab3f1fe4462e39633bc55e26bf050fc.tar.gz
samba-23fd76433ab3f1fe4462e39633bc55e26bf050fc.tar.bz2
samba-23fd76433ab3f1fe4462e39633bc55e26bf050fc.zip
s4:winbind: fill response.data.num_entries for WINBINDD_LIST_USERS
metze
Diffstat (limited to 'source4/winbind')
-rw-r--r--source4/winbind/wb_cmd_list_users.c6
-rw-r--r--source4/winbind/wb_samba3_cmd.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/source4/winbind/wb_cmd_list_users.c b/source4/winbind/wb_cmd_list_users.c
index ac44794acd..4728f3ad55 100644
--- a/source4/winbind/wb_cmd_list_users.c
+++ b/source4/winbind/wb_cmd_list_users.c
@@ -32,6 +32,7 @@ struct cmd_list_users_state {
char *domain_name;
uint32_t resume_index;
char *result;
+ uint32_t num_users;
};
static void cmd_list_users_recv_domain(struct composite_context *ctx);
@@ -55,6 +56,7 @@ struct composite_context *wb_cmd_list_users_send(TALLOC_CTX *mem_ctx,
result->private_data = state;
state->service = service;
state->resume_index = 0;
+ state->num_users = 0;
state->result = talloc_strdup(state, "");
if (composite_nomem(state->result, state->ctx)) return result;
@@ -142,6 +144,7 @@ static void cmd_list_users_recv_user_list(struct composite_context *ctx)
DEBUG(5, ("Appending user '%s'\n", user_list->out.users[i].username));
state->result = talloc_asprintf_append_buffer(state->result, "%s,",
user_list->out.users[i].username);
+ state->num_users++;
}
/* If the status is OK, we're finished, there's no more users.
@@ -174,7 +177,7 @@ static void cmd_list_users_recv_user_list(struct composite_context *ctx)
NTSTATUS wb_cmd_list_users_recv(struct composite_context *ctx,
TALLOC_CTX *mem_ctx, uint32_t *extra_data_len,
- char **extra_data)
+ char **extra_data, uint32_t *num_users)
{
NTSTATUS status = composite_wait(ctx);
@@ -186,6 +189,7 @@ NTSTATUS wb_cmd_list_users_recv(struct composite_context *ctx,
*extra_data_len = strlen(state->result);
*extra_data = talloc_steal(mem_ctx, state->result);
+ *num_users = state->num_users;
}
talloc_free(ctx);
diff --git a/source4/winbind/wb_samba3_cmd.c b/source4/winbind/wb_samba3_cmd.c
index 86ed827e6c..c66d696cce 100644
--- a/source4/winbind/wb_samba3_cmd.c
+++ b/source4/winbind/wb_samba3_cmd.c
@@ -946,18 +946,20 @@ static void list_users_recv(struct composite_context *ctx)
struct wbsrv_samba3_call);
uint32_t extra_data_len;
char *extra_data;
+ uint32_t num_users;
NTSTATUS status;
DEBUG(5, ("list_users_recv called\n"));
status = wb_cmd_list_users_recv(ctx, s3call, &extra_data_len,
- &extra_data);
+ &extra_data, &num_users);
if (NT_STATUS_IS_OK(status)) {
s3call->response.extra_data.data = extra_data;
s3call->response.length += extra_data_len;
if (extra_data) {
s3call->response.length += 1;
+ s3call->response.data.num_entries = num_users;
}
}