summaryrefslogtreecommitdiffstats
path: root/source/rpc_server/srv_netlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/rpc_server/srv_netlog.c')
-rw-r--r--source/rpc_server/srv_netlog.c191
1 files changed, 81 insertions, 110 deletions
diff --git a/source/rpc_server/srv_netlog.c b/source/rpc_server/srv_netlog.c
index 7dd75336cf3..2ad872e5ad8 100644
--- a/source/rpc_server/srv_netlog.c
+++ b/source/rpc_server/srv_netlog.c
@@ -24,7 +24,6 @@
*/
-/* strikerXXXX Luke, do I need all these? */
#include "includes.h"
#include "nterr.h"
#include "sids.h"
@@ -37,9 +36,8 @@ extern pstring global_myname;
/*************************************************************************
api_net_req_chal
*************************************************************************/
-static BOOL api_net_req_chal( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_req_chal(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_REQ_CHAL q_r;
NET_R_REQ_CHAL r_c;
@@ -53,9 +51,8 @@ static BOOL api_net_req_chal( rpcsrv_struct *p,
return False;
}
- r_c.status = _net_req_chal(&q_r.uni_logon_srv, &q_r.uni_logon_clnt,
- &q_r.clnt_chal, &r_c.srv_chal,
- p->key.pid); /* strikerXXXX have to pass this parameter */
+ r_c.status = _net_req_chal(&q_r.uni_logon_srv, &q_r.uni_logon_clnt,
+ &q_r.clnt_chal, &r_c.srv_chal, p->key.pid);
/* store the response in the SMB stream */
return net_io_r_req_chal("", &r_c, rdata, 0);
@@ -64,9 +61,8 @@ static BOOL api_net_req_chal( rpcsrv_struct *p,
/*************************************************************************
api_net_auth
*************************************************************************/
-static BOOL api_net_auth( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_auth(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_AUTH q_a;
NET_R_AUTH r_a;
@@ -80,10 +76,9 @@ static BOOL api_net_auth( rpcsrv_struct *p,
return False;
}
- r_a.status = _net_auth(&q_a.clnt_id,
- &q_a.clnt_chal,
- &r_a.srv_chal,
- p->key.pid); /* strikerXXXX have to pass this parameter */
+ r_a.status =
+ _net_auth(&q_a.clnt_id, &q_a.clnt_chal, &r_a.srv_chal,
+ p->key.pid);
/* store the response in the SMB stream */
return net_io_r_auth("", &r_a, rdata, 0);
@@ -92,9 +87,8 @@ static BOOL api_net_auth( rpcsrv_struct *p,
/*************************************************************************
api_net_auth_2
*************************************************************************/
-static BOOL api_net_auth_2( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_auth_2(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_AUTH_2 q_a;
NET_R_AUTH_2 r_a;
@@ -108,12 +102,9 @@ static BOOL api_net_auth_2( rpcsrv_struct *p,
return False;
}
- r_a.status = _net_auth_2(&q_a.clnt_id,
- &q_a.clnt_chal,
- &q_a.clnt_flgs,
- &r_a.srv_chal,
- &r_a.srv_flgs,
- p->key.pid); /* strikerXXXX have to pass this parameter */
+ r_a.status =
+ _net_auth_2(&q_a.clnt_id, &q_a.clnt_chal, &q_a.clnt_flgs,
+ &r_a.srv_chal, &r_a.srv_flgs, p->key.pid);
/* store the response in the SMB stream */
return net_io_r_auth_2("", &r_a, rdata, 0);
@@ -122,9 +113,8 @@ static BOOL api_net_auth_2( rpcsrv_struct *p,
/*************************************************************************
api_net_srv_pwset
*************************************************************************/
-static BOOL api_net_srv_pwset( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_srv_pwset(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_SRV_PWSET q_a;
NET_R_SRV_PWSET r_s;
@@ -138,10 +128,9 @@ static BOOL api_net_srv_pwset( rpcsrv_struct *p,
return False;
}
- r_s.status = _net_srv_pwset(&q_a.clnt_id,
- q_a.pwd,
- &r_s.srv_cred,
- p->key.pid); /* strikerXXXX have to pass this parameter */
+ r_s.status =
+ _net_srv_pwset(&q_a.clnt_id, q_a.pwd, &r_s.srv_cred,
+ p->key.pid);
/* store the response in the SMB stream */
return net_io_r_srv_pwset("", &r_s, rdata, 0);
@@ -150,13 +139,12 @@ static BOOL api_net_srv_pwset( rpcsrv_struct *p,
/*************************************************************************
api_net_sam_logoff
*************************************************************************/
-static BOOL api_net_sam_logoff( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_sam_logoff(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_SAM_LOGOFF q_l;
NET_R_SAM_LOGOFF r_s;
- NET_ID_INFO_CTR ctr;
+ NET_ID_INFO_CTR ctr;
DOM_CRED srv_cred;
uint32 status;
@@ -173,9 +161,7 @@ static BOOL api_net_sam_logoff( rpcsrv_struct *p,
return False;
}
- status = _net_sam_logoff(&q_l.sam_id,
- &srv_cred,
- p->key.pid); /* strikerXXXX have to pass this parameter */
+ status = _net_sam_logoff(&q_l.sam_id, &srv_cred, p->key.pid);
make_r_sam_logoff(&r_s, &srv_cred, status);
/* store the response in the SMB stream */
@@ -183,14 +169,14 @@ static BOOL api_net_sam_logoff( rpcsrv_struct *p,
}
static uint32 net_update_creds(uint32 remote_pid, struct dcinfo *dc,
- const UNISTR2 *uni_cli_name,
- const DOM_CRED *cli_creds,
- const DOM_CRED *ret_creds,
- DOM_CRED *srv_creds)
+ const UNISTR2 * uni_cli_name,
+ const DOM_CRED * cli_creds,
+ const DOM_CRED * ret_creds,
+ DOM_CRED * srv_creds)
{
fstring trust_name;
- unistr2_to_ascii(trust_name, uni_cli_name, sizeof(trust_name)-1);
+ unistr2_to_ascii(trust_name, uni_cli_name, sizeof(trust_name) - 1);
if (!cred_get(remote_pid, global_sam_name, trust_name, dc))
{
@@ -198,7 +184,8 @@ static uint32 net_update_creds(uint32 remote_pid, struct dcinfo *dc,
}
/* checks and updates credentials. creates reply credentials */
- if (!deal_with_creds(dc->sess_key, &dc->clnt_cred, cli_creds, srv_creds))
+ if (!deal_with_creds
+ (dc->sess_key, &dc->clnt_cred, cli_creds, srv_creds))
{
return NT_STATUS_ACCESS_DENIED;
}
@@ -216,9 +203,8 @@ static uint32 net_update_creds(uint32 remote_pid, struct dcinfo *dc,
/*************************************************************************
api_net_sam_sync
*************************************************************************/
-static BOOL api_net_sam_sync( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_sam_sync(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_SAM_SYNC q_s;
NET_R_SAM_SYNC r_s;
@@ -232,41 +218,32 @@ static BOOL api_net_sam_sync( rpcsrv_struct *p,
struct dcinfo dc;
ZERO_STRUCT(dc);
ZERO_STRUCT(srv_creds);
-
+
/* grab the challenge... */
if (!net_io_q_sam_sync("", &q_s, data, 0))
{
return False;
}
-
status = net_update_creds(p->key.pid,
- &dc, &q_s.uni_cli_name,
- &q_s.cli_creds,
- &q_s.ret_creds,
- &srv_creds);
+ &dc, &q_s.uni_cli_name,
+ &q_s.cli_creds, &q_s.ret_creds, &srv_creds);
if (status == 0x0)
{
status = _net_sam_sync(&q_s.uni_srv_name,
- &q_s.uni_cli_name,
- q_s.database_id,
- q_s.restart_state,
- &q_s.sync_context,
- q_s.max_size,
- &num_deltas,
- &num_deltas2,
- hdr_deltas,
- deltas);
+ &q_s.uni_cli_name,
+ q_s.database_id,
+ q_s.restart_state,
+ &q_s.sync_context,
+ q_s.max_size,
+ &num_deltas,
+ &num_deltas2, hdr_deltas, deltas);
}
make_r_sam_sync(&r_s, &srv_creds,
- q_s.sync_context,
- num_deltas,
- num_deltas2,
- hdr_deltas,
- deltas,
- status);
+ q_s.sync_context,
+ num_deltas, num_deltas2, hdr_deltas, deltas, status);
/* store the response in the SMB stream */
return net_io_r_sam_sync("", dc.sess_key, &r_s, rdata, 0);
@@ -275,48 +252,45 @@ static BOOL api_net_sam_sync( rpcsrv_struct *p,
/*************************************************************************
api_net_sam_logon
*************************************************************************/
-static BOOL api_net_sam_logon( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_sam_logon(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_SAM_LOGON q_l;
NET_R_SAM_LOGON r_s;
NET_ID_INFO_CTR ctr;
DOM_CRED srv_creds;
- uint16 switch_value;
- NET_USER_INFO_3 info_3;
+ NET_USER_INFO_CTR uctr;
uint32 status;
+ BOOL ret;
- ZERO_STRUCT(info_3);
+ ZERO_STRUCT(uctr);
ZERO_STRUCT(q_l);
ZERO_STRUCT(r_s);
- q_l.sam_id.ctr = &ctr; /* strikerXXXX don't really get this */
+ q_l.sam_id.ctr = &ctr;
if (!net_io_q_sam_logon("", &q_l, data, 0))
{
return False;
}
status = _net_sam_logon(&q_l.sam_id,
- q_l.validation_level,
- &srv_creds,
- &switch_value,
- &info_3,
- p->key.pid);
- make_r_sam_logon(&r_s, &srv_creds, switch_value,
- status == NT_STATUS_NOPROBLEMO ? &info_3 : NULL,
- status);
+ q_l.validation_level,
+ &srv_creds, &uctr, p->key.pid);
+ make_r_sam_logon(&r_s, &srv_creds, q_l.validation_level,
+ status == NT_STATUS_NOPROBLEMO ? uctr.usr.id : NULL,
+ status);
/* store the response in the SMB stream */
- return net_io_r_sam_logon("", &r_s, rdata, 0);
+ ret = net_io_r_sam_logon("", &r_s, rdata, 0);
+ free_net_user_info_ctr(&uctr);
+ return ret;
}
/*************************************************************************
api_net_trust_dom_list
*************************************************************************/
-static BOOL api_net_trust_dom_list( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_trust_dom_list(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_TRUST_DOM_LIST q_t;
NET_R_TRUST_DOM_LIST r_t;
@@ -331,9 +305,9 @@ static BOOL api_net_trust_dom_list( rpcsrv_struct *p,
}
r_t.status = _net_trust_dom_list(&q_t.uni_server_name,
- q_t.function_code,
- &r_t.uni_trust_dom_name);
-
+ q_t.function_code,
+ &r_t.uni_trust_dom_name);
+
/* store the response in the SMB stream */
return net_io_r_trust_dom("", &r_t, rdata, 0);
}
@@ -341,9 +315,8 @@ static BOOL api_net_trust_dom_list( rpcsrv_struct *p,
/*************************************************************************
api_net_logon_ctrl2
*************************************************************************/
-static BOOL api_net_logon_ctrl2( rpcsrv_struct *p,
- prs_struct *data,
- prs_struct *rdata)
+static BOOL api_net_logon_ctrl2(rpcsrv_struct * p,
+ prs_struct * data, prs_struct * rdata)
{
NET_Q_LOGON_CTRL2 q_l;
NET_R_LOGON_CTRL2 r_l;
@@ -362,11 +335,10 @@ static BOOL api_net_logon_ctrl2( rpcsrv_struct *p,
}
status = _net_logon_ctrl2(&q_l.uni_server_name,
- q_l.function_code,
- q_l.query_level,
- q_l.switch_value,
- &switch_value,
- &logon_info);
+ q_l.function_code,
+ q_l.query_level,
+ q_l.switch_value,
+ &switch_value, &logon_info);
make_r_logon_ctrl2(&r_l, switch_value, &logon_info, status);
/* store the response in the SMB stream */
@@ -376,24 +348,23 @@ static BOOL api_net_logon_ctrl2( rpcsrv_struct *p,
/*******************************************************************
array of \PIPE\NETLOGON operations
********************************************************************/
-static const struct api_struct api_net_cmds [] =
-{
- { "NET_REQCHAL" , NET_REQCHAL , api_net_req_chal },
- { "NET_AUTH" , NET_AUTH , api_net_auth },
- { "NET_AUTH2" , NET_AUTH2 , api_net_auth_2 },
- { "NET_SRVPWSET" , NET_SRVPWSET , api_net_srv_pwset },
- { "NET_SAMLOGON" , NET_SAMLOGON , api_net_sam_logon },
- { "NET_SAMLOGOFF" , NET_SAMLOGOFF , api_net_sam_logoff },
- { "NET_LOGON_CTRL2" , NET_LOGON_CTRL2 , api_net_logon_ctrl2 },
- { "NET_TRUST_DOM_LIST", NET_TRUST_DOM_LIST, api_net_trust_dom_list },
- { "NET_SAM_SYNC" , NET_SAM_SYNC , api_net_sam_sync },
- { NULL , 0 , NULL }
+static const struct api_struct api_net_cmds[] = {
+ {"NET_REQCHAL", NET_REQCHAL, api_net_req_chal},
+ {"NET_AUTH", NET_AUTH, api_net_auth},
+ {"NET_AUTH2", NET_AUTH2, api_net_auth_2},
+ {"NET_SRVPWSET", NET_SRVPWSET, api_net_srv_pwset},
+ {"NET_SAMLOGON", NET_SAMLOGON, api_net_sam_logon},
+ {"NET_SAMLOGOFF", NET_SAMLOGOFF, api_net_sam_logoff},
+ {"NET_LOGON_CTRL2", NET_LOGON_CTRL2, api_net_logon_ctrl2},
+ {"NET_TRUST_DOM_LIST", NET_TRUST_DOM_LIST, api_net_trust_dom_list},
+ {"NET_SAM_SYNC", NET_SAM_SYNC, api_net_sam_sync},
+ {NULL, 0, NULL}
};
/*******************************************************************
receives a netlogon pipe and responds.
********************************************************************/
-BOOL api_netlog_rpc(rpcsrv_struct *p)
+BOOL api_netlog_rpc(rpcsrv_struct * p)
{
return api_rpcTNP(p, "api_netlog_rpc", api_net_cmds);
}