diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libsmb/credentials.c | 4 | ||||
-rw-r--r-- | source3/rpc_server/srv_netlog_nt.c | 11 |
2 files changed, 7 insertions, 8 deletions
diff --git a/source3/libsmb/credentials.c b/source3/libsmb/credentials.c index 9dc0b9f01b..d202409d4b 100644 --- a/source3/libsmb/credentials.c +++ b/source3/libsmb/credentials.c @@ -104,9 +104,7 @@ static void creds_init_64(struct dcinfo *dc, unsigned char sum2[8]; /* Just in case this isn't already there */ - if (dc->mach_pw != mach_pw) { - memcpy(dc->mach_pw, mach_pw, 16); - } + memcpy(dc->mach_pw, mach_pw, 16); sum[0] = IVAL(clnt_chal_in->data, 0) + IVAL(srv_chal_in->data, 0); sum[1] = IVAL(clnt_chal_in->data, 4) + IVAL(srv_chal_in->data, 4); diff --git a/source3/rpc_server/srv_netlog_nt.c b/source3/rpc_server/srv_netlog_nt.c index de898569f2..2488b15fb2 100644 --- a/source3/rpc_server/srv_netlog_nt.c +++ b/source3/rpc_server/srv_netlog_nt.c @@ -296,7 +296,7 @@ WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p, gets a machine password entry. checks access rights of the host. ******************************************************************/ -static NTSTATUS get_md4pw(char *md4pw, const char *mach_acct, +static NTSTATUS get_md4pw(struct samr_Password *md4pw, const char *mach_acct, uint16_t sec_chan_type, uint32_t *rid) { struct samu *sampass = NULL; @@ -390,8 +390,8 @@ static NTSTATUS get_md4pw(char *md4pw, const char *mach_acct, return NT_STATUS_LOGON_FAILURE; } - memcpy(md4pw, pass, 16); - dump_data(5, (uint8 *)md4pw, 16); + memcpy(md4pw->hash, pass, 16); + dump_data(5, md4pw->hash, 16); if (rid) { *rid = pdb_get_user_rid(sampass); @@ -481,6 +481,7 @@ NTSTATUS _netr_ServerAuthenticate3(pipes_struct *p, struct netr_Credential srv_chal_out; const char *fn; uint32_t rid; + struct samr_Password mach_pwd; /* According to Microsoft (see bugid #6099) * Windows 7 looks at the negotiate_flags @@ -546,7 +547,7 @@ NTSTATUS _netr_ServerAuthenticate3(pipes_struct *p, goto out; } - status = get_md4pw((char *)p->dc->mach_pw, + status = get_md4pw(&mach_pwd, r->in.account_name, r->in.secure_channel_type, &rid); @@ -564,7 +565,7 @@ NTSTATUS _netr_ServerAuthenticate3(pipes_struct *p, p->dc, &p->dc->clnt_chal, /* Stored client chal. */ &p->dc->srv_chal, /* Stored server chal. */ - p->dc->mach_pw, + mach_pwd.hash, &srv_chal_out); /* Check client credentials are valid. */ |