diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-04-29 21:40:48 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:51:47 -0500 |
commit | fcdb99f7ce049494063c88a495dabd8849cf251c (patch) | |
tree | 8d4373aa935144a1bfa8b9f64c049d144b2cfcf3 | |
parent | ea34bca0bd2566879d48f2197f2b7336dee8fd5b (diff) | |
download | samba-fcdb99f7ce049494063c88a495dabd8849cf251c.tar.gz samba-fcdb99f7ce049494063c88a495dabd8849cf251c.tar.bz2 samba-fcdb99f7ce049494063c88a495dabd8849cf251c.zip |
r22582: Cleanups towards making winbind work again. We still have a long way to go, as this has bitrotted over the past months.
This change in particular catches winbind up with the next
composite_create() function.
We also needed to remove an unused flags field, and fill in the lm
response.
Andrew Bartlett
(This used to be commit bd26e4ffaf1c060fdc3aae28fd4393e83c5a83ea)
-rw-r--r-- | source4/auth/auth_winbind.c | 7 | ||||
-rw-r--r-- | source4/librpc/idl/winbind.idl | 3 | ||||
-rw-r--r-- | source4/winbind/wb_connect_lsa.c | 10 | ||||
-rw-r--r-- | source4/winbind/wb_connect_sam.c | 5 | ||||
-rw-r--r-- | source4/winbind/wb_dom_info.c | 5 | ||||
-rw-r--r-- | source4/winbind/wb_init_domain.c | 5 | ||||
-rw-r--r-- | source4/winbind/wb_pam_auth.c | 42 | ||||
-rw-r--r-- | source4/winbind/wb_sam_logon.c | 1 |
8 files changed, 20 insertions, 58 deletions
diff --git a/source4/auth/auth_winbind.c b/source4/auth/auth_winbind.c index 0f31caa047..dff81cd64d 100644 --- a/source4/auth/auth_winbind.c +++ b/source4/auth/auth_winbind.c @@ -210,8 +210,8 @@ static NTSTATUS winbind_check_password(struct auth_method_context *ctx, network_info->nt.length = user_info->password.response.nt.length; network_info->nt.data = user_info->password.response.nt.data; - network_info->nt.length = user_info->password.response.lanman.length; - network_info->nt.data = user_info->password.response.lanman.data; + network_info->lm.length = user_info->password.response.lanman.length; + network_info->lm.data = user_info->password.response.lanman.data; identity_info = &network_info->identity_info; s->req.in.logon_level = 2; @@ -226,6 +226,9 @@ static NTSTATUS winbind_check_password(struct auth_method_context *ctx, identity_info->workstation.string = user_info->workstation_name; s->req.in.validation_level = 3; + + NDR_PRINT_IN_DEBUG(winbind_SamLogon, &s->req); + status = IRPC_CALL(ctx->auth_ctx->msg_ctx, winbind_servers[0], winbind, WINBIND_SAMLOGON, &s->req, s); diff --git a/source4/librpc/idl/winbind.idl b/source4/librpc/idl/winbind.idl index a6b8173aef..222ac0d6c0 100644 --- a/source4/librpc/idl/winbind.idl +++ b/source4/librpc/idl/winbind.idl @@ -33,7 +33,6 @@ interface winbind [in] [switch_is(logon_level)] netr_LogonLevel logon, [in] uint16 validation_level, [out] [switch_is(validation_level)] netr_Validation validation, - [out] uint8 authoritative, - [in,out] uint32 flags + [out] uint8 authoritative ); } diff --git a/source4/winbind/wb_connect_lsa.c b/source4/winbind/wb_connect_lsa.c index 6ba14a2f17..5a72e59954 100644 --- a/source4/winbind/wb_connect_lsa.c +++ b/source4/winbind/wb_connect_lsa.c @@ -55,11 +55,8 @@ struct composite_context *wb_init_lsa_send(TALLOC_CTX *mem_ctx, struct composite_context *result, *ctx; struct init_lsa_state *state; - result = talloc(mem_ctx, struct composite_context); + result = composite_create(mem_ctx, tree->session->transport->socket->event.ctx); if (result == NULL) goto failed; - result->state = COMPOSITE_STATE_IN_PROGRESS; - result->async.fn = NULL; - result->event_ctx = tree->session->transport->socket->event.ctx; state = talloc(result, struct init_lsa_state); if (state == NULL) goto failed; @@ -237,11 +234,8 @@ struct composite_context *wb_connect_lsa_send(TALLOC_CTX *mem_ctx, struct composite_context *result, *ctx; struct connect_lsa_state *state; - result = talloc(mem_ctx, struct composite_context); + result = composite_create(mem_ctx, tree->session->transport->socket->event.ctx); if (result == NULL) goto failed; - result->state = COMPOSITE_STATE_IN_PROGRESS; - result->async.fn = NULL; - result->event_ctx = tree->session->transport->socket->event.ctx; state = talloc(result, struct connect_lsa_state); if (state == NULL) goto failed; diff --git a/source4/winbind/wb_connect_sam.c b/source4/winbind/wb_connect_sam.c index 393c5f8437..a14b7bd83b 100644 --- a/source4/winbind/wb_connect_sam.c +++ b/source4/winbind/wb_connect_sam.c @@ -61,11 +61,8 @@ struct composite_context *wb_connect_sam_send(TALLOC_CTX *mem_ctx, struct composite_context *result, *ctx; struct connect_samr_state *state; - result = talloc(mem_ctx, struct composite_context); + result = composite_create(mem_ctx, tree->session->transport->socket->event.ctx); if (result == NULL) goto failed; - result->state = COMPOSITE_STATE_IN_PROGRESS; - result->async.fn = NULL; - result->event_ctx = tree->session->transport->socket->event.ctx; state = talloc(result, struct connect_samr_state); if (state == NULL) goto failed; diff --git a/source4/winbind/wb_dom_info.c b/source4/winbind/wb_dom_info.c index 41334b420a..28f35c2095 100644 --- a/source4/winbind/wb_dom_info.c +++ b/source4/winbind/wb_dom_info.c @@ -50,11 +50,8 @@ struct composite_context *wb_get_dom_info_send(TALLOC_CTX *mem_ctx, struct get_dom_info_state *state; struct nbt_name name; - result = talloc(mem_ctx, struct composite_context); + result = composite_create(mem_ctx, service->task->event_ctx); if (result == NULL) goto failed; - result->state = COMPOSITE_STATE_IN_PROGRESS; - result->async.fn = NULL; - result->event_ctx = service->task->event_ctx; state = talloc(result, struct get_dom_info_state); if (state == NULL) goto failed; diff --git a/source4/winbind/wb_init_domain.c b/source4/winbind/wb_init_domain.c index 8700dd637e..5d868cd432 100644 --- a/source4/winbind/wb_init_domain.c +++ b/source4/winbind/wb_init_domain.c @@ -85,11 +85,8 @@ struct composite_context *wb_init_domain_send(TALLOC_CTX *mem_ctx, struct composite_context *result, *ctx; struct init_domain_state *state; - result = talloc(mem_ctx, struct composite_context); + result = composite_create(mem_ctx, service->task->event_ctx); if (result == NULL) goto failed; - result->state = COMPOSITE_STATE_IN_PROGRESS; - result->async.fn = NULL; - result->event_ctx = service->task->event_ctx; state = talloc_zero(result, struct init_domain_state); if (state == NULL) goto failed; diff --git a/source4/winbind/wb_pam_auth.c b/source4/winbind/wb_pam_auth.c index 97798861ca..b8c1cacbf0 100644 --- a/source4/winbind/wb_pam_auth.c +++ b/source4/winbind/wb_pam_auth.c @@ -267,6 +267,8 @@ static void pam_auth_crap_recv_samlogon(struct rpc_request *req) composite_done(state->ctx); } +/* Having received a NTLM authentication reply, parse out the useful + * reply data for the caller */ NTSTATUS wb_cmd_pam_auth_crap_recv(struct composite_context *c, TALLOC_CTX *mem_ctx, DATA_BLOB *info3, @@ -288,25 +290,8 @@ NTSTATUS wb_cmd_pam_auth_crap_recv(struct composite_context *c, return status; } -NTSTATUS wb_cmd_pam_auth_crap(TALLOC_CTX *mem_ctx, - struct wbsrv_service *service, - uint32_t logon_parameters, - const char *domain, const char *user, - const char *workstation, - DATA_BLOB chal, DATA_BLOB nt_resp, - DATA_BLOB lm_resp, - DATA_BLOB *info3, - struct netr_UserSessionKey *user_session_key, - struct netr_LMSessionKey *lm_key, - char **unix_username) -{ - struct composite_context *c = - wb_cmd_pam_auth_crap_send(mem_ctx, service, logon_parameters, - domain, user, workstation, - chal, nt_resp, lm_resp); - return wb_cmd_pam_auth_crap_recv(c, mem_ctx, info3, user_session_key, - lm_key, unix_username); -} +/* Handle plaintext authentication, by encrypting the password and + * then sending via the NTLM calls */ struct composite_context *wb_cmd_pam_auth_send(TALLOC_CTX *mem_ctx, struct wbsrv_service *service, @@ -371,18 +356,9 @@ struct composite_context *wb_cmd_pam_auth_send(TALLOC_CTX *mem_ctx, NTSTATUS wb_cmd_pam_auth_recv(struct composite_context *c) { - struct pam_auth_crap_state *state = - talloc_get_type(c->private_data, struct pam_auth_crap_state); - NTSTATUS status = composite_wait(c); - talloc_free(state); - return status; -} - -NTSTATUS wb_cmd_pam_auth(TALLOC_CTX *mem_ctx, struct wbsrv_service *service, - const char *domain, const char *user, - const char *password) -{ - struct composite_context *c = - wb_cmd_pam_auth_send(mem_ctx, service, domain, user, password); - return wb_cmd_pam_auth_recv(c); + struct pam_auth_crap_state *state = + talloc_get_type(c->private_data, struct pam_auth_crap_state); + NTSTATUS status = composite_wait(c); + talloc_free(state); + return status; } diff --git a/source4/winbind/wb_sam_logon.c b/source4/winbind/wb_sam_logon.c index bf8b4c7ad4..842e144c16 100644 --- a/source4/winbind/wb_sam_logon.c +++ b/source4/winbind/wb_sam_logon.c @@ -160,7 +160,6 @@ NTSTATUS wb_sam_logon_recv(struct composite_context *c, talloc_steal(mem_ctx, s->r_mem_ctx); req->out.validation = s->r.out.validation; req->out.authoritative = 1; - req->out.flags = 0; } talloc_free(s); |