s3-netlogon: let get_md4pw() return a struct samr_Password.
authorGünther Deschner <gd@samba.org>
Tue, 25 Aug 2009 16:44:24 +0000 (18:44 +0200)
committerGünther Deschner <gd@samba.org>
Tue, 25 Aug 2009 22:48:04 +0000 (00:48 +0200)
(in preparation of credential merge).

Guenther

source3/libsmb/credentials.c
source3/rpc_server/srv_netlog_nt.c

index 9dc0b9f01b24214323b87899e79e6202fbd57b08..d202409d4b914eef7a87247eba14bd75de969279 100644 (file)
@@ -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);
index de898569f20f44fbcd0d27c9258d7285bf8fee65..2488b15fb2fc68c23b362402e57a69d8ee01b1ab 100644 (file)
@@ -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. */