diff options
Diffstat (limited to 'source3/pipenetlog.c')
-rw-r--r-- | source3/pipenetlog.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/source3/pipenetlog.c b/source3/pipenetlog.c index 861bae3809..acb7f806b9 100644 --- a/source3/pipenetlog.c +++ b/source3/pipenetlog.c @@ -200,12 +200,12 @@ static void make_lsa_user_info(LSA_USER_INFO *usr, usr->num_other_sids = num_other_sids; usr->buffer_other_sids = num_other_sids != 0 ? 1 : 0; - make_unistr2(&(usr->uni_user_name ), user_name , len_user_name , 0); - make_unistr2(&(usr->uni_full_name ), full_name , len_full_name , 0); - make_unistr2(&(usr->uni_logon_script), logon_script, len_logon_script, 0); - make_unistr2(&(usr->uni_profile_path), profile_path, len_profile_path, 0); - make_unistr2(&(usr->uni_home_dir ), home_dir , len_home_dir , 0); - make_unistr2(&(usr->uni_dir_drive ), dir_drive , len_dir_drive , 0); + make_unistr2(&(usr->uni_user_name ), user_name , len_user_name ); + make_unistr2(&(usr->uni_full_name ), full_name , len_full_name ); + make_unistr2(&(usr->uni_logon_script), logon_script, len_logon_script); + make_unistr2(&(usr->uni_profile_path), profile_path, len_profile_path); + make_unistr2(&(usr->uni_home_dir ), home_dir , len_home_dir ); + make_unistr2(&(usr->uni_dir_drive ), dir_drive , len_dir_drive ); usr->num_groups2 = num_groups; for (i = 0; i < num_groups; i++) @@ -213,8 +213,8 @@ static void make_lsa_user_info(LSA_USER_INFO *usr, usr->gids[i] = gids[i]; } - make_unistr2(&(usr->uni_logon_srv), logon_srv, len_logon_srv, 0); - make_unistr2(&(usr->uni_logon_dom), logon_dom, len_logon_dom, 0); + make_unistr2(&(usr->uni_logon_srv), logon_srv, len_logon_srv); + make_unistr2(&(usr->uni_logon_dom), logon_dom, len_logon_dom); make_dom_sid(&(usr->dom_sid), dom_sid); make_dom_sid(&(usr->other_sids[0]), other_sids); @@ -304,11 +304,10 @@ static BOOL update_dcinfo(int cnum, uint16 vuid, /* create a server challenge for the client */ /* PAXX: set these to random values. */ /* lkcl: paul, you mentioned that it doesn't really matter much */ - for (i = 0; i < 8; i++) - { - dc->srv_chal.data[i] = 0xA5; - dc->srv_cred.data[i] = 0xA5; - } + dc->srv_chal.data[0] = 0x11111111; + dc->srv_chal.data[1] = 0x11111111; + dc->srv_cred.data[0] = 0x11111111; + dc->srv_cred.data[1] = 0x11111111; /* from client / server challenges and md4 password, generate sess key */ cred_session_key(&(dc->clnt_chal), &(dc->srv_chal), @@ -335,8 +334,8 @@ static void api_lsa_req_chal( int cnum, uint16 vuid, strcat(mach_acct, "$"); - DEBUG(6,("q_r.clnt_chal.data(%d) :", sizeof(q_r.clnt_chal.data))); - dump_data(6, q_r.clnt_chal.data, 8); + DEBUG(6,("q_r.clnt_chal.data: %lx %lx\n", + q_r.clnt_chal.data[0], q_r.clnt_chal.data[1])); update_dcinfo(cnum, vuid, &(vuser->dc), &(q_r.clnt_chal), mach_acct); @@ -352,6 +351,7 @@ static void api_lsa_auth_2( user_struct *vuser, { LSA_Q_AUTH_2 q_a; + DOM_CHAL srv_cred; UTIME srv_time; srv_time.time = 0; @@ -364,14 +364,15 @@ static void api_lsa_auth_2( user_struct *vuser, &(vuser->dc.clnt_cred), srv_time); /* create server challenge for inclusion in the reply */ - cred_create(vuser->dc.sess_key, &(vuser->dc.srv_cred), srv_time, &(vuser->dc.srv_chal)); + cred_create(vuser->dc.sess_key, &(vuser->dc.srv_cred), srv_time, &srv_cred); - /* update the client credentials (copy server challenge) for use next time */ - memcpy(vuser->dc.clnt_cred.data, vuser->dc.srv_chal.data, sizeof(vuser->dc.clnt_cred.data)); + /* update the client credentials for use next time */ + memcpy(vuser->dc.clnt_cred.data, &(srv_cred.data), sizeof(srv_cred.data)); + memcpy(vuser->dc.srv_cred .data, &(srv_cred.data), sizeof(srv_cred.data)); /* construct reply. */ *rdata_len = lsa_reply_auth_2(&q_a, *rdata + 0x18, *rdata, - &(vuser->dc.srv_chal), 0x0); + &srv_cred, 0x0); } |