summaryrefslogtreecommitdiff
path: root/source3/winbindd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/winbindd')
-rw-r--r--source3/winbindd/winbindd.c25
-rw-r--r--source3/winbindd/winbindd.h3
-rw-r--r--source3/winbindd/winbindd_async.c28
-rw-r--r--source3/winbindd/winbindd_ccache_access.c10
-rw-r--r--source3/winbindd/winbindd_dual.c31
-rw-r--r--source3/winbindd/winbindd_group.c66
-rw-r--r--source3/winbindd/winbindd_idmap.c18
-rw-r--r--source3/winbindd/winbindd_locator.c18
-rw-r--r--source3/winbindd/winbindd_misc.c68
-rw-r--r--source3/winbindd/winbindd_pam.c147
-rw-r--r--source3/winbindd/winbindd_sid.c34
-rw-r--r--source3/winbindd/winbindd_user.c22
-rw-r--r--source3/winbindd/winbindd_util.c12
-rw-r--r--source3/winbindd/winbindd_wins.c4
14 files changed, 246 insertions, 240 deletions
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 716e0edf5c..9cc1bf2701 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -531,10 +531,10 @@ static void process_request(struct winbindd_cli_state *state)
struct winbindd_dispatch_table *table = dispatch_table;
struct winbindd_async_dispatch_table *atable;
- ZERO_STRUCT(state->response);
+ ZERO_STRUCTP(state->response);
- state->response.result = WINBINDD_PENDING;
- state->response.length = sizeof(struct winbindd_response);
+ state->response->result = WINBINDD_PENDING;
+ state->response->length = sizeof(struct winbindd_response);
state->mem_ctx = talloc_init("winbind request");
if (state->mem_ctx == NULL)
@@ -599,9 +599,9 @@ static void wb_request_done(struct tevent_req *req)
DEBUG(10, ("returning %s\n", nt_errstr(status)));
request_error(state);
}
- state->response = *response;
- state->response.result = WINBINDD_PENDING;
- state->response.length = sizeof(struct winbindd_response);
+ state->response = response;
+ state->response->result = WINBINDD_PENDING;
+ state->response->length = sizeof(struct winbindd_response);
request_ok(state);
}
@@ -628,7 +628,7 @@ static void request_finished(struct winbindd_cli_state *state)
req = wb_resp_write_send(state, winbind_event_context(),
state->out_queue, state->sock,
- &state->response);
+ state->response);
if (req == NULL) {
remove_client(state);
return;
@@ -665,15 +665,15 @@ static void winbind_client_response_written(struct tevent_req *req)
void request_error(struct winbindd_cli_state *state)
{
- SMB_ASSERT(state->response.result == WINBINDD_PENDING);
- state->response.result = WINBINDD_ERROR;
+ SMB_ASSERT(state->response->result == WINBINDD_PENDING);
+ state->response->result = WINBINDD_ERROR;
request_finished(state);
}
void request_ok(struct winbindd_cli_state *state)
{
- SMB_ASSERT(state->response.result == WINBINDD_PENDING);
- state->response.result = WINBINDD_OK;
+ SMB_ASSERT(state->response->result == WINBINDD_PENDING);
+ state->response->result = WINBINDD_OK;
request_finished(state);
}
@@ -709,6 +709,7 @@ static void new_connection(int listen_sock, bool privileged)
}
state->sock = sock;
+ state->response = &state->_response;
state->out_queue = tevent_queue_create(state, "winbind client reply");
if (state->out_queue == NULL) {
@@ -804,7 +805,7 @@ static bool remove_idle_client(void)
int nidle = 0;
for (state = winbindd_client_list(); state; state = state->next) {
- if (state->response.result != WINBINDD_PENDING &&
+ if (state->response->result != WINBINDD_PENDING &&
!state->getpwent_state && !state->getgrent_state) {
nidle++;
if (!last_access || state->last_access < last_access) {
diff --git a/source3/winbindd/winbindd.h b/source3/winbindd/winbindd.h
index 324b13ed9d..4b4fc04d6d 100644
--- a/source3/winbindd/winbindd.h
+++ b/source3/winbindd/winbindd.h
@@ -60,7 +60,8 @@ struct winbindd_cli_state {
struct winbindd_request *request; /* Request from client */
struct winbindd_request _request;
struct tevent_queue *out_queue;
- struct winbindd_response response; /* Respose to client */
+ struct winbindd_response *response;
+ struct winbindd_response _response; /* Respose to client */
bool getpwent_initialized; /* Has getpwent_state been
* initialized? */
bool getgrent_initialized; /* Has getgrent_state been
diff --git a/source3/winbindd/winbindd_async.c b/source3/winbindd/winbindd_async.c
index 966a3b3456..56175e2659 100644
--- a/source3/winbindd/winbindd_async.c
+++ b/source3/winbindd/winbindd_async.c
@@ -255,9 +255,9 @@ enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
return WINBINDD_ERROR;
}
- fstrcpy(state->response.data.name.dom_name, dom_name);
- fstrcpy(state->response.data.name.name, name);
- state->response.data.name.type = type;
+ fstrcpy(state->response->data.name.dom_name, dom_name);
+ fstrcpy(state->response->data.name.name, name);
+ state->response->data.name.type = type;
TALLOC_FREE(dom_name);
TALLOC_FREE(name);
@@ -447,8 +447,8 @@ enum winbindd_result winbindd_dual_lookupname(struct winbindd_domain *domain,
return WINBINDD_ERROR;
}
- sid_to_fstring(state->response.data.sid.sid, &sid);
- state->response.data.sid.type = type;
+ sid_to_fstring(state->response->data.sid.sid, &sid);
+ state->response->data.sid.type = type;
return WINBINDD_OK;
}
@@ -501,7 +501,7 @@ enum winbindd_result winbindd_dual_list_users(struct winbindd_domain *domain,
uint32_t extra_data_len = 0, i;
/* Must copy domain into response first for debugging in parent */
- fstrcpy(state->response.data.name.dom_name, domain->name);
+ fstrcpy(state->response->data.name.dom_name, domain->name);
/* Query user info */
methods = domain->methods;
@@ -545,8 +545,8 @@ enum winbindd_result winbindd_dual_list_users(struct winbindd_domain *domain,
if (extra_data) {
/* remove trailing ',' */
extra_data[extra_data_len - 1] = '\0';
- state->response.extra_data.data = extra_data;
- state->response.length += extra_data_len;
+ state->response->extra_data.data = extra_data;
+ state->response->length += extra_data_len;
}
return WINBINDD_OK;
@@ -562,7 +562,7 @@ enum winbindd_result winbindd_dual_list_groups(struct winbindd_domain *domain,
ZERO_STRUCT(groups);
/* Must copy domain into response first for debugging in parent */
- fstrcpy(state->response.data.name.dom_name, domain->name);
+ fstrcpy(state->response->data.name.dom_name, domain->name);
fstrcpy(groups.domain_name, domain->name);
/* Get list of sam groups */
@@ -603,8 +603,8 @@ enum winbindd_result winbindd_dual_list_groups(struct winbindd_domain *domain,
if (extra_data) {
/* remove trailing ',' */
extra_data[extra_data_len - 1] = '\0';
- state->response.extra_data.data = extra_data;
- state->response.length += extra_data_len;
+ state->response->extra_data.data = extra_data;
+ state->response->length += extra_data_len;
}
return WINBINDD_OK;
@@ -734,11 +734,11 @@ enum winbindd_result winbindd_dual_lookuprids(struct winbindd_domain *domain,
"%d %s\n", types[i], names[i]);
}
- fstrcpy(state->response.data.domain_name, domain_name);
+ fstrcpy(state->response->data.domain_name, domain_name);
if (result != NULL) {
- state->response.extra_data.data = result;
- state->response.length += len+1;
+ state->response->extra_data.data = result;
+ state->response->length += len+1;
}
return WINBINDD_OK;
diff --git a/source3/winbindd/winbindd_ccache_access.c b/source3/winbindd/winbindd_ccache_access.c
index 479c114eb8..ffb20ac6c4 100644
--- a/source3/winbindd/winbindd_ccache_access.c
+++ b/source3/winbindd/winbindd_ccache_access.c
@@ -246,7 +246,7 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *doma
if (initial_blob_len == 0 && challenge_blob_len == 0) {
/* this is just a probe to see if credentials are available. */
result = NT_STATUS_OK;
- state->response.data.ccache_ntlm_auth.auth_blob_len = 0;
+ state->response->data.ccache_ntlm_auth.auth_blob_len = 0;
goto process_result;
}
@@ -269,14 +269,14 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *doma
goto process_result;
}
- state->response.extra_data.data = talloc_memdup(
+ state->response->extra_data.data = talloc_memdup(
state->mem_ctx, auth.data, auth.length);
- if (!state->response.extra_data.data) {
+ if (!state->response->extra_data.data) {
result = NT_STATUS_NO_MEMORY;
goto process_result;
}
- state->response.length += auth.length;
- state->response.data.ccache_ntlm_auth.auth_blob_len = auth.length;
+ state->response->length += auth.length;
+ state->response->data.ccache_ntlm_auth.auth_blob_len = auth.length;
data_blob_free(&auth);
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 0ed4706f39..3e0d956a74 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -516,13 +516,13 @@ static void recvfrom_child(void *private_data_data, bool success)
{
struct winbindd_cli_state *state =
talloc_get_type_abort(private_data_data, struct winbindd_cli_state);
- enum winbindd_result result = state->response.result;
+ enum winbindd_result result = state->response->result;
/* This is an optimization: The child has written directly to the
* response buffer. The request itself is still in pending state,
* state that in the result code. */
- state->response.result = WINBINDD_PENDING;
+ state->response->result = WINBINDD_PENDING;
if ((!success) || (result != WINBINDD_OK)) {
request_error(state);
@@ -536,14 +536,14 @@ void sendto_child(struct winbindd_cli_state *state,
struct winbindd_child *child)
{
async_request(state->mem_ctx, child, state->request,
- &state->response, recvfrom_child, state);
+ state->response, recvfrom_child, state);
}
void sendto_domain(struct winbindd_cli_state *state,
struct winbindd_domain *domain)
{
async_domain_request(state->mem_ctx, domain,
- state->request, &state->response,
+ state->request, state->response,
recvfrom_child, state);
}
@@ -556,8 +556,8 @@ static void child_process_request(struct winbindd_child *child,
/* Free response data - we may be interrupted and receive another
command before being able to send this data off. */
- state->response.result = WINBINDD_ERROR;
- state->response.length = sizeof(struct winbindd_response);
+ state->response->result = WINBINDD_ERROR;
+ state->response->length = sizeof(struct winbindd_response);
/* as all requests in the child are sync, we can use talloc_tos() */
state->mem_ctx = talloc_tos();
@@ -568,14 +568,14 @@ static void child_process_request(struct winbindd_child *child,
if (state->request->cmd == table->struct_cmd) {
DEBUG(10,("child_process_request: request fn %s\n",
table->name));
- state->response.result = table->struct_fn(domain, state);
+ state->response->result = table->struct_fn(domain, state);
return;
}
}
DEBUG(1 ,("child_process_request: unknown request fn number %d\n",
(int)state->request->cmd));
- state->response.result = WINBINDD_ERROR;
+ state->response->result = WINBINDD_ERROR;
}
void setup_child(struct winbindd_child *child,
@@ -1334,6 +1334,7 @@ static bool fork_domain_child(struct winbindd_child *child)
ZERO_STRUCT(state);
state.pid = sys_getpid();
state.request = &state._request;
+ state.response = &state._response;
child->pid = sys_fork();
@@ -1525,7 +1526,7 @@ static bool fork_domain_child(struct winbindd_child *child)
DEBUG(4,("child daemon request %d\n", (int)state.request->cmd));
- ZERO_STRUCT(state.response);
+ ZERO_STRUCTP(state.response);
state.request->null_term = '\0';
child_process_request(child, &state);
@@ -1534,22 +1535,22 @@ static bool fork_domain_child(struct winbindd_child *child)
SAFE_FREE(state.request->extra_data.data);
- iov[0].iov_base = (void *)&state.response;
+ iov[0].iov_base = (void *)state.response;
iov[0].iov_len = sizeof(struct winbindd_response);
iov_count = 1;
- if (state.response.length > sizeof(struct winbindd_response)) {
+ if (state.response->length > sizeof(struct winbindd_response)) {
iov[1].iov_base =
- (void *)state.response.extra_data.data;
- iov[1].iov_len = state.response.length-iov[0].iov_len;
+ (void *)state.response->extra_data.data;
+ iov[1].iov_len = state.response->length-iov[0].iov_len;
iov_count = 2;
}
DEBUG(10, ("Writing %d bytes to parent\n",
- (int)state.response.length));
+ (int)state.response->length));
if (write_data_iov(state.sock, iov, iov_count) !=
- state.response.length) {
+ state.response->length) {
DEBUG(0, ("Could not write result\n"));
exit(1);
}
diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c
index 2e8905f7f0..f78becb699 100644
--- a/source3/winbindd/winbindd_group.c
+++ b/source3/winbindd/winbindd_group.c
@@ -888,7 +888,7 @@ static void getgrsid_sid2gid_recv(void *private_data, bool success, gid_t gid)
return;
}
- if (!fill_grent(s->state->mem_ctx, &s->state->response.data.gr,
+ if (!fill_grent(s->state->mem_ctx, &s->state->response->data.gr,
dom_name, group_name, gid) ||
!fill_grent_mem(domain, s->state, &s->group_sid, s->group_type,
&num_gr_mem, &gr_mem, &gr_mem_len))
@@ -897,16 +897,16 @@ static void getgrsid_sid2gid_recv(void *private_data, bool success, gid_t gid)
return;
}
- s->state->response.data.gr.num_gr_mem = (uint32)num_gr_mem;
+ s->state->response->data.gr.num_gr_mem = (uint32)num_gr_mem;
/* Group membership lives at start of extra data */
- s->state->response.data.gr.gr_mem_ofs = 0;
+ s->state->response->data.gr.gr_mem_ofs = 0;
- s->state->response.length += gr_mem_len;
- s->state->response.extra_data.data = talloc_memdup(
+ s->state->response->length += gr_mem_len;
+ s->state->response->extra_data.data = talloc_memdup(
s->state->mem_ctx, gr_mem, gr_mem_len);
- if (s->state->response.extra_data.data == NULL) {
+ if (s->state->response->extra_data.data == NULL) {
request_error(s->state);
return;
}
@@ -1308,9 +1308,9 @@ void winbindd_getgrent(struct winbindd_cli_state *state)
request_error(state);
return;
}
- state->response.extra_data.data = group_list;
+ state->response->extra_data.data = group_list;
- state->response.data.num_entries = 0;
+ state->response->data.num_entries = 0;
if (!state->getgrent_initialized)
winbindd_setgrent_internal(state);
@@ -1481,12 +1481,12 @@ void winbindd_getgrent(struct winbindd_cli_state *state)
if (result) {
DEBUG(10, ("adding group num_entries = %d\n",
- state->response.data.num_entries));
+ state->response->data.num_entries));
group_list_ndx++;
- state->response.data.num_entries++;
+ state->response->data.num_entries++;
- state->response.length +=
+ state->response->length +=
sizeof(struct winbindd_gr);
} else {
@@ -1500,11 +1500,11 @@ void winbindd_getgrent(struct winbindd_cli_state *state)
if (group_list_ndx == 0)
goto done;
- state->response.extra_data.data = talloc_realloc_size(
- state->mem_ctx, state->response.extra_data.data,
+ state->response->extra_data.data = talloc_realloc_size(
+ state->mem_ctx, state->response->extra_data.data,
group_list_ndx * sizeof(struct winbindd_gr) + gr_mem_list_len);
- if (!state->response.extra_data.data) {
+ if (!state->response->extra_data.data) {
DEBUG(0, ("out of memory\n"));
group_list_ndx = 0;
SAFE_FREE(gr_mem_list);
@@ -1512,11 +1512,11 @@ void winbindd_getgrent(struct winbindd_cli_state *state)
return;
}
- memcpy(&((char *)state->response.extra_data.data)
+ memcpy(&((char *)state->response->extra_data.data)
[group_list_ndx * sizeof(struct winbindd_gr)],
gr_mem_list, gr_mem_list_len);
- state->response.length += gr_mem_list_len;
+ state->response->length += gr_mem_list_len;
DEBUG(10, ("returning %d groups, length = %d\n",
group_list_ndx, gr_mem_list_len));
@@ -1724,10 +1724,10 @@ static void getgroups_sid2gid_recv(void *private_data, bool success, gid_t gid)
return;
}
- s->state->response.data.num_entries = s->num_token_gids;
+ s->state->response->data.num_entries = s->num_token_gids;
if (s->num_token_gids) {
- s->state->response.extra_data.data = s->token_gids;
- s->state->response.length += s->num_token_gids * sizeof(gid_t);
+ s->state->response->extra_data.data = s->token_gids;
+ s->state->response->length += s->num_token_gids * sizeof(gid_t);
}
request_ok(s->state);
}
@@ -1809,9 +1809,9 @@ static void getusersids_recv(void *private_data, bool success, DOM_SID *sids,
}
/* Send data back to client */
- state->response.data.num_entries = num_sids;
- state->response.extra_data.data = ret;
- state->response.length += ret_size;
+ state->response->data.num_entries = num_sids;
+ state->response->extra_data.data = ret;
+ state->response->length += ret_size;
request_ok(state);
}
@@ -1868,8 +1868,8 @@ enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *doma
return WINBINDD_ERROR;
if (num_groups == 0) {
- state->response.data.num_entries = 0;
- state->response.extra_data.data = NULL;
+ state->response->data.num_entries = 0;
+ state->response->extra_data.data = NULL;
return WINBINDD_OK;
}
@@ -1880,9 +1880,9 @@ enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *doma
return WINBINDD_ERROR;
}
- state->response.extra_data.data = sidstring;
- state->response.length += len+1;
- state->response.data.num_entries = num_groups;
+ state->response->extra_data.data = sidstring;
+ state->response->length += len+1;
+ state->response->data.num_entries = num_groups;
return WINBINDD_OK;
}
@@ -1979,18 +1979,18 @@ enum winbindd_result winbindd_dual_getsidaliases(struct winbindd_domain *domain,
if (!print_sidlist(state->mem_ctx, sids, num_sids, &sidstr, &len)) {
DEBUG(0, ("Could not print_sidlist\n"));
- state->response.extra_data.data = NULL;
+ state->response->extra_data.data = NULL;
return WINBINDD_ERROR;
}
- state->response.extra_data.data = NULL;
+ state->response->extra_data.data = NULL;
if (sidstr) {
- state->response.extra_data.data = sidstr;
+ state->response->extra_data.data = sidstr;
DEBUG(10, ("aliases_list: %s\n",
- (char *)state->response.extra_data.data));
- state->response.length += len+1;
- state->response.data.num_entries = num_sids;
+ (char *)state->response->extra_data.data));
+ state->response->length += len+1;
+ state->response->data.num_entries = num_sids;
}
return WINBINDD_OK;
diff --git a/source3/winbindd/winbindd_idmap.c b/source3/winbindd/winbindd_idmap.c
index d142be2b6e..6e24a9c212 100644
--- a/source3/winbindd/winbindd_idmap.c
+++ b/source3/winbindd/winbindd_idmap.c
@@ -299,11 +299,11 @@ enum winbindd_result winbindd_dual_sid2uid(struct winbindd_domain *domain,
}
result = idmap_sid_to_uid(state->request->domain_name, &sid,
- &state->response.data.uid);
+ &state->response->data.uid);
DEBUG(10, ("winbindd_dual_sid2uid: 0x%08x - %s - %u\n",
NT_STATUS_V(result), sid_string_dbg(&sid),
- (unsigned int)state->response.data.uid));
+ (unsigned int)state->response->data.uid));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -372,11 +372,11 @@ enum winbindd_result winbindd_dual_sid2gid(struct winbindd_domain *domain,
/* Find gid for this sid and return it, possibly ask the slow remote idmap */
result = idmap_sid_to_gid(state->request->domain_name, &sid,
- &state->response.data.gid);
+ &state->response->data.gid);
DEBUG(10, ("winbindd_dual_sid2gid: 0x%08x - %s - %u\n",
NT_STATUS_V(result), sid_string_dbg(&sid),
- (unsigned int)state->response.data.gid));
+ (unsigned int)state->response->data.gid));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -444,8 +444,8 @@ enum winbindd_result winbindd_dual_uid2sid(struct winbindd_domain *domain,
state->request->data.uid);
if (NT_STATUS_IS_OK(result)) {
- sid_to_fstring(state->response.data.sid.sid, &sid);
- state->response.data.sid.type = SID_NAME_USER;
+ sid_to_fstring(state->response->data.sid.sid, &sid);
+ state->response->data.sid.type = SID_NAME_USER;
return WINBINDD_OK;
}
@@ -512,11 +512,11 @@ enum winbindd_result winbindd_dual_gid2sid(struct winbindd_domain *domain,
state->request->data.gid);
if (NT_STATUS_IS_OK(result)) {
- sid_to_fstring(state->response.data.sid.sid, &sid);
+ sid_to_fstring(state->response->data.sid.sid, &sid);
DEBUG(10, ("[%5lu]: retrieved sid: %s\n",
(unsigned long)state->pid,
- state->response.data.sid.sid));
- state->response.data.sid.type = SID_NAME_DOM_GRP;
+ state->response->data.sid.sid));
+ state->response->data.sid.type = SID_NAME_DOM_GRP;
return WINBINDD_OK;
}
diff --git a/source3/winbindd/winbindd_locator.c b/source3/winbindd/winbindd_locator.c
index e03e77e4cc..43dadfae29 100644
--- a/source3/winbindd/winbindd_locator.c
+++ b/source3/winbindd/winbindd_locator.c
@@ -142,15 +142,15 @@ static enum winbindd_result dual_dsgetdcname(struct winbindd_domain *domain,
return WINBINDD_ERROR;
}
- fstrcpy(state->response.data.dsgetdcname.dc_unc, info->dc_unc);
- fstrcpy(state->response.data.dsgetdcname.dc_address, info->dc_address);
- state->response.data.dsgetdcname.dc_address_type = info->dc_address_type;
- fstrcpy(state->response.data.dsgetdcname.domain_guid, guid_str);
- fstrcpy(state->response.data.dsgetdcname.domain_name, info->domain_name);
- fstrcpy(state->response.data.dsgetdcname.forest_name, info->forest_name);
- state->response.data.dsgetdcname.dc_flags = info->dc_flags;
- fstrcpy(state->response.data.dsgetdcname.dc_site_name, info->dc_site_name);
- fstrcpy(state->response.data.dsgetdcname.client_site_name, info->client_site_name);
+ fstrcpy(state->response->data.dsgetdcname.dc_unc, info->dc_unc);
+ fstrcpy(state->response->data.dsgetdcname.dc_address, info->dc_address);
+ state->response->data.dsgetdcname.dc_address_type = info->dc_address_type;
+ fstrcpy(state->response->data.dsgetdcname.domain_guid, guid_str);
+ fstrcpy(state->response->data.dsgetdcname.domain_name, info->domain_name);
+ fstrcpy(state->response->data.dsgetdcname.forest_name, info->forest_name);
+ state->response->data.dsgetdcname.dc_flags = info->dc_flags;
+ fstrcpy(state->response->data.dsgetdcname.dc_site_name, info->dc_site_name);
+ fstrcpy(state->response->data.dsgetdcname.client_site_name, info->client_site_name);
return WINBINDD_OK;
}
diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c
index 1d0d7f1c51..3f71910023 100644
--- a/source3/winbindd/winbindd_misc.c
+++ b/source3/winbindd/winbindd_misc.c
@@ -86,10 +86,10 @@ enum winbindd_result winbindd_dual_check_machine_acct(struct winbindd_domain *do
"good" : "bad"));
done:
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Checking the trust account password returned %s\n",
- state->response.data.auth.nt_status_string));
+ state->response->data.auth.nt_status_string));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -209,8 +209,8 @@ static void listent_recv(void *private_data, bool success, fstring dom_name,
/* Return list of all users/groups to the client */
if (state->extra_data) {
- state->cli_state->response.extra_data.data = state->extra_data;
- state->cli_state->response.length += state->extra_data_len;
+ state->cli_state->response->extra_data.data = state->extra_data;
+ state->cli_state->response->length += state->extra_data_len;
}
request_ok(state->cli_state);
@@ -333,8 +333,8 @@ void winbindd_list_trusted_domains(struct winbindd_cli_state *state)
}
if (extra_data_len > 0) {
- state->response.extra_data.data = extra_data;
- state->response.length += extra_data_len+1;
+ state->response->extra_data.data = extra_data;
+ state->response->length += extra_data_len+1;
}
request_ok(state);
@@ -407,8 +407,8 @@ enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *
}
if (extra_data_len > 0) {
- state->response.extra_data.data = extra_data;
- state->response.length += extra_data_len+1;
+ state->response->extra_data.data = extra_data;
+ state->response->length += extra_data_len+1;
}
return WINBINDD_OK;
@@ -426,7 +426,7 @@ void winbindd_getdcname(struct winbindd_cli_state *state)
domain = find_domain_from_name_noinit(state->request->domain_name);
if (domain && domain->internal) {
- fstrcpy(state->response.data.dc_name, global_myname());
+ fstrcpy(state->response->data.dc_name, global_myname());
request_ok(state);
return;
}
@@ -502,7 +502,7 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
p+=1;
}
- fstrcpy(state->response.data.dc_name, p);
+ fstrcpy(state->response->data.dc_name, p);
return WINBINDD_OK;
}
@@ -602,10 +602,10 @@ static void sequence_recv(void *private_data, bool success)
if (state->domain == NULL) {
struct winbindd_cli_state *cli_state = state->cli_state;
- cli_state->response.length =
- sizeof(cli_state->response) +
+ cli_state->response->length =
+ sizeof(struct winbindd_response) +
strlen(state->extra_data) + 1;
- cli_state->response.extra_data.data = state->extra_data;
+ cli_state->response->extra_data.data = state->extra_data;
request_ok(cli_state);
return;
}
@@ -630,7 +630,7 @@ enum winbindd_result winbindd_dual_show_sequence(struct winbindd_domain *domain,
domain->methods->sequence_number(domain, &domain->sequence_number);
- state->response.data.sequence_number =
+ state->response->data.sequence_number =
domain->sequence_number;
return WINBINDD_OK;
@@ -663,17 +663,17 @@ void winbindd_domain_info(struct winbindd_cli_state *cli)
}
if (domain->initialized) {
- fstrcpy(cli->response.data.domain_info.name,
+ fstrcpy(cli->response->data.domain_info.name,
domain->name);
- fstrcpy(cli->response.data.domain_info.alt_name,
+ fstrcpy(cli->response->data.domain_info.alt_name,
domain->alt_name);
- sid_to_fstring(cli->response.data.domain_info.sid,
+ sid_to_fstring(cli->response->data.domain_info.sid,
&domain->sid);
- cli->response.data.domain_info.native_mode =
+ cli->response->data.domain_info.native_mode =
domain->native_mode;
- cli->response.data.domain_info.active_directory =
+ cli->response->data.domain_info.active_directory =
domain->active_directory;
- cli->response.data.domain_info.primary =
+ cli->response->data.domain_info.primary =
domain->primary;
request_ok(cli);
return;
@@ -724,18 +724,18 @@ static void domain_info_done(struct tevent_req *req)
return;
}
- fstrcpy(state->cli->response.data.domain_info.name,
+ fstrcpy(state->cli->response->data.domain_info.name,
state->domain->name);
- fstrcpy(state->cli->response.data.domain_info.alt_name,
+ fstrcpy(state->cli->response->data.domain_info.alt_name,
state->domain->alt_name);
- sid_to_fstring(state->cli->response.data.domain_info.sid,
+ sid_to_fstring(state->cli->response->data.domain_info.sid,
&state->domain->sid);
- state->cli->response.data.domain_info.native_mode =
+ state->cli->response->data.domain_info.native_mode =
state->domain->native_mode;
- state->cli->response.data.domain_info.active_directory =
+ state->cli->response->data.domain_info.active_directory =
state->domain->active_directory;
- state->cli->response.data.domain_info.primary =
+ state->cli->response->data.domain_info.primary =
state->domain->primary;
request_ok(state->cli);
@@ -754,8 +754,8 @@ void winbindd_info(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: request misc info\n", (unsigned long)state->pid));
- state->response.data.info.winbind_separator = *lp_winbind_separator();
- fstrcpy(state->response.data.info.samba_version, samba_version_string());
+ state->response->data.info.winbind_separator = *lp_winbind_separator();
+ fstrcpy(state->response->data.info.samba_version, samba_version_string());
request_ok(state);
}
@@ -766,7 +766,7 @@ void winbindd_interface_version(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: request interface version\n",
(unsigned long)state->pid));
- state->response.data.interface_version = WINBIND_INTERFACE_VERSION;
+ state->response->data.interface_version = WINBIND_INTERFACE_VERSION;
request_ok(state);
}
@@ -776,7 +776,7 @@ void winbindd_domain_name(struct winbindd_cli_state *state)
{
DEBUG(3, ("[%5lu]: request domain name\n", (unsigned long)state->pid));
- fstrcpy(state->response.data.domain_name, lp_workgroup());
+ fstrcpy(state->response->data.domain_name, lp_workgroup());
request_ok(state);
}
@@ -787,7 +787,7 @@ void winbindd_netbios_name(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: request netbios name\n",
(unsigned long)state->pid));
- fstrcpy(state->response.data.netbios_name, global_myname());
+ fstrcpy(state->response->data.netbios_name, global_myname());
request_ok(state);
}
@@ -800,12 +800,12 @@ void winbindd_priv_pipe_dir(struct winbindd_cli_state *state)
(unsigned long)state->pid));
priv_dir = get_winbind_priv_pipe_dir();
- state->response.extra_data.data = talloc_move(state->mem_ctx,
+ state->response->extra_data.data = talloc_move(state->mem_ctx,
&priv_dir);
/* must add one to length to copy the 0 for string termination */
- state->response.length +=
- strlen((char *)state->response.extra_data.data) + 1;
+ state->response->length +=
+ strlen((char *)state->response->extra_data.data) + 1;
request_ok(state);
}
diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
index c2cf4d2d6d..56657928a4 100644
--- a/source3/winbindd/winbindd_pam.c
+++ b/source3/winbindd/winbindd_pam.c
@@ -37,48 +37,48 @@ static NTSTATUS append_info3_as_txt(TALLOC_CTX *mem_ctx,
char *ex;
uint32_t i;
- state->response.data.auth.info3.logon_time =
+ state->response->data.auth.info3.logon_time =
nt_time_to_unix(info3->base.last_logon);
- state->response.data.auth.info3.logoff_time =
+ state->response->data.auth.info3.logoff_time =
nt_time_to_unix(info3->base.last_logoff);
- state->response.data.auth.info3.kickoff_time =
+ state->response->data.auth.info3.kickoff_time =
nt_time_to_unix(info3->base.acct_expiry);
- state->response.data.auth.info3.pass_last_set_time =
+ state->response->data.auth.info3.pass_last_set_time =
nt_time_to_unix(info3->base.last_password_change);
- state->response.data.auth.info3.pass_can_change_time =
+ state->response->data.auth.info3.pass_can_change_time =
nt_time_to_unix(info3->base.allow_password_change);
- state->response.data.auth.info3.pass_must_change_time =
+ state->response->data.auth.info3.pass_must_change_time =
nt_time_to_unix(info3->base.force_password_change);
- state->response.data.auth.info3.logon_count = info3->base.logon_count;
- state->response.data.auth.info3.bad_pw_count = info3->base.bad_password_count;
+ state->response->data.auth.info3.logon_count = info3->base.logon_count;
+ state->response->data.auth.info3.bad_pw_count = info3->base.bad_password_count;
- state->response.data.auth.info3.user_rid = info3->base.rid;
- state->response.data.auth.info3.group_rid = info3->base.primary_gid;
- sid_to_fstring(state->response.data.auth.info3.dom_sid, info3->base.domain_sid);
+ state->response->data.auth.info3.user_rid = info3->base.rid;
+ state->response->data.auth.info3.group_rid = info3->base.primary_gid;
+ sid_to_fstring(state->response->data.auth.info3.dom_sid, info3->base.domain_sid);
- state->response.data.auth.info3.num_groups = info3->base.groups.count;
- state->response.data.auth.info3.user_flgs = info3->base.user_flags;
+ state->response->data.auth.info3.num_groups = info3->base.groups.count;
+ state->response->data.auth.info3.user_flgs = info3->base.user_flags;
- state->response.data.auth.info3.acct_flags = info3->base.acct_flags;
- state->response.data.auth.info3.num_other_sids = info3->sidcount;
+ state->response->data.auth.info3.acct_flags = info3->base.acct_flags;
+ state->response->data.auth.info3.num_other_sids = info3->sidcount;
- fstrcpy(state->response.data.auth.info3.user_name,
+ fstrcpy(state->response->data.auth.info3.user_name,
info3->base.account_name.string);
- fstrcpy(state->response.data.auth.info3.full_name,
+ fstrcpy(state->response->data.auth.info3.full_name,
info3->base.full_name.string);
- fstrcpy(state->response.data.auth.info3.logon_script,
+ fstrcpy(state->response->data.auth.info3.logon_script,
info3->base.logon_script.string);
- fstrcpy(state->response.data.auth.info3.profile_path,
+ fstrcpy(state->response->data.auth.info3.profile_path,
info3->base.profile_path.string);
- fstrcpy(state->response.data.auth.info3.home_dir,
+ fstrcpy(state->response->data.auth.info3.home_dir,
info3->base.home_directory.string);
- fstrcpy(state->response.data.auth.info3.dir_drive,
+ fstrcpy(state->response->data.auth.info3.dir_drive,
info3->base.home_drive.string);
- fstrcpy(state->response.data.auth.info3.logon_srv,
+ fstrcpy(state->response->data.auth.info3.logon_srv,
info3->base.logon_server.string);
- fstrcpy(state->response.data.auth.info3.logon_dom,
+ fstrcpy(state->response->data.auth.info3.logon_dom,
info3->base.domain.string);
ex = talloc_strdup(state->mem_ctx, "");
@@ -105,8 +105,8 @@ static NTSTATUS append_info3_as_txt(TALLOC_CTX *mem_ctx,
talloc_free(sid);
}
- state->response.extra_data.data = ex;
- state->response.length += talloc_get_size(ex);
+ state->response->extra_data.data = ex;
+ state->response->length += talloc_get_size(ex);
return NT_STATUS_OK;
}
@@ -125,8 +125,8 @@ static NTSTATUS append_info3_as_ndr(TALLOC_CTX *mem_ctx,
return ndr_map_error2ntstatus(ndr_err);
}
- state->response.extra_data.data = blob.data;
- state->response.length += blob.length;
+ state->response->extra_data.data = blob.data;
+ state->response->length += blob.length;
return NT_STATUS_OK;
}
@@ -156,11 +156,11 @@ static NTSTATUS append_unix_username(TALLOC_CTX *mem_ctx,
nt_username = name_user;
}
- fill_domain_username(state->response.data.auth.unix_username,
+ fill_domain_username(state->response->data.auth.unix_username,
nt_domain, nt_username, true);
DEBUG(5,("Setting unix username to [%s]\n",
- state->response.data.auth.unix_username));
+ state->response->data.auth.unix_username));
return NT_STATUS_OK;
}
@@ -220,12 +220,13 @@ static NTSTATUS append_afs_token(TALLOC_CTX *mem_ctx,
if (token == NULL) {
return NT_STATUS_OK;
}
- state->response.extra_data.data = talloc_strdup(state->mem_ctx, token);
- if (state->response.extra_data.data == NULL) {
+ state->response->extra_data.data = talloc_strdup(state->mem_ctx,
+ token);
+ if (state->response->extra_data.data == NULL) {
return NT_STATUS_NO_MEMORY;
}
- state->response.length +=
- strlen((const char *)state->response.extra_data.data)+1;
+ state->response->length +=
+ strlen((const char *)state->response->extra_data.data)+1;
return NT_STATUS_OK;
}
@@ -399,7 +400,7 @@ static NTSTATUS fillup_password_policy(struct winbindd_domain *domain,
return status;
}
- fill_in_password_policy(&state->response, &password_policy);
+ fill_in_password_policy(state->response, &password_policy);
return NT_STATUS_OK;
}
@@ -501,7 +502,7 @@ static void setup_return_cc_name(struct winbindd_cli_state *state, const char *c
{
const char *type = state->request->data.auth.krb5_cc_type;
- state->response.data.auth.krb5ccname[0] = '\0';
+ state->response->data.auth.krb5ccname[0] = '\0';
if (type[0] == '\0') {
return;
@@ -514,7 +515,7 @@ static void setup_return_cc_name(struct winbindd_cli_state *state, const char *c
return;
}
- fstrcpy(state->response.data.auth.krb5ccname, cc);
+ fstrcpy(state->response->data.auth.krb5ccname, cc);
}
#endif
@@ -734,16 +735,16 @@ static NTSTATUS append_data(struct winbindd_cli_state *state,
uint32_t flags = state->request->flags;
if (flags & WBFLAG_PAM_USER_SESSION_KEY) {
- memcpy(state->response.data.auth.user_session_key,
+ memcpy(state->response->data.auth.user_session_key,
info3->base.key.key,
- sizeof(state->response.data.auth.user_session_key)
+ sizeof(state->response->data.auth.user_session_key)
/* 16 */);
}
if (flags & WBFLAG_PAM_LMKEY) {
- memcpy(state->response.data.auth.first_8_lm_hash,
+ memcpy(state->response->data.auth.first_8_lm_hash,
info3->base.LMSessKey.key,
- sizeof(state->response.data.auth.first_8_lm_hash)
+ sizeof(state->response->data.auth.first_8_lm_hash)
/* 8 */);
}
@@ -844,12 +845,12 @@ void winbindd_pam_auth(struct winbindd_cli_state *state)
sendto_domain(state, domain);
return;
done:
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(5, ("Plain text authentication for %s returned %s "
"(PAM: %d)\n",
state->request->data.auth.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
request_error(state);
}
@@ -1702,12 +1703,12 @@ done:
result = NT_STATUS_NO_LOGON_SERVERS;
}
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Plain-text authentication for user %s returned %s (PAM: %d)\n",
state->request->data.auth.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -1742,7 +1743,7 @@ void winbindd_pam_auth_crap(struct winbindd_cli_state *state)
" Ensure permissions on %s "
"are set correctly.",
get_winbind_priv_pipe_dir());
- fstrcpy(state->response.data.auth.error_string, error_string);
+ fstrcpy(state->response->data.auth.error_string, error_string);
result = NT_STATUS_ACCESS_DENIED;
goto done;
}
@@ -1775,12 +1776,12 @@ void winbindd_pam_auth_crap(struct winbindd_cli_state *state)
result = NT_STATUS_NO_SUCH_USER;
done:
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(5, ("CRAP authentication for %s\\%s returned %s (PAM: %d)\n",
state->request->data.auth_crap.domain,
state->request->data.auth_crap.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
request_error(state);
return;
}
@@ -1979,14 +1980,14 @@ done:
result = nt_status_squash(result);
}
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
("NTLM CRAP authentication for user [%s]\\[%s] returned %s (PAM: %d)\n",
name_domain,
name_user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -2022,19 +2023,19 @@ void winbindd_pam_chauthtok(struct winbindd_cli_state *state)
we have already copied it (if necessary), this is ok. */
if (!canonicalize_username(state->request->data.chauthtok.user, domain, user)) {
- set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
+ set_auth_errors(state->response, NT_STATUS_NO_SUCH_USER);
DEBUG(5, ("winbindd_pam_chauthtok: canonicalize_username %s failed with %s"
"(PAM: %d)\n",
state->request->data.auth.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
request_error(state);
return;
}
contact_domain = find_domain_from_name(domain);
if (!contact_domain) {
- set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
+ set_auth_errors(state->response, NT_STATUS_NO_SUCH_USER);
DEBUG(3, ("Cannot change password for [%s] -> [%s]\\[%s] as %s is not a trusted domain\n",
state->request->data.chauthtok.user, domain, user, domain));
request_error(state);
@@ -2070,7 +2071,7 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
newpass = state->request->data.chauthtok.newpass;
/* Initialize reject reason */
- state->response.data.auth.reject_reason = Undefined;
+ state->response->data.auth.reject_reason = Undefined;
/* Get sam handle */
@@ -2092,9 +2093,9 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION) ) {
- fill_in_password_policy(&state->response, info);
+ fill_in_password_policy(state->response, info);
- state->response.data.auth.reject_reason =
+ state->response->data.auth.reject_reason =
reject->reason;
got_info = true;
@@ -2187,14 +2188,14 @@ done:
process_result:
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n",
domain,
user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -2254,12 +2255,12 @@ void winbindd_pam_logoff(struct winbindd_cli_state *state)
return;
failed:
- set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
+ set_auth_errors(state->response, NT_STATUS_NO_SUCH_USER);
DEBUG(5, ("Pam Logoff for %s returned %s "
"(PAM: %d)\n",
state->request->data.logoff.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
request_error(state);
return;
}
@@ -2320,7 +2321,7 @@ process_result:
winbindd_delete_memory_creds(state->request->data.logoff.user);
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
@@ -2359,12 +2360,12 @@ void winbindd_pam_chng_pswd_auth_crap(struct winbindd_cli_state *state)
return;
}
- set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
+ set_auth_errors(state->response, NT_STATUS_NO_SUCH_USER);
DEBUG(5, ("CRAP change password for %s\\%s returned %s (PAM: %d)\n",
state->request->data.chng_pswd_auth_crap.domain,
state->request->data.chng_pswd_auth_crap.user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
request_error(state);
return;
}
@@ -2467,13 +2468,13 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai
done:
- set_auth_errors(&state->response, result);
+ set_auth_errors(state->response, result);
DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n",
domain, user,
- state->response.data.auth.nt_status_string,
- state->response.data.auth.pam_error));
+ state->response->data.auth.nt_status_string,
+ state->response->data.auth.pam_error));
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
}
diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c
index 41981edf00..c091cd7f53 100644
--- a/source3/winbindd/winbindd_sid.c
+++ b/source3/winbindd/winbindd_sid.c
@@ -63,9 +63,9 @@ static void lookupsid_recv(void *private_data, bool success,
return;
}
- fstrcpy(state->response.data.name.dom_name, dom_name);
- fstrcpy(state->response.data.name.name, name);
- state->response.data.name.type = type;
+ fstrcpy(state->response->data.name.dom_name, dom_name);
+ fstrcpy(state->response->data.name.name, name);
+ state->response->data.name.type = type;
request_ok(state);
}
@@ -118,8 +118,8 @@ static void lookupname_recv(void *private_data, bool success,
return;
}
- sid_to_fstring(state->response.data.sid.sid, sid);
- state->response.data.sid.type = type;
+ sid_to_fstring(state->response->data.sid.sid, sid);
+ state->response->data.sid.type = type;
request_ok(state);
return;
}
@@ -170,7 +170,7 @@ static void sid2uid_recv(void *private_data, bool success, uid_t uid)
return;
}
- state->response.data.uid = uid;
+ state->response->data.uid = uid;
request_ok(state);
}
@@ -248,7 +248,7 @@ void winbindd_sid_to_uid(struct winbindd_cli_state *state)
return;
}
DEBUG(10, ("Returning positive cache entry\n"));
- state->response.data.uid = uid;
+ state->response->data.uid = uid;
request_ok(state);
return;
}
@@ -279,7 +279,7 @@ static void sid2gid_recv(void *private_data, bool success, gid_t gid)
return;
}
- state->response.data.gid = gid;
+ state->response->data.gid = gid;
request_ok(state);
}
@@ -360,7 +360,7 @@ void winbindd_sid_to_gid(struct winbindd_cli_state *state)
return;
}
DEBUG(10, ("Returning positive cache entry\n"));
- state->response.data.gid = gid;
+ state->response->data.gid = gid;
request_ok(state);
return;
}
@@ -509,8 +509,8 @@ static void uid2sid_recv(void *private_data, bool success, const char *sidstr)
(unsigned long)(state->request->data.uid), sidstr));
idmap_cache_set_sid2uid(&sid, state->request->data.uid);
- fstrcpy(state->response.data.sid.sid, sidstr);
- state->response.data.sid.type = SID_NAME_USER;
+ fstrcpy(state->response->data.sid.sid, sidstr);
+ state->response->data.sid.type = SID_NAME_USER;
request_ok(state);
return;
}
@@ -538,7 +538,7 @@ void winbindd_uid_to_sid(struct winbindd_cli_state *state)
return;
}
DEBUG(10, ("Returning positive cache entry\n"));
- sid_to_fstring(state->response.data.sid.sid, &sid);
+ sid_to_fstring(state->response->data.sid.sid, &sid);
request_ok(state);
return;
}
@@ -566,8 +566,8 @@ static void gid2sid_recv(void *private_data, bool success, const char *sidstr)
(unsigned long)(state->request->data.gid), sidstr));
idmap_cache_set_sid2gid(&sid, state->request->data.gid);
- fstrcpy(state->response.data.sid.sid, sidstr);
- state->response.data.sid.type = SID_NAME_DOM_GRP;
+ fstrcpy(state->response->data.sid.sid, sidstr);
+ state->response->data.sid.type = SID_NAME_DOM_GRP;
request_ok(state);
return;
}
@@ -596,7 +596,7 @@ void winbindd_gid_to_sid(struct winbindd_cli_state *state)
return;
}
DEBUG(10, ("Returning positive cache entry\n"));
- sid_to_fstring(state->response.data.sid.sid, &sid);
+ sid_to_fstring(state->response->data.sid.sid, &sid);
request_ok(state);
return;
}
@@ -626,7 +626,7 @@ enum winbindd_result winbindd_dual_allocate_uid(struct winbindd_domain *domain,
if (!NT_STATUS_IS_OK(idmap_allocate_uid(&xid))) {
return WINBINDD_ERROR;
}
- state->response.data.uid = xid.id;
+ state->response->data.uid = xid.id;
return WINBINDD_OK;
}
@@ -650,6 +650,6 @@ enum winbindd_result winbindd_dual_allocate_gid(struct winbindd_domain *domain,
if (!NT_STATUS_IS_OK(idmap_allocate_gid(&xid))) {
return WINBINDD_ERROR;
}
- state->response.data.gid = xid.id;
+ state->response->data.gid = xid.id;
return WINBINDD_OK;
}
diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c
index e2b531060a..da6a303e5d 100644
--- a/source3/winbindd/winbindd_user.c
+++ b/source3/winbindd/winbindd_user.c
@@ -178,13 +178,15 @@ enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain,
return WINBINDD_ERROR;
}
- fstrcpy(state->response.data.user_info.acct_name, user_info.acct_name);
- fstrcpy(state->response.data.user_info.full_name, user_info.full_name);
- fstrcpy(state->response.data.user_info.homedir, user_info.homedir);
- fstrcpy(state->response.data.user_info.shell, user_info.shell);
- state->response.data.user_info.primary_gid = user_info.primary_gid;
+ fstrcpy(state->response->data.user_info.acct_name,
+ user_info.acct_name);
+ fstrcpy(state->response->data.user_info.full_name,
+ user_info.full_name);
+ fstrcpy(state->response->data.user_info.homedir, user_info.homedir);
+ fstrcpy(state->response->data.user_info.shell, user_info.shell);
+ state->response->data.user_info.primary_gid = user_info.primary_gid;
if (!sid_peek_check_rid(&domain->sid, &user_info.group_sid,
- &state->response.data.user_info.group_rid)) {
+ &state->response->data.user_info.group_rid)) {
DEBUG(1, ("Could not extract group rid out of %s\n",
sid_string_dbg(&sid)));
return WINBINDD_ERROR;
@@ -371,7 +373,7 @@ static void getpwsid_sid2gid_recv(void *private_data, bool success, gid_t gid)
s->gid = gid;
}
- pw = &s->state->response.data.pw;
+ pw = &s->state->response->data.pw;
pw->pw_uid = s->uid;
pw->pw_gid = s->gid;
@@ -785,7 +787,7 @@ void winbindd_getpwent(struct winbindd_cli_state *state)
request_error(state);
return;
}
- state->response.extra_data.data = user_list;
+ state->response->extra_data.data = user_list;
if (!state->getpwent_initialized)
winbindd_setpwent_internal(state);
@@ -846,8 +848,8 @@ void winbindd_getpwent(struct winbindd_cli_state *state)
if (result) {
user_list_ndx++;
- state->response.data.num_entries++;
- state->response.length += sizeof(struct winbindd_pw);
+ state->response->data.num_entries++;
+ state->response->length += sizeof(struct winbindd_pw);
} else
DEBUG(1, ("could not lookup domain user %s\n",
diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
index 8302ec752b..283eee09af 100644
--- a/source3/winbindd/winbindd_util.c
+++ b/source3/winbindd/winbindd_util.c
@@ -581,15 +581,15 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai
"online = %d\n", domain->name, (int)domain->online ));
}
- fstrcpy(state->response.data.domain_info.name, domain->name);
- fstrcpy(state->response.data.domain_info.alt_name, domain->alt_name);
- sid_to_fstring(state->response.data.domain_info.sid, &domain->sid);
+ fstrcpy(state->response->data.domain_info.name, domain->name);
+ fstrcpy(state->response->data.domain_info.alt_name, domain->alt_name);
+ sid_to_fstring(state->response->data.domain_info.sid, &domain->sid);
- state->response.data.domain_info.native_mode
+ state->response->data.domain_info.native_mode
= domain->native_mode;
- state->response.data.domain_info.active_directory
+ state->response->data.domain_info.active_directory
= domain->active_directory;
- state->response.data.domain_info.primary
+ state->response->data.domain_info.primary
= domain->primary;
return WINBINDD_OK;
diff --git a/source3/winbindd/winbindd_wins.c b/source3/winbindd/winbindd_wins.c
index 13cbb24b06..f5727cc9b7 100644
--- a/source3/winbindd/winbindd_wins.c
+++ b/source3/winbindd/winbindd_wins.c
@@ -185,7 +185,7 @@ void winbindd_wins_byip(struct winbindd_cli_state *state)
response[strlen(response)-1] = '\n';
SAFE_FREE(status);
}
- fstrcpy(state->response.data.winsresp,response);
+ fstrcpy(state->response->data.winsresp,response);
request_ok(state);
}
@@ -241,7 +241,7 @@ void winbindd_wins_byname(struct winbindd_cli_state *state)
return;
}
- fstrcpy(state->response.data.winsresp,response);
+ fstrcpy(state->response->data.winsresp,response);
request_ok(state);
}