diff options
author | Jeremy Allison <jra@samba.org> | 2001-04-23 23:31:09 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-04-23 23:31:09 +0000 |
commit | 3e4c6d130c3c533831ac6a52e2403132b79f4b28 (patch) | |
tree | ba71663afad9645f7d0392190621c28dd96662c0 /source3/rpc_server/srv_netlog_nt.c | |
parent | 30daf2e939b6dbc50e9389f26f3b1f4a4d6d5c2e (diff) | |
download | samba-3e4c6d130c3c533831ac6a52e2403132b79f4b28.tar.gz samba-3e4c6d130c3c533831ac6a52e2403132b79f4b28.tar.bz2 samba-3e4c6d130c3c533831ac6a52e2403132b79f4b28.zip |
Fix "proc num out of range" error. Missing rpc call.
Jeremy.
(This used to be commit 6248fb22926d72fddaecad5af117af1bdd08fda3)
Diffstat (limited to 'source3/rpc_server/srv_netlog_nt.c')
-rw-r--r-- | source3/rpc_server/srv_netlog_nt.c | 68 |
1 files changed, 56 insertions, 12 deletions
diff --git a/source3/rpc_server/srv_netlog_nt.c b/source3/rpc_server/srv_netlog_nt.c index cfcfac1d1a..6b1fe64ddc 100644 --- a/source3/rpc_server/srv_netlog_nt.c +++ b/source3/rpc_server/srv_netlog_nt.c @@ -96,18 +96,6 @@ uint32 _net_trust_dom_list(pipes_struct *p, NET_Q_TRUST_DOM_LIST *q_u, NET_R_TRU return r_u->status; } -/************************************************************************* - init_net_r_auth_2: - *************************************************************************/ - -static void init_net_r_auth_2(NET_R_AUTH_2 *r_a, - DOM_CHAL *resp_cred, NEG_FLAGS *flgs, int status) -{ - memcpy(r_a->srv_chal.data, resp_cred->data, sizeof(resp_cred->data)); - memcpy(&r_a->srv_flgs, flgs, sizeof(r_a->srv_flgs)); - r_a->status = status; -} - /*********************************************************************************** init_net_r_srv_pwset: ***********************************************************************************/ @@ -219,6 +207,62 @@ uint32 _net_req_chal(pipes_struct *p, NET_Q_REQ_CHAL *q_u, NET_R_REQ_CHAL *r_u) } /************************************************************************* + init_net_r_auth: + *************************************************************************/ + +static void init_net_r_auth(NET_R_AUTH *r_a, DOM_CHAL *resp_cred, int status) +{ + memcpy(r_a->srv_chal.data, resp_cred->data, sizeof(resp_cred->data)); + r_a->status = status; +} + +/************************************************************************* + _net_auth + *************************************************************************/ + +uint32 _net_auth(pipes_struct *p, NET_Q_AUTH *q_u, NET_R_AUTH *r_u) +{ + uint32 status = NT_STATUS_NOPROBLEMO; + DOM_CHAL srv_cred; + UTIME srv_time; + + if (!get_valid_user_struct(p->vuid)) + return NT_STATUS_NO_SUCH_USER; + + srv_time.time = 0; + + /* check that the client credentials are valid */ + if (cred_assert(&q_u->clnt_chal, p->dc.sess_key, &p->dc.clnt_cred.challenge, srv_time)) { + + /* create server challenge for inclusion in the reply */ + cred_create(p->dc.sess_key, &p->dc.srv_cred.challenge, srv_time, &srv_cred); + + /* copy the received client credentials for use next time */ + memcpy(p->dc.clnt_cred.challenge.data, q_u->clnt_chal.data, sizeof(q_u->clnt_chal.data)); + memcpy(p->dc.srv_cred .challenge.data, q_u->clnt_chal.data, sizeof(q_u->clnt_chal.data)); + } else { + status = NT_STATUS_ACCESS_DENIED; + } + + /* set up the LSA AUTH 2 response */ + init_net_r_auth(r_u, &srv_cred, status); + + return r_u->status; +} + +/************************************************************************* + init_net_r_auth_2: + *************************************************************************/ + +static void init_net_r_auth_2(NET_R_AUTH_2 *r_a, + DOM_CHAL *resp_cred, NEG_FLAGS *flgs, int status) +{ + memcpy(r_a->srv_chal.data, resp_cred->data, sizeof(resp_cred->data)); + memcpy(&r_a->srv_flgs, flgs, sizeof(r_a->srv_flgs)); + r_a->status = status; +} + +/************************************************************************* _net_auth_2 *************************************************************************/ |