From baa6084378e530b013ac002b91b56cc1e79c5e38 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 7 May 2009 22:46:27 +0200 Subject: [PATCH] Make winbindd_cli_state->request a pointer instead of a struct member In itself, this is pretty pointless. But in the next steps I'll convert the winbind internal communication to wb_reqtrans which allocates the request properly. This minimizes the later diff. Volker --- source3/winbindd/winbindd.c | 49 ++-- source3/winbindd/winbindd.h | 3 +- source3/winbindd/winbindd_async.c | 32 +-- source3/winbindd/winbindd_ccache_access.c | 40 +-- source3/winbindd/winbindd_dual.c | 37 +-- source3/winbindd/winbindd_group.c | 60 ++-- source3/winbindd/winbindd_idmap.c | 44 +-- source3/winbindd/winbindd_locator.c | 36 +-- source3/winbindd/winbindd_misc.c | 44 +-- source3/winbindd/winbindd_pam.c | 324 +++++++++++----------- source3/winbindd/winbindd_sid.c | 118 ++++---- source3/winbindd/winbindd_user.c | 30 +- source3/winbindd/winbindd_util.c | 12 +- source3/winbindd/winbindd_wins.c | 20 +- 14 files changed, 426 insertions(+), 423 deletions(-) diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 2b25616cf76..9538a6391d4 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -518,12 +518,12 @@ static void process_request(struct winbindd_cli_state *state) return; /* Remember who asked us. */ - state->pid = state->request.pid; + state->pid = state->request->pid; /* Process command */ for (table = dispatch_table; table->fn; table++) { - if (state->request.cmd == table->cmd) { + if (state->request->cmd == table->cmd) { DEBUG(10,("process_request: request fn %s\n", table->winbindd_cmd_name )); table->fn(state); @@ -533,7 +533,7 @@ static void process_request(struct winbindd_cli_state *state) if (!table->fn) { DEBUG(10,("process_request: unknown request fn number %d\n", - (int)state->request.cmd )); + (int)state->request->cmd )); request_error(state); } } @@ -675,7 +675,7 @@ static void response_extra_sent(void *private_data, bool success) return; } - setup_async_read(&state->fd_event, &state->request, sizeof(uint32), + setup_async_read(&state->fd_event, state->request, sizeof(uint32), request_len_recv, state); } @@ -692,7 +692,7 @@ static void response_main_sent(void *private_data, bool success) if (state->response.length == sizeof(state->response)) { TALLOC_FREE(state->mem_ctx); - setup_async_read(&state->fd_event, &state->request, + setup_async_read(&state->fd_event, state->request, sizeof(uint32), request_len_recv, state); return; } @@ -705,7 +705,7 @@ static void response_main_sent(void *private_data, bool success) static void request_finished(struct winbindd_cli_state *state) { /* Make sure request.extra_data is freed when finish processing a request */ - SAFE_FREE(state->request.extra_data.data); + SAFE_FREE(state->request->extra_data.data); setup_async_write(&state->fd_event, &state->response, sizeof(state->response), response_main_sent, state); } @@ -734,17 +734,16 @@ static void request_len_recv(void *private_data, bool success) return; } - if (*(uint32 *)(void *)(&state->request) != sizeof(state->request)) { + if (*(uint32 *)(state->request) != sizeof(*state->request)) { DEBUG(0,("request_len_recv: Invalid request size received: %d (expected %u)\n", - *(uint32_t *)(void *)(&state->request), - (uint32_t)sizeof(state->request))); + *(uint32_t *)(state->request), + (uint32_t)sizeof(*state->request))); state->finished = True; return; } - setup_async_read(&state->fd_event, - (uint32 *)(void *)(&state->request)+1, - sizeof(state->request) - sizeof(uint32), + setup_async_read(&state->fd_event, (uint32 *)(state->request)+1, + sizeof(*state->request) - sizeof(uint32), request_main_recv, state); } @@ -758,35 +757,36 @@ static void request_main_recv(void *private_data, bool success) return; } - if (state->request.extra_len == 0) { - state->request.extra_data.data = NULL; + if (state->request->extra_len == 0) { + state->request->extra_data.data = NULL; request_recv(state, True); return; } if ((!state->privileged) && - (state->request.extra_len > WINBINDD_MAX_EXTRA_DATA)) { + (state->request->extra_len > WINBINDD_MAX_EXTRA_DATA)) { DEBUG(3, ("Got request with %d bytes extra data on " - "unprivileged socket\n", (int)state->request.extra_len)); - state->request.extra_data.data = NULL; + "unprivileged socket\n", + (int)state->request->extra_len)); + state->request->extra_data.data = NULL; state->finished = True; return; } - state->request.extra_data.data = - SMB_MALLOC_ARRAY(char, state->request.extra_len + 1); + state->request->extra_data.data = + SMB_MALLOC_ARRAY(char, state->request->extra_len + 1); - if (state->request.extra_data.data == NULL) { + if (state->request->extra_data.data == NULL) { DEBUG(0, ("malloc failed\n")); state->finished = True; return; } /* Ensure null termination */ - state->request.extra_data.data[state->request.extra_len] = '\0'; + state->request->extra_data.data[state->request->extra_len] = '\0'; - setup_async_read(&state->fd_event, state->request.extra_data.data, - state->request.extra_len, request_recv, state); + setup_async_read(&state->fd_event, state->request->extra_data.data, + state->request->extra_len, request_recv, state); } static void request_recv(void *private_data, bool success) @@ -831,6 +831,7 @@ static void new_connection(int listen_sock, bool privileged) close(sock); return; } + state->request = &state->_request; state->sock = sock; @@ -842,7 +843,7 @@ static void new_connection(int listen_sock, bool privileged) state->fd_event.flags = 0; add_fd_event(&state->fd_event); - setup_async_read(&state->fd_event, &state->request, sizeof(uint32), + setup_async_read(&state->fd_event, state->request, sizeof(uint32), request_len_recv, state); /* Add to connection list */ diff --git a/source3/winbindd/winbindd.h b/source3/winbindd/winbindd.h index f3733dc131d..31d73a5cc89 100644 --- a/source3/winbindd/winbindd.h +++ b/source3/winbindd/winbindd.h @@ -69,7 +69,8 @@ struct winbindd_cli_state { bool privileged; /* Is the client 'privileged' */ TALLOC_CTX *mem_ctx; /* memory per request */ - struct winbindd_request request; /* Request from client */ + struct winbindd_request *request; /* Request from client */ + struct winbindd_request _request; struct winbindd_response response; /* Respose to client */ bool getpwent_initialized; /* Has getpwent_state been * initialized? */ diff --git a/source3/winbindd/winbindd_async.c b/source3/winbindd/winbindd_async.c index 3905b13073f..9f0c6817d88 100644 --- a/source3/winbindd/winbindd_async.c +++ b/source3/winbindd/winbindd_async.c @@ -233,15 +233,15 @@ enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain, char *dom_name; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); /* Lookup sid from PDC using lsa_lookup_sids() */ - if (!string_to_sid(&sid, state->request.data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request.data.sid)); + if (!string_to_sid(&sid, state->request->data.sid)) { + DEBUG(5, ("%s not a SID\n", state->request->data.sid)); return WINBINDD_ERROR; } @@ -422,27 +422,27 @@ enum winbindd_result winbindd_dual_lookupname(struct winbindd_domain *domain, char *p; /* Ensure null termination */ - state->request.data.name.dom_name[sizeof(state->request.data.name.dom_name)-1]='\0'; + state->request->data.name.dom_name[sizeof(state->request->data.name.dom_name)-1]='\0'; /* Ensure null termination */ - state->request.data.name.name[sizeof(state->request.data.name.name)-1]='\0'; + state->request->data.name.name[sizeof(state->request->data.name.name)-1]='\0'; /* cope with the name being a fully qualified name */ - p = strstr(state->request.data.name.name, lp_winbind_separator()); + p = strstr(state->request->data.name.name, lp_winbind_separator()); if (p) { *p = 0; - name_domain = state->request.data.name.name; + name_domain = state->request->data.name.name; name_user = p+1; } else { - name_domain = state->request.data.name.dom_name; - name_user = state->request.data.name.name; + name_domain = state->request->data.name.dom_name; + name_user = state->request->data.name.name; } DEBUG(3, ("[%5lu]: lookupname %s%s%s\n", (unsigned long)state->pid, name_domain, lp_winbind_separator(), name_user)); /* Lookup name from DC using lsa_lookup_names() */ - if (!winbindd_lookup_sid_by_name(state->mem_ctx, state->request.original_cmd, domain, name_domain, + if (!winbindd_lookup_sid_by_name(state->mem_ctx, state->request->original_cmd, domain, name_domain, name_user, &sid, &type)) { return WINBINDD_ERROR; } @@ -700,18 +700,18 @@ enum winbindd_result winbindd_dual_lookuprids(struct winbindd_domain *domain, char *result; DEBUG(10, ("Looking up RIDs for domain %s (%s)\n", - state->request.domain_name, - state->request.data.sid)); + state->request->domain_name, + state->request->data.sid)); - if (!parse_ridlist(state->mem_ctx, state->request.extra_data.data, + if (!parse_ridlist(state->mem_ctx, state->request->extra_data.data, &rids, &num_rids)) { DEBUG(5, ("Could not parse ridlist\n")); return WINBINDD_ERROR; } - if (!string_to_sid(&domain_sid, state->request.data.sid)) { + if (!string_to_sid(&domain_sid, state->request->data.sid)) { DEBUG(5, ("Could not parse domain sid %s\n", - state->request.data.sid)); + state->request->data.sid)); return WINBINDD_ERROR; } diff --git a/source3/winbindd/winbindd_ccache_access.c b/source3/winbindd/winbindd_ccache_access.c index 36680409a10..479c114eb8e 100644 --- a/source3/winbindd/winbindd_ccache_access.c +++ b/source3/winbindd/winbindd_ccache_access.c @@ -153,18 +153,18 @@ void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state) fstring name_domain, name_user; /* Ensure null termination */ - state->request.data.ccache_ntlm_auth.user[ - sizeof(state->request.data.ccache_ntlm_auth.user)-1]='\0'; + state->request->data.ccache_ntlm_auth.user[ + sizeof(state->request->data.ccache_ntlm_auth.user)-1]='\0'; DEBUG(3, ("[%5lu]: perform NTLM auth on behalf of user %s\n", (unsigned long)state->pid, - state->request.data.ccache_ntlm_auth.user)); + state->request->data.ccache_ntlm_auth.user)); /* Parse domain and username */ - if (!canonicalize_username(state->request.data.ccache_ntlm_auth.user, + if (!canonicalize_username(state->request->data.ccache_ntlm_auth.user, name_domain, name_user)) { DEBUG(5,("winbindd_ccache_ntlm_auth: cannot parse domain and user from name [%s]\n", - state->request.data.ccache_ntlm_auth.user)); + state->request->data.ccache_ntlm_auth.user)); request_error(state); return; } @@ -178,7 +178,7 @@ void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state) return; } - if (!check_client_uid(state, state->request.data.ccache_ntlm_auth.uid)) { + if (!check_client_uid(state, state->request->data.ccache_ntlm_auth.uid)) { request_error(state); return; } @@ -196,17 +196,17 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *doma uint32 initial_blob_len, challenge_blob_len, extra_len; /* Ensure null termination */ - state->request.data.ccache_ntlm_auth.user[ - sizeof(state->request.data.ccache_ntlm_auth.user)-1]='\0'; + state->request->data.ccache_ntlm_auth.user[ + sizeof(state->request->data.ccache_ntlm_auth.user)-1]='\0'; DEBUG(3, ("winbindd_dual_ccache_ntlm_auth: [%5lu]: perform NTLM auth on " "behalf of user %s (dual)\n", (unsigned long)state->pid, - state->request.data.ccache_ntlm_auth.user)); + state->request->data.ccache_ntlm_auth.user)); /* validate blob lengths */ - initial_blob_len = state->request.data.ccache_ntlm_auth.initial_blob_len; - challenge_blob_len = state->request.data.ccache_ntlm_auth.challenge_blob_len; - extra_len = state->request.extra_len; + initial_blob_len = state->request->data.ccache_ntlm_auth.initial_blob_len; + challenge_blob_len = state->request->data.ccache_ntlm_auth.challenge_blob_len; + extra_len = state->request->extra_len; if (initial_blob_len > extra_len || challenge_blob_len > extra_len || initial_blob_len + challenge_blob_len > extra_len || @@ -222,24 +222,24 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *doma } /* Parse domain and username */ - if (!parse_domain_user(state->request.data.ccache_ntlm_auth.user, name_domain, name_user)) { + if (!parse_domain_user(state->request->data.ccache_ntlm_auth.user, name_domain, name_user)) { DEBUG(10,("winbindd_dual_ccache_ntlm_auth: cannot parse " "domain and user from name [%s]\n", - state->request.data.ccache_ntlm_auth.user)); + state->request->data.ccache_ntlm_auth.user)); goto process_result; } - entry = find_memory_creds_by_name(state->request.data.ccache_ntlm_auth.user); + entry = find_memory_creds_by_name(state->request->data.ccache_ntlm_auth.user); if (entry == NULL || entry->nt_hash == NULL || entry->lm_hash == NULL) { DEBUG(10,("winbindd_dual_ccache_ntlm_auth: could not find " "credentials for user %s\n", - state->request.data.ccache_ntlm_auth.user)); + state->request->data.ccache_ntlm_auth.user)); goto process_result; } DEBUG(10,("winbindd_dual_ccache_ntlm_auth: found ccache [%s]\n", entry->username)); - if (!client_can_access_ccache_entry(state->request.data.ccache_ntlm_auth.uid, entry)) { + if (!client_can_access_ccache_entry(state->request->data.ccache_ntlm_auth.uid, entry)) { goto process_result; } @@ -250,9 +250,9 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *doma goto process_result; } - initial = data_blob(state->request.extra_data.data, initial_blob_len); - challenge = data_blob(state->request.extra_data.data + initial_blob_len, - state->request.data.ccache_ntlm_auth.challenge_blob_len); + initial = data_blob(state->request->extra_data.data, initial_blob_len); + challenge = data_blob(state->request->extra_data.data + initial_blob_len, + state->request->data.ccache_ntlm_auth.challenge_blob_len); if (!initial.data || !challenge.data) { result = NT_STATUS_NO_MEMORY; diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index 6fb0b5857c8..9a5098f6616 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -44,8 +44,8 @@ static void child_read_request(struct winbindd_cli_state *state) /* Read data */ - status = read_data(state->sock, (char *)&state->request, - sizeof(state->request)); + status = read_data(state->sock, (char *)state->request, + sizeof(*state->request)); if (!NT_STATUS_IS_OK(status)) { DEBUG(3, ("child_read_request: read_data failed: %s\n", @@ -54,27 +54,27 @@ static void child_read_request(struct winbindd_cli_state *state) return; } - if (state->request.extra_len == 0) { - state->request.extra_data.data = NULL; + if (state->request->extra_len == 0) { + state->request->extra_data.data = NULL; return; } - DEBUG(10, ("Need to read %d extra bytes\n", (int)state->request.extra_len)); + DEBUG(10, ("Need to read %d extra bytes\n", (int)state->request->extra_len)); - state->request.extra_data.data = - SMB_MALLOC_ARRAY(char, state->request.extra_len + 1); + state->request->extra_data.data = + SMB_MALLOC_ARRAY(char, state->request->extra_len + 1); - if (state->request.extra_data.data == NULL) { + if (state->request->extra_data.data == NULL) { DEBUG(0, ("malloc failed\n")); state->finished = True; return; } /* Ensure null termination */ - state->request.extra_data.data[state->request.extra_len] = '\0'; + state->request->extra_data.data[state->request->extra_len] = '\0'; - status= read_data(state->sock, state->request.extra_data.data, - state->request.extra_len); + status= read_data(state->sock, state->request->extra_data.data, + state->request->extra_len); if (!NT_STATUS_IS_OK(status)) { DEBUG(0, ("Could not read extra data: %s\n", @@ -417,7 +417,7 @@ static void recvfrom_child(void *private_data_data, bool success) void sendto_child(struct winbindd_cli_state *state, struct winbindd_child *child) { - async_request(state->mem_ctx, child, &state->request, + async_request(state->mem_ctx, child, state->request, &state->response, recvfrom_child, state); } @@ -425,7 +425,7 @@ 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); } @@ -447,7 +447,7 @@ static void child_process_request(struct winbindd_child *child, /* Process command */ for (; table->name; table++) { - if (state->request.cmd == table->struct_cmd) { + 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); @@ -456,7 +456,7 @@ static void child_process_request(struct winbindd_child *child, } DEBUG(1 ,("child_process_request: unknown request fn number %d\n", - (int)state->request.cmd)); + (int)state->request->cmd)); state->response.result = WINBINDD_ERROR; } @@ -1233,6 +1233,7 @@ static bool fork_domain_child(struct winbindd_child *child) ZERO_STRUCT(state); state.pid = sys_getpid(); + state.request = &state._request; child->pid = sys_fork(); @@ -1421,13 +1422,13 @@ static bool fork_domain_child(struct winbindd_child *child) _exit(0); } - DEBUG(4,("child daemon request %d\n", (int)state.request.cmd)); + DEBUG(4,("child daemon request %d\n", (int)state.request->cmd)); ZERO_STRUCT(state.response); - state.request.null_term = '\0'; + state.request->null_term = '\0'; child_process_request(child, &state); - SAFE_FREE(state.request.extra_data.data); + SAFE_FREE(state.request->extra_data.data); cache_store_response(sys_getpid(), &state.response); diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c index 4db2c56b8f5..2e8905f7f0a 100644 --- a/source3/winbindd/winbindd_group.c +++ b/source3/winbindd/winbindd_group.c @@ -789,20 +789,20 @@ void winbindd_getgrnam(struct winbindd_cli_state *state) NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; /* Ensure null termination */ - state->request.data.groupname[sizeof(state->request.data.groupname)-1]='\0'; + state->request->data.groupname[sizeof(state->request->data.groupname)-1]='\0'; DEBUG(3, ("[%5lu]: getgrnam %s\n", (unsigned long)state->pid, - state->request.data.groupname)); + state->request->data.groupname)); nt_status = normalize_name_unmap(state->mem_ctx, - state->request.data.groupname, + state->request->data.groupname, &tmp); /* If we didn't map anything in the above call, just reset the tmp pointer to the original string */ if (!NT_STATUS_IS_OK(nt_status) && !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) { - tmp = state->request.data.groupname; + tmp = state->request->data.groupname; } /* Parse domain and groupname */ @@ -1017,7 +1017,7 @@ static void getgrgid_recv(void *private_data, bool success, const char *sid) if (success) { DEBUG(10,("getgrgid_recv: gid %lu has sid %s\n", - (unsigned long)(state->request.data.gid), sid)); + (unsigned long)(state->request->data.gid), sid)); if (!string_to_sid(&group_sid, sid)) { DEBUG(1,("getgrgid_recv: Could not convert sid %s " @@ -1031,25 +1031,25 @@ static void getgrgid_recv(void *private_data, bool success, const char *sid) } /* Ok, this might be "ours", i.e. an alias */ - if (pdb_gid_to_sid(state->request.data.gid, &group_sid) && + if (pdb_gid_to_sid(state->request->data.gid, &group_sid) && lookup_sid(state->mem_ctx, &group_sid, NULL, NULL, &name_type) && (name_type == SID_NAME_ALIAS)) { /* Hey, got an alias */ DEBUG(10,("getgrgid_recv: we have an alias with gid %lu and sid %s\n", - (unsigned long)(state->request.data.gid), sid)); + (unsigned long)(state->request->data.gid), sid)); winbindd_getgrsid(state, group_sid); return; } DEBUG(1, ("could not convert gid %lu to sid\n", - (unsigned long)state->request.data.gid)); + (unsigned long)state->request->data.gid)); request_error(state); } /* Return a group structure from a gid number */ void winbindd_getgrgid(struct winbindd_cli_state *state) { - gid_t gid = state->request.data.gid; + gid_t gid = state->request->data.gid; DEBUG(3, ("[%5lu]: getgrgid %lu\n", (unsigned long)state->pid, @@ -1295,7 +1295,7 @@ void winbindd_getgrent(struct winbindd_cli_state *state) return; } - num_groups = MIN(MAX_GETGRENT_GROUPS, state->request.data.num_entries); + num_groups = MIN(MAX_GETGRENT_GROUPS, state->request->data.num_entries); if (num_groups == 0) { request_error(state); @@ -1431,7 +1431,7 @@ void winbindd_getgrent(struct winbindd_cli_state *state) gr_mem_len = 0; /* Get group membership */ - if (state->request.cmd == WINBINDD_GETGRLST) { + if (state->request->cmd == WINBINDD_GETGRLST) { result = True; } else { sid_copy(&member_sid, &domain->sid); @@ -1572,11 +1572,11 @@ void winbindd_getgroups(struct winbindd_cli_state *state) NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; /* Ensure null termination */ - state->request.data.username - [sizeof(state->request.data.username)-1]='\0'; + state->request->data.username + [sizeof(state->request->data.username)-1]='\0'; DEBUG(3, ("[%5lu]: getgroups %s\n", (unsigned long)state->pid, - state->request.data.username)); + state->request->data.username)); /* Parse domain and username */ @@ -1590,7 +1590,7 @@ void winbindd_getgroups(struct winbindd_cli_state *state) s->state = state; nt_status = normalize_name_unmap(state->mem_ctx, - state->request.data.username, + state->request->data.username, &real_name); /* Reset the real_name pointer if we didn't do anything @@ -1598,7 +1598,7 @@ void winbindd_getgroups(struct winbindd_cli_state *state) if (!NT_STATUS_IS_OK(nt_status) && !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) { - real_name = state->request.data.username; + real_name = state->request->data.username; } if (!parse_domain_user_talloc(state->mem_ctx, real_name, @@ -1616,7 +1616,7 @@ void winbindd_getgroups(struct winbindd_cli_state *state) s->domname = talloc_strdup(state->mem_ctx, get_global_sam_name()); s->username = talloc_strdup(state->mem_ctx, - state->request.data.username); + state->request->data.username); } /* Get info for the domain (either by short domain name or @@ -1752,7 +1752,7 @@ void winbindd_getusersids(struct winbindd_cli_state *state) DOM_SID *user_sid; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; user_sid = TALLOC_P(state->mem_ctx, DOM_SID); if (user_sid == NULL) { @@ -1761,9 +1761,9 @@ void winbindd_getusersids(struct winbindd_cli_state *state) return; } - if (!string_to_sid(user_sid, state->request.data.sid)) { + if (!string_to_sid(user_sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -1821,11 +1821,11 @@ void winbindd_getuserdomgroups(struct winbindd_cli_state *state) struct winbindd_domain *domain; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - if (!string_to_sid(&user_sid, state->request.data.sid)) { + if (!string_to_sid(&user_sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -1853,11 +1853,11 @@ enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *doma uint32 num_groups; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - if (!string_to_sid(&user_sid, state->request.data.sid)) { + if (!string_to_sid(&user_sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); return WINBINDD_ERROR; } @@ -1893,11 +1893,11 @@ void winbindd_getsidaliases(struct winbindd_cli_state *state) struct winbindd_domain *domain; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - if (!string_to_sid(&domain_sid, state->request.data.sid)) { + if (!string_to_sid(&domain_sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -1927,7 +1927,7 @@ enum winbindd_result winbindd_dual_getsidaliases(struct winbindd_domain *domain, DEBUG(3, ("[%5lu]: getsidaliases\n", (unsigned long)state->pid)); - sidstr = state->request.extra_data.data; + sidstr = state->request->extra_data.data; if (sidstr == NULL) { sidstr = talloc_strdup(state->mem_ctx, "\n"); /* No SID */ if (!sidstr) { diff --git a/source3/winbindd/winbindd_idmap.c b/source3/winbindd/winbindd_idmap.c index 9f5d17ec7cf..24b2fbe0762 100644 --- a/source3/winbindd/winbindd_idmap.c +++ b/source3/winbindd/winbindd_idmap.c @@ -99,12 +99,12 @@ enum winbindd_result winbindd_dual_set_mapping(struct winbindd_domain *domain, DEBUG(3, ("[%5lu]: dual_idmapset\n", (unsigned long)state->pid)); - if (!string_to_sid(&sid, state->request.data.dual_idmapset.sid)) + if (!string_to_sid(&sid, state->request->data.dual_idmapset.sid)) return WINBINDD_ERROR; map.sid = &sid; - map.xid.id = state->request.data.dual_idmapset.id; - map.xid.type = state->request.data.dual_idmapset.type; + map.xid.id = state->request->data.dual_idmapset.id; + map.xid.type = state->request->data.dual_idmapset.type; map.status = ID_MAPPED; result = idmap_set_mapping(&map); @@ -158,12 +158,12 @@ enum winbindd_result winbindd_dual_remove_mapping( DEBUG(3, ("[%5lu]: dual_idmapremove\n", (unsigned long)state->pid)); - if (!string_to_sid(&sid, state->request.data.dual_idmapset.sid)) + if (!string_to_sid(&sid, state->request->data.dual_idmapset.sid)) return WINBINDD_ERROR; map.sid = &sid; - map.xid.id = state->request.data.dual_idmapset.id; - map.xid.type = state->request.data.dual_idmapset.type; + map.xid.id = state->request->data.dual_idmapset.id; + map.xid.type = state->request->data.dual_idmapset.type; map.status = ID_MAPPED; result = idmap_remove_mapping(&map); @@ -213,8 +213,8 @@ enum winbindd_result winbindd_dual_set_hwm(struct winbindd_domain *domain, DEBUG(3, ("[%5lu]: dual_set_hwm\n", (unsigned long)state->pid)); - xid.id = state->request.data.dual_idmapset.id; - xid.type = state->request.data.dual_idmapset.type; + xid.id = state->request->data.dual_idmapset.id; + xid.type = state->request->data.dual_idmapset.type; switch (xid.type) { case ID_TYPE_UID: @@ -290,15 +290,15 @@ enum winbindd_result winbindd_dual_sid2uid(struct winbindd_domain *domain, NTSTATUS result; DEBUG(3, ("[%5lu]: sid to uid %s\n", (unsigned long)state->pid, - state->request.data.dual_sid2id.sid)); + state->request->data.dual_sid2id.sid)); - if (!string_to_sid(&sid, state->request.data.dual_sid2id.sid)) { + if (!string_to_sid(&sid, state->request->data.dual_sid2id.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.dual_sid2id.sid)); + state->request->data.dual_sid2id.sid)); return WINBINDD_ERROR; } - result = idmap_sid_to_uid(state->request.domain_name, &sid, + result = idmap_sid_to_uid(state->request->domain_name, &sid, &state->response.data.uid); DEBUG(10, ("winbindd_dual_sid2uid: 0x%08x - %s - %u\n", @@ -361,17 +361,17 @@ enum winbindd_result winbindd_dual_sid2gid(struct winbindd_domain *domain, NTSTATUS result; DEBUG(3, ("[%5lu]: sid to gid %s\n", (unsigned long)state->pid, - state->request.data.dual_sid2id.sid)); + state->request->data.dual_sid2id.sid)); - if (!string_to_sid(&sid, state->request.data.dual_sid2id.sid)) { + if (!string_to_sid(&sid, state->request->data.dual_sid2id.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.dual_sid2id.sid)); + state->request->data.dual_sid2id.sid)); return WINBINDD_ERROR; } /* Find gid for this sid and return it, possibly ask the slow remote idmap */ - result = idmap_sid_to_gid(state->request.domain_name, &sid, + result = idmap_sid_to_gid(state->request->domain_name, &sid, &state->response.data.gid); DEBUG(10, ("winbindd_dual_sid2gid: 0x%08x - %s - %u\n", @@ -437,11 +437,11 @@ enum winbindd_result winbindd_dual_uid2sid(struct winbindd_domain *domain, DEBUG(3,("[%5lu]: uid to sid %lu\n", (unsigned long)state->pid, - (unsigned long) state->request.data.uid)); + (unsigned long) state->request->data.uid)); /* Find sid for this uid and return it, possibly ask the slow remote idmap */ - result = idmap_uid_to_sid(state->request.domain_name, &sid, - state->request.data.uid); + result = idmap_uid_to_sid(state->request->domain_name, &sid, + state->request->data.uid); if (NT_STATUS_IS_OK(result)) { sid_to_fstring(state->response.data.sid.sid, &sid); @@ -505,11 +505,11 @@ enum winbindd_result winbindd_dual_gid2sid(struct winbindd_domain *domain, DEBUG(3,("[%5lu]: gid %lu to sid\n", (unsigned long)state->pid, - (unsigned long) state->request.data.gid)); + (unsigned long) state->request->data.gid)); /* Find sid for this gid and return it, possibly ask the slow remote idmap */ - result = idmap_gid_to_sid(state->request.domain_name, &sid, - state->request.data.gid); + result = idmap_gid_to_sid(state->request->domain_name, &sid, + state->request->data.gid); if (NT_STATUS_IS_OK(result)) { sid_to_fstring(state->response.data.sid.sid, &sid); diff --git a/source3/winbindd/winbindd_locator.c b/source3/winbindd/winbindd_locator.c index b60d235f708..04dcae3d9ae 100644 --- a/source3/winbindd/winbindd_locator.c +++ b/source3/winbindd/winbindd_locator.c @@ -45,15 +45,15 @@ struct winbindd_child *locator_child(void) void winbindd_dsgetdcname(struct winbindd_cli_state *state) { - state->request.data.dsgetdcname.domain_name - [sizeof(state->request.data.dsgetdcname.domain_name)-1] = '\0'; - state->request.data.dsgetdcname.site_name - [sizeof(state->request.data.dsgetdcname.site_name)-1] = '\0'; - state->request.data.dsgetdcname.domain_guid - [sizeof(state->request.data.dsgetdcname.domain_guid)-1] = '\0'; + state->request->data.dsgetdcname.domain_name + [sizeof(state->request->data.dsgetdcname.domain_name)-1] = '\0'; + state->request->data.dsgetdcname.site_name + [sizeof(state->request->data.dsgetdcname.site_name)-1] = '\0'; + state->request->data.dsgetdcname.domain_guid + [sizeof(state->request->data.dsgetdcname.domain_guid)-1] = '\0'; DEBUG(3, ("[%5lu]: dsgetdcname for %s\n", (unsigned long)state->pid, - state->request.data.dsgetdcname.domain_name)); + state->request->data.dsgetdcname.domain_name)); sendto_child(state, locator_child()); } @@ -107,19 +107,19 @@ static enum winbindd_result dual_dsgetdcname(struct winbindd_domain *domain, struct GUID guid, *guid_ptr = NULL; const char *guid_str = NULL; - state->request.data.dsgetdcname.domain_name - [sizeof(state->request.data.dsgetdcname.domain_name)-1] = '\0'; - state->request.data.dsgetdcname.site_name - [sizeof(state->request.data.dsgetdcname.site_name)-1] = '\0'; - state->request.data.dsgetdcname.domain_guid - [sizeof(state->request.data.dsgetdcname.domain_guid)-1] = '\0'; + state->request->data.dsgetdcname.domain_name + [sizeof(state->request->data.dsgetdcname.domain_name)-1] = '\0'; + state->request->data.dsgetdcname.site_name + [sizeof(state->request->data.dsgetdcname.site_name)-1] = '\0'; + state->request->data.dsgetdcname.domain_guid + [sizeof(state->request->data.dsgetdcname.domain_guid)-1] = '\0'; DEBUG(3, ("[%5lu]: dsgetdcname for %s\n", (unsigned long)state->pid, - state->request.data.dsgetdcname.domain_name)); + state->request->data.dsgetdcname.domain_name)); - ds_flags = get_dsgetdc_flags(state->request.flags); + ds_flags = get_dsgetdc_flags(state->request->flags); - result = GUID_from_string(state->request.data.dsgetdcname.domain_guid, + result = GUID_from_string(state->request->data.dsgetdcname.domain_guid, &guid); if (NT_STATUS_IS_OK(result) && !GUID_all_zero(&guid)) { guid_ptr = &guid; @@ -127,9 +127,9 @@ static enum winbindd_result dual_dsgetdcname(struct winbindd_domain *domain, result = dsgetdcname(state->mem_ctx, winbind_messaging_context(), - state->request.data.dsgetdcname.domain_name, + state->request->data.dsgetdcname.domain_name, guid_ptr, - state->request.data.dsgetdcname.site_name, + state->request->data.dsgetdcname.site_name, ds_flags, &info); diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c index 4109adb14be..eb7828fcf91 100644 --- a/source3/winbindd/winbindd_misc.c +++ b/source3/winbindd/winbindd_misc.c @@ -127,8 +127,8 @@ void winbindd_list_ent(struct winbindd_cli_state *state, enum ent_type type) get_ent_type_string(type))); /* Ensure null termination */ - state->request.domain_name[sizeof(state->request.domain_name)-1]='\0'; - which_domain = state->request.domain_name; + state->request->domain_name[sizeof(state->request->domain_name)-1]='\0'; + which_domain = state->request->domain_name; /* Initialize listent_state */ ent_state = TALLOC_P(state->mem_ctx, struct listent_state); @@ -390,7 +390,7 @@ enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain * } } - if (state->request.data.list_all_domains && !have_own_domain) { + if (state->request->data.list_all_domains && !have_own_domain) { extra_data = talloc_asprintf( state->mem_ctx, "%s\n%s\\%s\\%s", extra_data, domain->name, @@ -418,13 +418,13 @@ void winbindd_getdcname(struct winbindd_cli_state *state) { struct winbindd_domain *domain; - state->request.domain_name - [sizeof(state->request.domain_name)-1] = '\0'; + state->request->domain_name + [sizeof(state->request->domain_name)-1] = '\0'; DEBUG(3, ("[%5lu]: Get DC name for %s\n", (unsigned long)state->pid, - state->request.domain_name)); + state->request->domain_name)); - domain = find_domain_from_name_noinit(state->request.domain_name); + domain = find_domain_from_name_noinit(state->request->domain_name); if (domain && domain->internal) { fstrcpy(state->response.data.dc_name, global_myname()); request_ok(state); @@ -445,11 +445,11 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain, unsigned int orig_timeout; struct winbindd_domain *req_domain; - state->request.domain_name - [sizeof(state->request.domain_name)-1] = '\0'; + state->request->domain_name + [sizeof(state->request->domain_name)-1] = '\0'; DEBUG(3, ("[%5lu]: Get DC name for %s\n", (unsigned long)state->pid, - state->request.domain_name)); + state->request->domain_name)); result = cm_connect_netlogon(domain, &netlogon_pipe); @@ -463,19 +463,19 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain, orig_timeout = rpccli_set_timeout(netlogon_pipe, 35000); - req_domain = find_domain_from_name_noinit(state->request.domain_name); + req_domain = find_domain_from_name_noinit(state->request->domain_name); if (req_domain == domain) { result = rpccli_netr_GetDcName(netlogon_pipe, state->mem_ctx, domain->dcname, - state->request.domain_name, + state->request->domain_name, &dcname_slash, &werr); } else { result = rpccli_netr_GetAnyDCName(netlogon_pipe, state->mem_ctx, domain->dcname, - state->request.domain_name, + state->request->domain_name, &dcname_slash, &werr); } @@ -484,13 +484,13 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain, if (!NT_STATUS_IS_OK(result)) { DEBUG(5,("Error requesting DCname for domain %s: %s\n", - state->request.domain_name, nt_errstr(result))); + state->request->domain_name, nt_errstr(result))); return WINBINDD_ERROR; } if (!W_ERROR_IS_OK(werr)) { DEBUG(5, ("Error requesting DCname for domain %s: %s\n", - state->request.domain_name, win_errstr(werr))); + state->request->domain_name, win_errstr(werr))); return WINBINDD_ERROR; } @@ -522,12 +522,12 @@ void winbindd_show_sequence(struct winbindd_cli_state *state) struct sequence_state *seq; /* Ensure null termination */ - state->request.domain_name[sizeof(state->request.domain_name)-1]='\0'; + state->request->domain_name[sizeof(state->request->domain_name)-1]='\0'; - if (strlen(state->request.domain_name) > 0) { + if (strlen(state->request->domain_name) > 0) { struct winbindd_domain *domain; domain = find_domain_from_name_noinit( - state->request.domain_name); + state->request->domain_name); if (domain == NULL) { request_error(state); return; @@ -626,7 +626,7 @@ enum winbindd_result winbindd_dual_show_sequence(struct winbindd_domain *domain, DEBUG(3, ("[%5lu]: show sequence\n", (unsigned long)state->pid)); /* Ensure null termination */ - state->request.domain_name[sizeof(state->request.domain_name)-1]='\0'; + state->request->domain_name[sizeof(state->request->domain_name)-1]='\0'; domain->methods->sequence_number(domain, &domain->sequence_number); @@ -648,13 +648,13 @@ void winbindd_domain_info(struct winbindd_cli_state *state) struct winbindd_domain *domain; DEBUG(3, ("[%5lu]: domain_info [%s]\n", (unsigned long)state->pid, - state->request.domain_name)); + state->request->domain_name)); - domain = find_domain_from_name_noinit(state->request.domain_name); + domain = find_domain_from_name_noinit(state->request->domain_name); if (domain == NULL) { DEBUG(3, ("Did not find domain [%s]\n", - state->request.domain_name)); + state->request->domain_name)); request_error(state); return; } diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c index a85cf0e6fcb..c2cf4d2d6d7 100644 --- a/source3/winbindd/winbindd_pam.c +++ b/source3/winbindd/winbindd_pam.c @@ -350,7 +350,7 @@ struct winbindd_domain *find_auth_domain(struct winbindd_cli_state *state, } /* we can auth against trusted domains */ - if (state->request.flags & WBFLAG_PAM_CONTACT_TRUSTDOM) { + if (state->request->flags & WBFLAG_PAM_CONTACT_TRUSTDOM) { domain = find_domain_from_name_noinit(domain_name); if (domain == NULL) { DEBUG(3, ("Authentication for domain [%s] skipped " @@ -499,7 +499,7 @@ static const char *generate_krb5_ccache(TALLOC_CTX *mem_ctx, static void setup_return_cc_name(struct winbindd_cli_state *state, const char *cc) { - const char *type = state->request.data.auth.krb5_cc_type; + const char *type = state->request->data.auth.krb5_cc_type; state->response.data.auth.krb5ccname[0] = '\0'; @@ -523,7 +523,7 @@ static uid_t get_uid_from_state(struct winbindd_cli_state *state) { uid_t uid = -1; - uid = state->request.data.auth.uid; + uid = state->request->data.auth.uid; if (uid < 0) { DEBUG(1,("invalid uid: '%u'\n", (unsigned int)uid)); @@ -569,8 +569,8 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain, } cc = generate_krb5_ccache(state->mem_ctx, - state->request.data.auth.krb5_cc_type, - state->request.data.auth.uid, + state->request->data.auth.krb5_cc_type, + state->request->data.auth.uid, &internal_ccache); if (cc == NULL) { return NT_STATUS_NO_MEMORY; @@ -589,7 +589,7 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain, /* 3rd step: * do kerberos auth and setup ccache as the user */ - parse_domain_user(state->request.data.auth.user, name_domain, name_user); + parse_domain_user(state->request->data.auth.user, name_domain, name_user); realm = domain->alt_name; strupper_m(realm); @@ -616,7 +616,7 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain, result = kerberos_return_info3_from_pac(state->mem_ctx, principal_s, - state->request.data.auth.pass, + state->request->data.auth.pass, time_offset, &ticket_lifetime, &renewal_until, @@ -648,7 +648,7 @@ static NTSTATUS winbindd_raw_kerberos_login(struct winbindd_domain *domain, result = add_ccache_to_list(principal_s, cc, service, - state->request.data.auth.user, + state->request->data.auth.user, realm, uid, time(NULL), @@ -689,10 +689,10 @@ failed: "%s\n", error_message(krb5_ret))); } - if (!NT_STATUS_IS_OK(remove_ccache(state->request.data.auth.user))) { + if (!NT_STATUS_IS_OK(remove_ccache(state->request->data.auth.user))) { DEBUG(3,("winbindd_raw_kerberos_login: " "could not remove ccache for user %s\n", - state->request.data.auth.user)); + state->request->data.auth.user)); } return result; @@ -731,7 +731,7 @@ static NTSTATUS append_data(struct winbindd_cli_state *state, const char *name_user) { NTSTATUS result; - uint32_t flags = state->request.flags; + uint32_t flags = state->request->flags; if (flags & WBFLAG_PAM_USER_SESSION_KEY) { memcpy(state->response.data.auth.user_session_key, @@ -799,17 +799,17 @@ void winbindd_pam_auth(struct winbindd_cli_state *state) NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL; /* Ensure null termination */ - state->request.data.auth.user - [sizeof(state->request.data.auth.user)-1]='\0'; + state->request->data.auth.user + [sizeof(state->request->data.auth.user)-1]='\0'; /* Ensure null termination */ - state->request.data.auth.pass - [sizeof(state->request.data.auth.pass)-1]='\0'; + state->request->data.auth.pass + [sizeof(state->request->data.auth.pass)-1]='\0'; DEBUG(3, ("[%5lu]: pam auth %s\n", (unsigned long)state->pid, - state->request.data.auth.user)); + state->request->data.auth.user)); - if (!check_request_flags(state->request.flags)) { + if (!check_request_flags(state->request->flags)) { result = NT_STATUS_INVALID_PARAMETER_MIX; goto done; } @@ -817,7 +817,7 @@ void winbindd_pam_auth(struct winbindd_cli_state *state) /* Parse domain and username */ name_map_status = normalize_name_unmap(state->mem_ctx, - state->request.data.auth.user, + state->request->data.auth.user, &mapped_user); /* If the name normalization didnt' actually do anything, @@ -826,7 +826,7 @@ void winbindd_pam_auth(struct winbindd_cli_state *state) if (!NT_STATUS_IS_OK(name_map_status) && !NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED)) { - mapped_user = state->request.data.auth.user; + mapped_user = state->request->data.auth.user; } if (!canonicalize_username(mapped_user, name_domain, name_user)) { @@ -847,7 +847,7 @@ void winbindd_pam_auth(struct winbindd_cli_state *state) set_auth_errors(&state->response, result); DEBUG(5, ("Plain text authentication for %s returned %s " "(PAM: %d)\n", - state->request.data.auth.user, + state->request->data.auth.user, state->response.data.auth.nt_status_string, state->response.data.auth.pam_error)); request_error(state); @@ -880,7 +880,7 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, /* Parse domain and username */ - parse_domain_user(state->request.data.auth.user, name_domain, name_user); + parse_domain_user(state->request->data.auth.user, name_domain, name_user); if (!lookup_cached_name(state->mem_ctx, @@ -910,7 +910,7 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, *info3 = my_info3; - E_md4hash(state->request.data.auth.pass, new_nt_pass); + E_md4hash(state->request->data.auth.pass, new_nt_pass); dump_data_pw("new_nt_pass", new_nt_pass, NT_HASH_LEN); dump_data_pw("cached_nt_pass", cached_nt_pass, NT_HASH_LEN); @@ -979,7 +979,7 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, } #ifdef HAVE_KRB5 - if ((state->request.flags & WBFLAG_PAM_KRB5) && + if ((state->request->flags & WBFLAG_PAM_KRB5) && ((tdc_domain = wcache_tdc_fetch_domain(state->mem_ctx, name_domain)) != NULL) && (tdc_domain->trust_type & NETR_TRUST_TYPE_UPLEVEL)) { @@ -997,8 +997,8 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, } cc = generate_krb5_ccache(state->mem_ctx, - state->request.data.auth.krb5_cc_type, - state->request.data.auth.uid, + state->request->data.auth.krb5_cc_type, + state->request->data.auth.uid, &internal_ccache); if (cc == NULL) { return NT_STATUS_NO_MEMORY; @@ -1024,7 +1024,7 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, result = add_ccache_to_list(principal_s, cc, service, - state->request.data.auth.user, + state->request->data.auth.user, domain->alt_name, uid, time(NULL), @@ -1049,8 +1049,8 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, result = winbindd_update_creds_by_info3(domain, state->mem_ctx, - state->request.data.auth.user, - state->request.data.auth.pass, + state->request->data.auth.user, + state->request->data.auth.pass, my_info3); if (!NT_STATUS_IS_OK(result)) { DEBUG(1,("winbindd_dual_pam_auth_cached: failed to update creds: %s\n", @@ -1097,7 +1097,7 @@ NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, failed: result = winbindd_update_creds_by_info3(domain, state->mem_ctx, - state->request.data.auth.user, + state->request->data.auth.user, NULL, my_info3); @@ -1121,14 +1121,14 @@ NTSTATUS winbindd_dual_pam_auth_kerberos(struct winbindd_domain *domain, /* Parse domain and username */ - parse_domain_user(state->request.data.auth.user, name_domain, name_user); + parse_domain_user(state->request->data.auth.user, name_domain, name_user); /* what domain should we contact? */ if ( IS_DC ) { if (!(contact_domain = find_domain_from_name(name_domain))) { DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", - state->request.data.auth.user, name_domain, name_user, name_domain)); + state->request->data.auth.user, name_domain, name_user, name_domain)); result = NT_STATUS_NO_SUCH_USER; goto done; } @@ -1143,7 +1143,7 @@ NTSTATUS winbindd_dual_pam_auth_kerberos(struct winbindd_domain *domain, contact_domain = find_domain_from_name(name_domain); if (contact_domain == NULL) { DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", - state->request.data.auth.user, name_domain, name_user, name_domain)); + state->request->data.auth.user, name_domain, name_user, name_domain)); contact_domain = find_our_domain(); } @@ -1204,7 +1204,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, /* Parse domain and username */ - parse_domain_user(state->request.data.auth.user, name_domain, name_user); + parse_domain_user(state->request->data.auth.user, name_domain, name_user); /* do password magic */ @@ -1224,7 +1224,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, names_blob = NTLMv2_generate_names_blob(state->mem_ctx, global_myname(), lp_workgroup()); if (!SMBNTLMv2encrypt(NULL, name_user, name_domain, - state->request.data.auth.pass, + state->request->data.auth.pass, &server_chal, &names_blob, &lm_response, &nt_response, NULL, NULL)) { @@ -1245,7 +1245,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, } else { if (lp_client_lanman_auth() - && SMBencrypt(state->request.data.auth.pass, + && SMBencrypt(state->request->data.auth.pass, chal, local_lm_response)) { lm_resp = data_blob_talloc(state->mem_ctx, @@ -1254,7 +1254,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, } else { lm_resp = data_blob_null; } - SMBNTencrypt(state->request.data.auth.pass, + SMBNTencrypt(state->request->data.auth.pass, chal, local_nt_response); @@ -1268,7 +1268,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, if ( IS_DC ) { if (!(contact_domain = find_domain_from_name(name_domain))) { DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", - state->request.data.auth.user, name_domain, name_user, name_domain)); + state->request->data.auth.user, name_domain, name_user, name_domain)); result = NT_STATUS_NO_SUCH_USER; goto done; } @@ -1375,7 +1375,7 @@ NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain, * the samlogon reply info3. When accurate info3 is required by the * caller, we look up the account flags ourselve - gd */ - if ((state->request.flags & WBFLAG_PAM_INFO3_TEXT) && + if ((state->request->flags & WBFLAG_PAM_INFO3_TEXT) && NT_STATUS_IS_OK(result) && (my_info3->base.acct_flags == 0)) { struct rpc_pipe_client *samr_pipe; @@ -1448,15 +1448,15 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain, NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL; /* Ensure null termination */ - state->request.data.auth.user[sizeof(state->request.data.auth.user)-1]='\0'; + state->request->data.auth.user[sizeof(state->request->data.auth.user)-1]='\0'; /* Ensure null termination */ - state->request.data.auth.pass[sizeof(state->request.data.auth.pass)-1]='\0'; + state->request->data.auth.pass[sizeof(state->request->data.auth.pass)-1]='\0'; DEBUG(3, ("[%5lu]: dual pam auth %s\n", (unsigned long)state->pid, - state->request.data.auth.user)); + state->request->data.auth.user)); - if (!check_request_flags(state->request.flags)) { + if (!check_request_flags(state->request->flags)) { result = NT_STATUS_INVALID_PARAMETER_MIX; goto done; } @@ -1464,7 +1464,7 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain, /* Parse domain and username */ name_map_status = normalize_name_unmap(state->mem_ctx, - state->request.data.auth.user, + state->request->data.auth.user, &mapped_user); /* If the name normalization didnt' actually do anything, @@ -1473,15 +1473,15 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain, if (!NT_STATUS_IS_OK(name_map_status) && !NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED)) { - mapped_user = state->request.data.auth.user; + mapped_user = state->request->data.auth.user; } parse_domain_user(mapped_user, name_domain, name_user); - if ( mapped_user != state->request.data.auth.user ) { + if ( mapped_user != state->request->data.auth.user ) { fstr_sprintf( domain_user, "%s\\%s", name_domain, name_user ); - safe_strcpy( state->request.data.auth.user, domain_user, - sizeof(state->request.data.auth.user)-1 ); + safe_strcpy( state->request->data.auth.user, domain_user, + sizeof(state->request->data.auth.user)-1 ); } if (domain->online == false) { @@ -1502,7 +1502,7 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain, DEBUG(10,("winbindd_dual_pam_auth: domain: %s last was %s\n", domain->name, domain->online ? "online":"offline")); /* Check for Kerberos authentication */ - if (domain->online && (state->request.flags & WBFLAG_PAM_KRB5)) { + if (domain->online && (state->request->flags & WBFLAG_PAM_KRB5)) { result = winbindd_dual_pam_auth_kerberos(domain, state, &info3); /* save for later */ @@ -1541,7 +1541,7 @@ enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain, goto process_result; } - if (state->request.flags & WBFLAG_PAM_FALLBACK_AFTER_KRB5) { + if (state->request->flags & WBFLAG_PAM_FALLBACK_AFTER_KRB5) { DEBUG(3,("falling back to samlogon\n")); goto sam_logon; } else { @@ -1583,7 +1583,7 @@ sam_logon: cached_logon: /* Check for Cached logons */ - if (!domain->online && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN) && + if (!domain->online && (state->request->flags & WBFLAG_PAM_CACHED_LOGIN) && lp_winbind_offline_logon()) { result = winbindd_dual_pam_auth_cached(domain, state, &info3); @@ -1627,10 +1627,10 @@ process_result: /* Check if the user is in the right group */ if (!NT_STATUS_IS_OK(result = check_info3_in_group(state->mem_ctx, info3, - state->request.data.auth.require_membership_of_sid))) { + state->request->data.auth.require_membership_of_sid))) { DEBUG(3, ("User %s is not in the required group (%s), so plaintext authentication is rejected\n", - state->request.data.auth.user, - state->request.data.auth.require_membership_of_sid)); + state->request->data.auth.user, + state->request->data.auth.require_membership_of_sid)); goto done; } @@ -1639,12 +1639,12 @@ process_result: goto done; } - if ((state->request.flags & WBFLAG_PAM_CACHED_LOGIN)) { + if ((state->request->flags & WBFLAG_PAM_CACHED_LOGIN)) { /* Store in-memory creds for single-signon using ntlm_auth. */ - result = winbindd_add_memory_creds(state->request.data.auth.user, + result = winbindd_add_memory_creds(state->request->data.auth.user, get_uid_from_state(state), - state->request.data.auth.pass); + state->request->data.auth.pass); if (!NT_STATUS_IS_OK(result)) { DEBUG(10,("Failed to store memory creds: %s\n", nt_errstr(result))); @@ -1654,13 +1654,13 @@ process_result: if (lp_winbind_offline_logon()) { result = winbindd_store_creds(domain, state->mem_ctx, - state->request.data.auth.user, - state->request.data.auth.pass, + state->request->data.auth.user, + state->request->data.auth.pass, info3, NULL); if (!NT_STATUS_IS_OK(result)) { /* Release refcount. */ - winbindd_delete_memory_creds(state->request.data.auth.user); + winbindd_delete_memory_creds(state->request->data.auth.user); DEBUG(10,("Failed to store creds: %s\n", nt_errstr(result))); goto done; @@ -1669,7 +1669,7 @@ process_result: } - if (state->request.flags & WBFLAG_PAM_GET_PWD_POLICY) { + if (state->request->flags & WBFLAG_PAM_GET_PWD_POLICY) { struct winbindd_domain *our_domain = find_our_domain(); /* This is not entirely correct I believe, but it is @@ -1705,7 +1705,7 @@ done: 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->request->data.auth.user, state->response.data.auth.nt_status_string, state->response.data.auth.pam_error)); @@ -1723,7 +1723,7 @@ void winbindd_pam_auth_crap(struct winbindd_cli_state *state) const char *domain_name = NULL; NTSTATUS result; - if (!check_request_flags(state->request.flags)) { + if (!check_request_flags(state->request->flags)) { result = NT_STATUS_INVALID_PARAMETER_MIX; goto done; } @@ -1748,18 +1748,18 @@ void winbindd_pam_auth_crap(struct winbindd_cli_state *state) } /* Ensure null termination */ - state->request.data.auth_crap.user - [sizeof(state->request.data.auth_crap.user)-1]=0; - state->request.data.auth_crap.domain - [sizeof(state->request.data.auth_crap.domain)-1]=0; + state->request->data.auth_crap.user + [sizeof(state->request->data.auth_crap.user)-1]=0; + state->request->data.auth_crap.domain + [sizeof(state->request->data.auth_crap.domain)-1]=0; DEBUG(3, ("[%5lu]: pam auth crap domain: [%s] user: %s\n", (unsigned long)state->pid, - state->request.data.auth_crap.domain, - state->request.data.auth_crap.user)); + state->request->data.auth_crap.domain, + state->request->data.auth_crap.user)); - if (*state->request.data.auth_crap.domain != '\0') { - domain_name = state->request.data.auth_crap.domain; + if (*state->request->data.auth_crap.domain != '\0') { + domain_name = state->request->data.auth_crap.domain; } else if (lp_winbind_use_default_domain()) { domain_name = lp_workgroup(); } @@ -1777,8 +1777,8 @@ void winbindd_pam_auth_crap(struct winbindd_cli_state *state) done: 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->request->data.auth_crap.domain, + state->request->data.auth_crap.user, state->response.data.auth.nt_status_string, state->response.data.auth.pam_error)); request_error(state); @@ -1805,18 +1805,18 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, anymore */ /* Ensure null termination */ - state->request.data.auth_crap.user[sizeof(state->request.data.auth_crap.user)-1]=0; - state->request.data.auth_crap.domain[sizeof(state->request.data.auth_crap.domain)-1]=0; + state->request->data.auth_crap.user[sizeof(state->request->data.auth_crap.user)-1]=0; + state->request->data.auth_crap.domain[sizeof(state->request->data.auth_crap.domain)-1]=0; - if (!check_request_flags(state->request.flags)) { + if (!check_request_flags(state->request->flags)) { result = NT_STATUS_INVALID_PARAMETER_MIX; goto done; } - name_user = state->request.data.auth_crap.user; + name_user = state->request->data.auth_crap.user; - if (*state->request.data.auth_crap.domain) { - name_domain = state->request.data.auth_crap.domain; + if (*state->request->data.auth_crap.domain) { + name_domain = state->request->data.auth_crap.domain; } else if (lp_winbind_use_default_domain()) { name_domain = lp_workgroup(); } else { @@ -1829,35 +1829,35 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, DEBUG(3, ("[%5lu]: pam auth crap domain: %s user: %s\n", (unsigned long)state->pid, name_domain, name_user)); - if (*state->request.data.auth_crap.workstation) { - workstation = state->request.data.auth_crap.workstation; + if (*state->request->data.auth_crap.workstation) { + workstation = state->request->data.auth_crap.workstation; } else { workstation = global_myname(); } - if (state->request.data.auth_crap.lm_resp_len > sizeof(state->request.data.auth_crap.lm_resp) - || state->request.data.auth_crap.nt_resp_len > sizeof(state->request.data.auth_crap.nt_resp)) { - if (!(state->request.flags & WBFLAG_BIG_NTLMV2_BLOB) || - state->request.extra_len != state->request.data.auth_crap.nt_resp_len) { + if (state->request->data.auth_crap.lm_resp_len > sizeof(state->request->data.auth_crap.lm_resp) + || state->request->data.auth_crap.nt_resp_len > sizeof(state->request->data.auth_crap.nt_resp)) { + if (!(state->request->flags & WBFLAG_BIG_NTLMV2_BLOB) || + state->request->extra_len != state->request->data.auth_crap.nt_resp_len) { DEBUG(0, ("winbindd_pam_auth_crap: invalid password length %u/%u\n", - state->request.data.auth_crap.lm_resp_len, - state->request.data.auth_crap.nt_resp_len)); + state->request->data.auth_crap.lm_resp_len, + state->request->data.auth_crap.nt_resp_len)); result = NT_STATUS_INVALID_PARAMETER; goto done; } } - lm_resp = data_blob_talloc(state->mem_ctx, state->request.data.auth_crap.lm_resp, - state->request.data.auth_crap.lm_resp_len); + lm_resp = data_blob_talloc(state->mem_ctx, state->request->data.auth_crap.lm_resp, + state->request->data.auth_crap.lm_resp_len); - if (state->request.flags & WBFLAG_BIG_NTLMV2_BLOB) { + if (state->request->flags & WBFLAG_BIG_NTLMV2_BLOB) { nt_resp = data_blob_talloc(state->mem_ctx, - state->request.extra_data.data, - state->request.data.auth_crap.nt_resp_len); + state->request->extra_data.data, + state->request->data.auth_crap.nt_resp_len); } else { nt_resp = data_blob_talloc(state->mem_ctx, - state->request.data.auth_crap.nt_resp, - state->request.data.auth_crap.nt_resp_len); + state->request->data.auth_crap.nt_resp, + state->request->data.auth_crap.nt_resp_len); } /* what domain should we contact? */ @@ -1865,7 +1865,7 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, if ( IS_DC ) { if (!(contact_domain = find_domain_from_name(name_domain))) { DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", - state->request.data.auth_crap.user, name_domain, name_user, name_domain)); + state->request->data.auth_crap.user, name_domain, name_user, name_domain)); result = NT_STATUS_NO_SUCH_USER; goto done; } @@ -1898,13 +1898,13 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, result = logon_fn(netlogon_pipe, state->mem_ctx, - state->request.data.auth_crap.logon_parameters, + state->request->data.auth_crap.logon_parameters, contact_domain->dcname, name_user, name_domain, /* Bug #3248 - found by Stefan Burkei. */ workstation, /* We carefully set this above so use it... */ - state->request.data.auth_crap.chal, + state->request->data.auth_crap.chal, lm_resp, nt_resp, &info3); @@ -1953,11 +1953,11 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, /* Check if the user is in the right group */ if (!NT_STATUS_IS_OK(result = check_info3_in_group(state->mem_ctx, info3, - state->request.data.auth_crap.require_membership_of_sid))) { + state->request->data.auth_crap.require_membership_of_sid))) { DEBUG(3, ("User %s is not in the required group (%s), so " "crap authentication is rejected\n", - state->request.data.auth_crap.user, - state->request.data.auth_crap.require_membership_of_sid)); + state->request->data.auth_crap.user, + state->request->data.auth_crap.require_membership_of_sid)); goto done; } @@ -1975,7 +1975,7 @@ done: result = NT_STATUS_NO_LOGON_SERVERS; } - if (state->request.flags & WBFLAG_PAM_NT_STATUS_SQUASH) { + if (state->request->flags & WBFLAG_PAM_NT_STATUS_SQUASH) { result = nt_status_squash(result); } @@ -2001,12 +2001,12 @@ void winbindd_pam_chauthtok(struct winbindd_cli_state *state) NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; DEBUG(3, ("[%5lu]: pam chauthtok %s\n", (unsigned long)state->pid, - state->request.data.chauthtok.user)); + state->request->data.chauthtok.user)); /* Setup crap */ nt_status = normalize_name_unmap(state->mem_ctx, - state->request.data.chauthtok.user, + state->request->data.chauthtok.user, &mapped_user); /* Update the chauthtok name if we did any mapping */ @@ -2014,18 +2014,18 @@ void winbindd_pam_chauthtok(struct winbindd_cli_state *state) if (NT_STATUS_IS_OK(nt_status) || NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) { - fstrcpy(state->request.data.chauthtok.user, mapped_user); + fstrcpy(state->request->data.chauthtok.user, mapped_user); } /* Must pass in state->...chauthtok.user because canonicalize_username() assumes an fstring(). Since we have already copied it (if necessary), this is ok. */ - if (!canonicalize_username(state->request.data.chauthtok.user, domain, user)) { + if (!canonicalize_username(state->request->data.chauthtok.user, domain, 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->request->data.auth.user, state->response.data.auth.nt_status_string, state->response.data.auth.pam_error)); request_error(state); @@ -2036,7 +2036,7 @@ void winbindd_pam_chauthtok(struct winbindd_cli_state *state) if (!contact_domain) { 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)); + state->request->data.chauthtok.user, domain, user, domain)); request_error(state); return; } @@ -2058,16 +2058,16 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact fstring domain, user; DEBUG(3, ("[%5lu]: dual pam chauthtok %s\n", (unsigned long)state->pid, - state->request.data.auth.user)); + state->request->data.auth.user)); - if (!parse_domain_user(state->request.data.chauthtok.user, domain, user)) { + if (!parse_domain_user(state->request->data.chauthtok.user, domain, user)) { goto done; } /* Change password */ - oldpass = state->request.data.chauthtok.oldpass; - newpass = state->request.data.chauthtok.newpass; + oldpass = state->request->data.chauthtok.oldpass; + newpass = state->request->data.chauthtok.newpass; /* Initialize reject reason */ state->response.data.auth.reject_reason = Undefined; @@ -2126,10 +2126,10 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact done: - if (NT_STATUS_IS_OK(result) && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN)) { + if (NT_STATUS_IS_OK(result) && (state->request->flags & WBFLAG_PAM_CACHED_LOGIN)) { /* Update the single sign-on memory creds. */ - result = winbindd_replace_memory_creds(state->request.data.chauthtok.user, + result = winbindd_replace_memory_creds(state->request->data.chauthtok.user, newpass); /* When we login from gdm or xdm and password expires, @@ -2204,23 +2204,23 @@ void winbindd_pam_logoff(struct winbindd_cli_state *state) struct winbindd_domain *domain; fstring name_domain, user; uid_t caller_uid = (uid_t)-1; - uid_t request_uid = state->request.data.logoff.uid; + uid_t request_uid = state->request->data.logoff.uid; DEBUG(3, ("[%5lu]: pam logoff %s\n", (unsigned long)state->pid, - state->request.data.logoff.user)); + state->request->data.logoff.user)); /* Ensure null termination */ - state->request.data.logoff.user - [sizeof(state->request.data.logoff.user)-1]='\0'; + state->request->data.logoff.user + [sizeof(state->request->data.logoff.user)-1]='\0'; - state->request.data.logoff.krb5ccname - [sizeof(state->request.data.logoff.krb5ccname)-1]='\0'; + state->request->data.logoff.krb5ccname + [sizeof(state->request->data.logoff.krb5ccname)-1]='\0'; if (request_uid == (gid_t)-1) { goto failed; } - if (!canonicalize_username(state->request.data.logoff.user, name_domain, user)) { + if (!canonicalize_username(state->request->data.logoff.user, name_domain, user)) { goto failed; } @@ -2239,14 +2239,14 @@ void winbindd_pam_logoff(struct winbindd_cli_state *state) goto failed; case 0: /* root must be able to logoff any user - gd */ - state->request.data.logoff.uid = request_uid; + state->request->data.logoff.uid = request_uid; break; default: if (caller_uid != request_uid) { DEBUG(1,("winbindd_pam_logoff: caller requested invalid uid\n")); goto failed; } - state->request.data.logoff.uid = caller_uid; + state->request->data.logoff.uid = caller_uid; break; } @@ -2257,7 +2257,7 @@ void winbindd_pam_logoff(struct winbindd_cli_state *state) 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->request->data.logoff.user, state->response.data.auth.nt_status_string, state->response.data.auth.pam_error)); request_error(state); @@ -2270,21 +2270,21 @@ enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain, NTSTATUS result = NT_STATUS_NOT_SUPPORTED; DEBUG(3, ("[%5lu]: pam dual logoff %s\n", (unsigned long)state->pid, - state->request.data.logoff.user)); + state->request->data.logoff.user)); - if (!(state->request.flags & WBFLAG_PAM_KRB5)) { + if (!(state->request->flags & WBFLAG_PAM_KRB5)) { result = NT_STATUS_OK; goto process_result; } - if (state->request.data.logoff.krb5ccname[0] == '\0') { + if (state->request->data.logoff.krb5ccname[0] == '\0') { result = NT_STATUS_OK; goto process_result; } #ifdef HAVE_KRB5 - if (state->request.data.logoff.uid < 0) { + if (state->request->data.logoff.uid < 0) { DEBUG(0,("winbindd_pam_logoff: invalid uid\n")); goto process_result; } @@ -2292,20 +2292,20 @@ enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain, /* what we need here is to find the corresponding krb5 ccache name *we* * created for a given username and destroy it */ - if (!ccache_entry_exists(state->request.data.logoff.user)) { + if (!ccache_entry_exists(state->request->data.logoff.user)) { result = NT_STATUS_OK; DEBUG(10,("winbindd_pam_logoff: no entry found.\n")); goto process_result; } - if (!ccache_entry_identical(state->request.data.logoff.user, - state->request.data.logoff.uid, - state->request.data.logoff.krb5ccname)) { + if (!ccache_entry_identical(state->request->data.logoff.user, + state->request->data.logoff.uid, + state->request->data.logoff.krb5ccname)) { DEBUG(0,("winbindd_pam_logoff: cached entry differs.\n")); goto process_result; } - result = remove_ccache(state->request.data.logoff.user); + result = remove_ccache(state->request->data.logoff.user); if (!NT_STATUS_IS_OK(result)) { DEBUG(0,("winbindd_pam_logoff: failed to remove ccache: %s\n", nt_errstr(result))); @@ -2318,7 +2318,7 @@ enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain, process_result: - winbindd_delete_memory_creds(state->request.data.logoff.user); + winbindd_delete_memory_creds(state->request->data.logoff.user); set_auth_errors(&state->response, result); @@ -2333,18 +2333,18 @@ void winbindd_pam_chng_pswd_auth_crap(struct winbindd_cli_state *state) const char *domain_name = NULL; /* Ensure null termination */ - state->request.data.chng_pswd_auth_crap.user[ - sizeof(state->request.data.chng_pswd_auth_crap.user)-1]=0; - state->request.data.chng_pswd_auth_crap.domain[ - sizeof(state->request.data.chng_pswd_auth_crap.domain)-1]=0; + state->request->data.chng_pswd_auth_crap.user[ + sizeof(state->request->data.chng_pswd_auth_crap.user)-1]=0; + state->request->data.chng_pswd_auth_crap.domain[ + sizeof(state->request->data.chng_pswd_auth_crap.domain)-1]=0; DEBUG(3, ("[%5lu]: pam change pswd auth crap domain: %s user: %s\n", (unsigned long)state->pid, - state->request.data.chng_pswd_auth_crap.domain, - state->request.data.chng_pswd_auth_crap.user)); + state->request->data.chng_pswd_auth_crap.domain, + state->request->data.chng_pswd_auth_crap.user)); - if (*state->request.data.chng_pswd_auth_crap.domain != '\0') { - domain_name = state->request.data.chng_pswd_auth_crap.domain; + if (*state->request->data.chng_pswd_auth_crap.domain != '\0') { + domain_name = state->request->data.chng_pswd_auth_crap.domain; } else if (lp_winbind_use_default_domain()) { domain_name = lp_workgroup(); } @@ -2361,8 +2361,8 @@ void winbindd_pam_chng_pswd_auth_crap(struct winbindd_cli_state *state) 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->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)); request_error(state); @@ -2382,17 +2382,17 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai struct rpc_pipe_client *cli; /* Ensure null termination */ - state->request.data.chng_pswd_auth_crap.user[ - sizeof(state->request.data.chng_pswd_auth_crap.user)-1]=0; - state->request.data.chng_pswd_auth_crap.domain[ - sizeof(state->request.data.chng_pswd_auth_crap.domain)-1]=0; + state->request->data.chng_pswd_auth_crap.user[ + sizeof(state->request->data.chng_pswd_auth_crap.user)-1]=0; + state->request->data.chng_pswd_auth_crap.domain[ + sizeof(state->request->data.chng_pswd_auth_crap.domain)-1]=0; *domain = 0; *user = 0; DEBUG(3, ("[%5lu]: pam change pswd auth crap domain: %s user: %s\n", (unsigned long)state->pid, - state->request.data.chng_pswd_auth_crap.domain, - state->request.data.chng_pswd_auth_crap.user)); + state->request->data.chng_pswd_auth_crap.domain, + state->request->data.chng_pswd_auth_crap.user)); if (lp_winbind_offline_logon()) { DEBUG(0,("Refusing password change as winbind offline logons are enabled. ")); @@ -2401,16 +2401,16 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai goto done; } - if (*state->request.data.chng_pswd_auth_crap.domain) { - fstrcpy(domain,state->request.data.chng_pswd_auth_crap.domain); + if (*state->request->data.chng_pswd_auth_crap.domain) { + fstrcpy(domain,state->request->data.chng_pswd_auth_crap.domain); } else { - parse_domain_user(state->request.data.chng_pswd_auth_crap.user, + parse_domain_user(state->request->data.chng_pswd_auth_crap.user, domain, user); if(!*domain) { DEBUG(3,("no domain specified with username (%s) - " "failing auth\n", - state->request.data.chng_pswd_auth_crap.user)); + state->request->data.chng_pswd_auth_crap.user)); result = NT_STATUS_NO_SUCH_USER; goto done; } @@ -2421,7 +2421,7 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai } if(!*user) { - fstrcpy(user, state->request.data.chng_pswd_auth_crap.user); + fstrcpy(user, state->request->data.chng_pswd_auth_crap.user); } DEBUG(3, ("[%5lu]: pam auth crap domain: %s user: %s\n", @@ -2430,24 +2430,24 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai /* Change password */ new_nt_password = data_blob_talloc( state->mem_ctx, - state->request.data.chng_pswd_auth_crap.new_nt_pswd, - state->request.data.chng_pswd_auth_crap.new_nt_pswd_len); + state->request->data.chng_pswd_auth_crap.new_nt_pswd, + state->request->data.chng_pswd_auth_crap.new_nt_pswd_len); old_nt_hash_enc = data_blob_talloc( state->mem_ctx, - state->request.data.chng_pswd_auth_crap.old_nt_hash_enc, - state->request.data.chng_pswd_auth_crap.old_nt_hash_enc_len); + state->request->data.chng_pswd_auth_crap.old_nt_hash_enc, + state->request->data.chng_pswd_auth_crap.old_nt_hash_enc_len); - if(state->request.data.chng_pswd_auth_crap.new_lm_pswd_len > 0) { + if(state->request->data.chng_pswd_auth_crap.new_lm_pswd_len > 0) { new_lm_password = data_blob_talloc( state->mem_ctx, - state->request.data.chng_pswd_auth_crap.new_lm_pswd, - state->request.data.chng_pswd_auth_crap.new_lm_pswd_len); + state->request->data.chng_pswd_auth_crap.new_lm_pswd, + state->request->data.chng_pswd_auth_crap.new_lm_pswd_len); old_lm_hash_enc = data_blob_talloc( state->mem_ctx, - state->request.data.chng_pswd_auth_crap.old_lm_hash_enc, - state->request.data.chng_pswd_auth_crap.old_lm_hash_enc_len); + state->request->data.chng_pswd_auth_crap.old_lm_hash_enc, + state->request->data.chng_pswd_auth_crap.old_lm_hash_enc_len); } else { new_lm_password.length = 0; old_lm_hash_enc.length = 0; diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c index 641b18ebbd8..41981edf005 100644 --- a/source3/winbindd/winbindd_sid.c +++ b/source3/winbindd/winbindd_sid.c @@ -36,13 +36,13 @@ void winbindd_lookupsid(struct winbindd_cli_state *state) DOM_SID sid; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); - if (!string_to_sid(&sid, state->request.data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request.data.sid)); + if (!string_to_sid(&sid, state->request->data.sid)) { + DEBUG(5, ("%s not a SID\n", state->request->data.sid)); request_error(state); return; } @@ -82,20 +82,20 @@ void winbindd_lookupname(struct winbindd_cli_state *state) char *p; /* Ensure null termination */ - state->request.data.name.dom_name[sizeof(state->request.data.name.dom_name)-1]='\0'; + state->request->data.name.dom_name[sizeof(state->request->data.name.dom_name)-1]='\0'; /* Ensure null termination */ - state->request.data.name.name[sizeof(state->request.data.name.name)-1]='\0'; + state->request->data.name.name[sizeof(state->request->data.name.name)-1]='\0'; /* cope with the name being a fully qualified name */ - p = strstr(state->request.data.name.name, lp_winbind_separator()); + p = strstr(state->request->data.name.name, lp_winbind_separator()); if (p) { *p = 0; - name_domain = state->request.data.name.name; + name_domain = state->request->data.name.name; name_user = p+1; } else { - name_domain = state->request.data.name.dom_name; - name_user = state->request.data.name.name; + name_domain = state->request->data.name.dom_name; + name_user = state->request->data.name.name; } DEBUG(3, ("[%5lu]: lookupname %s%s%s\n", (unsigned long)state->pid, @@ -130,13 +130,13 @@ void winbindd_lookuprids(struct winbindd_cli_state *state) DOM_SID domain_sid; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; - DEBUG(10, ("lookup_rids: %s\n", state->request.data.sid)); + DEBUG(10, ("lookup_rids: %s\n", state->request->data.sid)); - if (!string_to_sid(&domain_sid, state->request.data.sid)) { + if (!string_to_sid(&domain_sid, state->request->data.sid)) { DEBUG(5, ("Could not convert %s to SID\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -144,7 +144,7 @@ void winbindd_lookuprids(struct winbindd_cli_state *state) domain = find_lookup_domain_from_sid(&domain_sid); if (domain == NULL) { DEBUG(10, ("Could not find domain for name %s\n", - state->request.domain_name)); + state->request->domain_name)); request_error(state); return; } @@ -161,11 +161,11 @@ static void sid2uid_recv(void *private_data, bool success, uid_t uid) talloc_get_type_abort(private_data, struct winbindd_cli_state); struct dom_sid sid; - string_to_sid(&sid, state->request.data.sid); + string_to_sid(&sid, state->request->data.sid); if (!success) { DEBUG(5, ("Could not convert sid %s\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -183,22 +183,22 @@ static void sid2uid_lookupsid_recv( void *private_data, bool success, talloc_get_type_abort(private_data, struct winbindd_cli_state); DOM_SID sid; - if (!string_to_sid(&sid, state->request.data.sid)) { + if (!string_to_sid(&sid, state->request->data.sid)) { DEBUG(1, ("sid2uid_lookupsid_recv: Could not get convert sid " - "%s from string\n", state->request.data.sid)); + "%s from string\n", state->request->data.sid)); request_error(state); return; } if (!success) { DEBUG(5, ("sid2uid_lookupsid_recv Could not convert get sid type for %s\n", - state->request.data.sid)); + state->request->data.sid)); goto fail; } if ( (type!=SID_NAME_USER) && (type!=SID_NAME_COMPUTER) ) { DEBUG(5,("sid2uid_lookupsid_recv: Sid %s is not a user or a computer.\n", - state->request.data.sid)); + state->request->data.sid)); goto fail; } @@ -223,14 +223,14 @@ void winbindd_sid_to_uid(struct winbindd_cli_state *state) bool expired; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: sid to uid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); - if (!string_to_sid(&sid, state->request.data.sid)) { + if (!string_to_sid(&sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -270,11 +270,11 @@ static void sid2gid_recv(void *private_data, bool success, gid_t gid) talloc_get_type_abort(private_data, struct winbindd_cli_state); struct dom_sid sid; - string_to_sid(&sid, state->request.data.sid); + string_to_sid(&sid, state->request->data.sid); if (!success) { DEBUG(5, ("Could not convert sid %s\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -292,16 +292,16 @@ static void sid2gid_lookupsid_recv( void *private_data, bool success, talloc_get_type_abort(private_data, struct winbindd_cli_state); DOM_SID sid; - if (!string_to_sid(&sid, state->request.data.sid)) { + if (!string_to_sid(&sid, state->request->data.sid)) { DEBUG(1, ("sid2gid_lookupsid_recv: Could not get convert sid " - "%s from string\n", state->request.data.sid)); + "%s from string\n", state->request->data.sid)); request_error(state); return; } if (!success) { DEBUG(5, ("sid2gid_lookupsid_recv: Could not get sid type for %s\n", - state->request.data.sid)); + state->request->data.sid)); goto fail; } @@ -310,7 +310,7 @@ static void sid2gid_lookupsid_recv( void *private_data, bool success, (type!=SID_NAME_WKN_GRP) ) { DEBUG(5,("sid2gid_lookupsid_recv: Sid %s is not a group.\n", - state->request.data.sid)); + state->request->data.sid)); goto fail; } @@ -335,14 +335,14 @@ void winbindd_sid_to_gid(struct winbindd_cli_state *state) bool expired; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: sid to gid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); - if (!string_to_sid(&sid, state->request.data.sid)) { + if (!string_to_sid(&sid, state->request->data.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } @@ -401,16 +401,16 @@ void winbindd_set_mapping(struct winbindd_cli_state *state) return; } - if (!string_to_sid(&sid, state->request.data.dual_idmapset.sid)) { + if (!string_to_sid(&sid, state->request->data.dual_idmapset.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } map.sid = &sid; - map.xid.id = state->request.data.dual_idmapset.id; - map.xid.type = state->request.data.dual_idmapset.type; + map.xid.id = state->request->data.dual_idmapset.id; + map.xid.type = state->request->data.dual_idmapset.type; winbindd_set_mapping_async(state->mem_ctx, &map, set_mapping_recv, state); @@ -443,16 +443,16 @@ void winbindd_remove_mapping(struct winbindd_cli_state *state) return; } - if (!string_to_sid(&sid, state->request.data.dual_idmapset.sid)) { + if (!string_to_sid(&sid, state->request->data.dual_idmapset.sid)) { DEBUG(1, ("Could not get convert sid %s from string\n", - state->request.data.sid)); + state->request->data.sid)); request_error(state); return; } map.sid = &sid; - map.xid.id = state->request.data.dual_idmapset.id; - map.xid.type = state->request.data.dual_idmapset.type; + map.xid.id = state->request->data.dual_idmapset.id; + map.xid.type = state->request->data.dual_idmapset.type; winbindd_remove_mapping_async(state->mem_ctx, &map, remove_mapping_recv, state); @@ -484,8 +484,8 @@ void winbindd_set_hwm(struct winbindd_cli_state *state) return; } - xid.id = state->request.data.dual_idmapset.id; - xid.type = state->request.data.dual_idmapset.type; + xid.id = state->request->data.dual_idmapset.id; + xid.type = state->request->data.dual_idmapset.type; winbindd_set_hwm_async(state->mem_ctx, &xid, set_hwm_recv, state); } @@ -500,15 +500,15 @@ static void uid2sid_recv(void *private_data, bool success, const char *sidstr) if (!success || !string_to_sid(&sid, sidstr)) { ZERO_STRUCT(sid); - idmap_cache_set_sid2uid(&sid, state->request.data.uid); + idmap_cache_set_sid2uid(&sid, state->request->data.uid); request_error(state); return; } DEBUG(10,("uid2sid: uid %lu has sid %s\n", - (unsigned long)(state->request.data.uid), sidstr)); + (unsigned long)(state->request->data.uid), sidstr)); - idmap_cache_set_sid2uid(&sid, state->request.data.uid); + idmap_cache_set_sid2uid(&sid, state->request->data.uid); fstrcpy(state->response.data.sid.sid, sidstr); state->response.data.sid.type = SID_NAME_USER; request_ok(state); @@ -521,12 +521,12 @@ void winbindd_uid_to_sid(struct winbindd_cli_state *state) bool expired; DEBUG(3, ("[%5lu]: uid to sid %lu\n", (unsigned long)state->pid, - (unsigned long)state->request.data.uid)); + (unsigned long)state->request->data.uid)); - if (idmap_cache_find_uid2sid(state->request.data.uid, &sid, + if (idmap_cache_find_uid2sid(state->request->data.uid, &sid, &expired)) { DEBUG(10, ("idmap_cache_find_uid2sid found %d%s\n", - (int)state->request.data.uid, + (int)state->request->data.uid, expired ? " (expired)": "")); if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { DEBUG(10, ("revalidating expired entry\n")); @@ -545,7 +545,7 @@ void winbindd_uid_to_sid(struct winbindd_cli_state *state) /* always go via the async interface (may block) */ backend: - winbindd_uid2sid_async(state->mem_ctx, state->request.data.uid, uid2sid_recv, state); + winbindd_uid2sid_async(state->mem_ctx, state->request->data.uid, uid2sid_recv, state); } /* Convert a gid to a sid */ @@ -558,14 +558,14 @@ static void gid2sid_recv(void *private_data, bool success, const char *sidstr) if (!success || !string_to_sid(&sid, sidstr)) { ZERO_STRUCT(sid); - idmap_cache_set_sid2gid(&sid, state->request.data.gid); + idmap_cache_set_sid2gid(&sid, state->request->data.gid); request_error(state); return; } DEBUG(10,("gid2sid: gid %lu has sid %s\n", - (unsigned long)(state->request.data.gid), sidstr)); + (unsigned long)(state->request->data.gid), sidstr)); - idmap_cache_set_sid2gid(&sid, state->request.data.gid); + 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; request_ok(state); @@ -579,12 +579,12 @@ void winbindd_gid_to_sid(struct winbindd_cli_state *state) bool expired; DEBUG(3, ("[%5lu]: gid to sid %lu\n", (unsigned long)state->pid, - (unsigned long)state->request.data.gid)); + (unsigned long)state->request->data.gid)); - if (idmap_cache_find_gid2sid(state->request.data.gid, &sid, + if (idmap_cache_find_gid2sid(state->request->data.gid, &sid, &expired)) { DEBUG(10, ("idmap_cache_find_gid2sid found %d%s\n", - (int)state->request.data.gid, + (int)state->request->data.gid, expired ? " (expired)": "")); if (expired && IS_DOMAIN_ONLINE(find_our_domain())) { DEBUG(10, ("revalidating expired entry\n")); @@ -603,7 +603,7 @@ void winbindd_gid_to_sid(struct winbindd_cli_state *state) /* always use async calls (may block) */ backend: - winbindd_gid2sid_async(state->mem_ctx, state->request.data.gid, gid2sid_recv, state); + winbindd_gid2sid_async(state->mem_ctx, state->request->data.gid, gid2sid_recv, state); } void winbindd_allocate_uid(struct winbindd_cli_state *state) diff --git a/source3/winbindd/winbindd_user.c b/source3/winbindd/winbindd_user.c index f990ca88e7a..e2b531060aa 100644 --- a/source3/winbindd/winbindd_user.c +++ b/source3/winbindd/winbindd_user.c @@ -160,13 +160,13 @@ enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain, NTSTATUS status; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); - if (!string_to_sid(&sid, state->request.data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request.data.sid)); + if (!string_to_sid(&sid, state->request->data.sid)) { + DEBUG(5, ("%s not a SID\n", state->request->data.sid)); return WINBINDD_ERROR; } @@ -427,8 +427,8 @@ void winbindd_getpwnam(struct winbindd_cli_state *state) size_t dusize; NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; - domuser = state->request.data.username; - dusize = sizeof(state->request.data.username); + domuser = state->request->data.username; + dusize = sizeof(state->request->data.username); /* Ensure null termination (it's an fstring) */ domuser[dusize-1] = '\0'; @@ -491,7 +491,7 @@ static void getpwnam_name2sid_recv(void *private_data, bool success, struct winbindd_cli_state *state = (struct winbindd_cli_state *)private_data; fstring domname, username; - char *domuser = state->request.data.username; + char *domuser = state->request->data.username; if (!success) { DEBUG(5, ("Could not lookup name for user %s\n", domuser)); @@ -520,13 +520,13 @@ static void getpwuid_recv(void *private_data, bool success, const char *sid) if (!success) { DEBUG(10,("uid2sid_recv: uid [%lu] to sid mapping failed\n.", - (unsigned long)(state->request.data.uid))); + (unsigned long)(state->request->data.uid))); request_error(state); return; } DEBUG(10,("uid2sid_recv: uid %lu has sid %s\n", - (unsigned long)(state->request.data.uid), sid)); + (unsigned long)(state->request->data.uid), sid)); if (!string_to_sid(&user_sid, sid)) { DEBUG(1,("uid2sid_recv: Could not convert sid %s " @@ -541,7 +541,7 @@ static void getpwuid_recv(void *private_data, bool success, const char *sid) /* Return a password structure given a uid number */ void winbindd_getpwuid(struct winbindd_cli_state *state) { - uid_t uid = state->request.data.uid; + uid_t uid = state->request->data.uid; DEBUG(3, ("[%5lu]: getpwuid %lu\n", (unsigned long)state->pid, @@ -559,13 +559,13 @@ void winbindd_getpwsid(struct winbindd_cli_state *state) DOM_SID sid; /* Ensure null termination */ - state->request.data.sid[sizeof(state->request.data.sid)-1]='\0'; + state->request->data.sid[sizeof(state->request->data.sid)-1]='\0'; DEBUG(3, ("[%5lu]: getpwsid %s\n", (unsigned long)state->pid, - state->request.data.sid)); + state->request->data.sid)); - if (!string_to_sid(&sid, state->request.data.sid)) { - DEBUG(5, ("%s not a SID\n", state->request.data.sid)); + if (!string_to_sid(&sid, state->request->data.sid)) { + DEBUG(5, ("%s not a SID\n", state->request->data.sid)); request_error(state); return; } @@ -772,7 +772,7 @@ void winbindd_getpwent(struct winbindd_cli_state *state) /* Allocate space for returning a chunk of users */ - num_users = MIN(MAX_GETPWENT_USERS, state->request.data.num_entries); + num_users = MIN(MAX_GETPWENT_USERS, state->request->data.num_entries); if (num_users == 0) { request_error(state); diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c index 9d38a9ee0c5..41f9d7de5c3 100644 --- a/source3/winbindd/winbindd_util.c +++ b/source3/winbindd/winbindd_util.c @@ -708,13 +708,13 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai struct winbindd_cli_state *state) { /* Ensure null termination */ - state->request.domain_name - [sizeof(state->request.domain_name)-1]='\0'; - state->request.data.init_conn.dcname - [sizeof(state->request.data.init_conn.dcname)-1]='\0'; + state->request->domain_name + [sizeof(state->request->domain_name)-1]='\0'; + state->request->data.init_conn.dcname + [sizeof(state->request->data.init_conn.dcname)-1]='\0'; - if (strlen(state->request.data.init_conn.dcname) > 0) { - fstrcpy(domain->dcname, state->request.data.init_conn.dcname); + if (strlen(state->request->data.init_conn.dcname) > 0) { + fstrcpy(domain->dcname, state->request->data.init_conn.dcname); } init_dc_connection(domain); diff --git a/source3/winbindd/winbindd_wins.c b/source3/winbindd/winbindd_wins.c index 82bf199f3c6..13cbb24b06e 100644 --- a/source3/winbindd/winbindd_wins.c +++ b/source3/winbindd/winbindd_wins.c @@ -150,22 +150,22 @@ void winbindd_wins_byip(struct winbindd_cli_state *state) NODE_STATUS_STRUCT *status; /* Ensure null termination */ - state->request.data.winsreq[sizeof(state->request.data.winsreq)-1]='\0'; + state->request->data.winsreq[sizeof(state->request->data.winsreq)-1]='\0'; DEBUG(3, ("[%5lu]: wins_byip %s\n", (unsigned long)state->pid, - state->request.data.winsreq)); + state->request->data.winsreq)); *response = '\0'; maxlen = sizeof(response) - 1; - if ((status = lookup_byaddr_backend(state->request.data.winsreq, &count))){ - size = strlen(state->request.data.winsreq); + if ((status = lookup_byaddr_backend(state->request->data.winsreq, &count))){ + size = strlen(state->request->data.winsreq); if (size > maxlen) { SAFE_FREE(status); request_error(state); return; } - fstrcat(response,state->request.data.winsreq); + fstrcat(response,state->request->data.winsreq); fstrcat(response,"\t"); for (i = 0; i < count; i++) { /* ignore group names */ @@ -199,15 +199,15 @@ void winbindd_wins_byname(struct winbindd_cli_state *state) char addr[INET6_ADDRSTRLEN]; /* Ensure null termination */ - state->request.data.winsreq[sizeof(state->request.data.winsreq)-1]='\0'; + state->request->data.winsreq[sizeof(state->request->data.winsreq)-1]='\0'; DEBUG(3, ("[%5lu]: wins_byname %s\n", (unsigned long)state->pid, - state->request.data.winsreq)); + state->request->data.winsreq)); *response = '\0'; maxlen = sizeof(response) - 1; - if ((ip_list = lookup_byname_backend(state->request.data.winsreq,&count))){ + if ((ip_list = lookup_byname_backend(state->request->data.winsreq,&count))){ for (i = count; i ; i--) { print_sockaddr(addr, sizeof(addr), &ip_list[i-1]); size = strlen(addr); @@ -227,13 +227,13 @@ void winbindd_wins_byname(struct winbindd_cli_state *state) fstrcat(response,addr); fstrcat(response,"\t"); } - size = strlen(state->request.data.winsreq) + strlen(response); + size = strlen(state->request->data.winsreq) + strlen(response); if (size > maxlen) { SAFE_FREE(ip_list); request_error(state); return; } - fstrcat(response,state->request.data.winsreq); + fstrcat(response,state->request->data.winsreq); fstrcat(response,"\n"); SAFE_FREE(ip_list); } else { -- 2.34.1