- NTSTATUS status;
- struct netr_Credential srv_chal_out;
-
- if (!p->dc || !p->dc->challenge_sent) {
- return NT_STATUS_ACCESS_DENIED;
- }
-
- status = get_md4pw((char *)p->dc->mach_pw,
- r->in.account_name,
- r->in.secure_channel_type,
- NULL);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0,("_netr_ServerAuthenticate: get_md4pw failed. Failed to "
- "get password for machine account %s "
- "from client %s: %s\n",
- r->in.account_name,
- r->in.computer_name,
- nt_errstr(status) ));
- /* always return NT_STATUS_ACCESS_DENIED */
- return NT_STATUS_ACCESS_DENIED;
- }
-
- /* From the client / server challenges and md4 password, generate sess key */
- creds_server_init(0, /* No neg flags. */
- p->dc,
- &p->dc->clnt_chal, /* Stored client chal. */
- &p->dc->srv_chal, /* Stored server chal. */
- p->dc->mach_pw,
- &srv_chal_out);
-
- /* Check client credentials are valid. */
- if (!netlogon_creds_server_check(p->dc, r->in.credentials)) {
- DEBUG(0,("_netr_ServerAuthenticate: netlogon_creds_server_check failed. Rejecting auth "
- "request from client %s machine account %s\n",
- r->in.computer_name,
- r->in.account_name));
- return NT_STATUS_ACCESS_DENIED;
- }