diff options
Diffstat (limited to 'source3/rpc_server/srv_netlog_nt.c')
-rw-r--r-- | source3/rpc_server/srv_netlog_nt.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source3/rpc_server/srv_netlog_nt.c b/source3/rpc_server/srv_netlog_nt.c index 33a81fa651..9169c74534 100644 --- a/source3/rpc_server/srv_netlog_nt.c +++ b/source3/rpc_server/srv_netlog_nt.c @@ -910,6 +910,12 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, return NT_STATUS_NO_MEMORY; } break; + case 6: + r->out.validation->sam6 = TALLOC_ZERO_P(p->mem_ctx, struct netr_SamInfo6); + if (!r->out.validation->sam6) { + return NT_STATUS_NO_MEMORY; + } + break; default: DEBUG(0,("%s: bad validation_level value %d.\n", fn, (int)r->in.validation_level)); @@ -918,6 +924,9 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, switch (r->in.logon_level) { case NetlogonInteractiveInformation: + case NetlogonServiceInformation: + case NetlogonInteractiveTransitiveInformation: + case NetlogonServiceTransitiveInformation: nt_username = logon->password->identity_info.account_name.string; nt_domain = logon->password->identity_info.domain_name.string; nt_workstation = logon->password->identity_info.workstation.string; @@ -925,6 +934,7 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, DEBUG(3,("SAM Logon (Interactive). Domain:[%s]. ", lp_workgroup())); break; case NetlogonNetworkInformation: + case NetlogonNetworkTransitiveInformation: nt_username = logon->network->identity_info.account_name.string; nt_domain = logon->network->identity_info.domain_name.string; nt_workstation = logon->network->identity_info.workstation.string; @@ -947,6 +957,7 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, switch (r->in.logon_level) { case NetlogonNetworkInformation: + case NetlogonNetworkTransitiveInformation: { const char *wksname = nt_workstation; @@ -976,6 +987,10 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, break; } case NetlogonInteractiveInformation: + case NetlogonServiceInformation: + case NetlogonInteractiveTransitiveInformation: + case NetlogonServiceTransitiveInformation: + /* 'Interactive' authentication, supplies the password in its MD4 form, encrypted with the session key. We will convert this to challenge/response for the auth subsystem to chew @@ -1066,6 +1081,10 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p, status = serverinfo_to_SamInfo3(server_info, pipe_session_key, 16, r->out.validation->sam3); break; + case 6: + status = serverinfo_to_SamInfo6(server_info, pipe_session_key, 16, + r->out.validation->sam6); + break; } TALLOC_FREE(server_info); |