mirror of
https://github.com/samba-team/samba.git
synced 2025-02-14 01:57:53 +03:00
sam logon query creation functions. written twice because i deleted it.
This commit is contained in:
parent
82436a3d99
commit
9eee8c2007
@ -910,17 +910,31 @@ void make_dom_sid2(DOM_SID2 *sid2, char *sid_str);
|
||||
char* smb_io_dom_sid2(BOOL io, DOM_SID2 *sid2, char *q, char *base, int align, int depth);
|
||||
void make_dom_rid2(DOM_RID2 *rid2, uint32 rid);
|
||||
char* smb_io_dom_rid2(BOOL io, DOM_RID2 *rid2, char *q, char *base, int align, int depth);
|
||||
void make_clnt_srv(DOM_CLNT_SRV *log, char *logon_srv, char *comp_name);
|
||||
char* smb_io_clnt_srv(BOOL io, DOM_CLNT_SRV *log, char *q, char *base, int align, int depth);
|
||||
void make_log_info(DOM_LOG_INFO *log, char *logon_srv, char *acct_name,
|
||||
uint16 sec_chan, char *comp_name);
|
||||
char* smb_io_log_info(BOOL io, DOM_LOG_INFO *log, char *q, char *base, int align, int depth);
|
||||
char* smb_io_chal(BOOL io, DOM_CHAL *chal, char *q, char *base, int align, int depth);
|
||||
char* smb_io_cred(BOOL io, DOM_CRED *cred, char *q, char *base, int align, int depth);
|
||||
void make_clnt_info2(DOM_CLNT_INFO2 *clnt,
|
||||
char *logon_srv, char *comp_name,
|
||||
DOM_CRED *clnt_cred);
|
||||
char* smb_io_clnt_info2(BOOL io, DOM_CLNT_INFO2 *clnt, char *q, char *base, int align, int depth);
|
||||
char* smb_io_clnt_info(BOOL io, DOM_CLNT_INFO *clnt, char *q, char *base, int align, int depth);
|
||||
void make_logon_id(DOM_LOGON_ID *log, uint32 log_id_low, uint32 log_id_high);
|
||||
char* smb_io_logon_id(BOOL io, DOM_LOGON_ID *log, char *q, char *base, int align, int depth);
|
||||
void make_arc4_owf(ARC4_OWF *hash, char data[16]);
|
||||
char* smb_io_arc4_owf(BOOL io, ARC4_OWF *hash, char *q, char *base, int align, int depth);
|
||||
void make_id_info1(DOM_ID_INFO_1 *id, char *domain_name,
|
||||
uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
|
||||
char *user_name, char *workgroup_name,
|
||||
char arc4_lm_owf[16], char arc4_nt_owf[16]);
|
||||
char* smb_io_id_info1(BOOL io, DOM_ID_INFO_1 *id, char *q, char *base, int align, int depth);
|
||||
void make_sam_info(DOM_SAM_INFO *sam,
|
||||
char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,
|
||||
DOM_CRED *rtn_cred, uint16 switch_value, uint16 logon_level,
|
||||
DOM_ID_INFO_1 *id1);
|
||||
char* smb_io_sam_info(BOOL io, DOM_SAM_INFO *sam, char *q, char *base, int align, int depth);
|
||||
char* smb_io_gid(BOOL io, DOM_GID *gid, char *q, char *base, int align, int depth);
|
||||
void make_rpc_header(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type,
|
||||
|
@ -360,6 +360,36 @@ char* smb_io_dom_rid2(BOOL io, DOM_RID2 *rid2, char *q, char *base, int align, i
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes a DOM_CLNT_SRV structure.
|
||||
********************************************************************/
|
||||
void make_clnt_srv(DOM_CLNT_SRV *log, char *logon_srv, char *comp_name)
|
||||
{
|
||||
if (log == NULL) return;
|
||||
|
||||
DEBUG(5,("make_clnt_srv: %d\n", __LINE__));
|
||||
|
||||
if (logon_srv != NULL)
|
||||
{
|
||||
log->undoc_buffer = 1;
|
||||
make_unistr2(&(log->uni_logon_srv), logon_srv, strlen(logon_srv));
|
||||
}
|
||||
else
|
||||
{
|
||||
log->undoc_buffer = 1;
|
||||
}
|
||||
|
||||
if (comp_name != NULL)
|
||||
{
|
||||
log->undoc_buffer2 = 1;
|
||||
make_unistr2(&(log->uni_comp_name), comp_name, strlen(comp_name));
|
||||
}
|
||||
else
|
||||
{
|
||||
log->undoc_buffer2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes a DOM_CLNT_SRV structure.
|
||||
********************************************************************/
|
||||
@ -372,10 +402,10 @@ char* smb_io_clnt_srv(BOOL io, DOM_CLNT_SRV *log, char *q, char *base, int align
|
||||
|
||||
q = align_offset(q, base, align);
|
||||
|
||||
DBG_RW_IVAL("undoc_buffer ", depth, base, io, q, log->undoc_buffer); q += 4;
|
||||
DBG_RW_IVAL("undoc_buffer ", depth, base, io, q, log->undoc_buffer ); q += 4;
|
||||
q = smb_io_unistr2(io, &(log->uni_logon_srv), q, base, align, depth);
|
||||
|
||||
DBG_RW_IVAL("undoc_buffer2", depth, base, io, q, log->undoc_buffer); q += 4;
|
||||
DBG_RW_IVAL("undoc_buffer2", depth, base, io, q, log->undoc_buffer2); q += 4;
|
||||
q = smb_io_unistr2(io, &(log->uni_comp_name), q, base, align, depth);
|
||||
|
||||
return q;
|
||||
@ -463,6 +493,30 @@ char* smb_io_cred(BOOL io, DOM_CRED *cred, char *q, char *base, int align, int d
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes a DOM_CLNT_INFO2 structure.
|
||||
********************************************************************/
|
||||
void make_clnt_info2(DOM_CLNT_INFO2 *clnt,
|
||||
char *logon_srv, char *comp_name,
|
||||
DOM_CRED *clnt_cred)
|
||||
{
|
||||
if (clnt == NULL) return;
|
||||
|
||||
DEBUG(5,("make_clnt_info: %d\n", __LINE__));
|
||||
|
||||
make_clnt_srv(&(clnt->login), logon_srv, comp_name);
|
||||
|
||||
if (clnt_cred != NULL)
|
||||
{
|
||||
clnt->ptr_cred = 1;
|
||||
memcpy(&(clnt->cred), clnt_cred, sizeof(clnt->cred));
|
||||
}
|
||||
else
|
||||
{
|
||||
clnt->ptr_cred = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes a DOM_CLNT_INFO2 structure.
|
||||
********************************************************************/
|
||||
@ -503,6 +557,19 @@ char* smb_io_clnt_info(BOOL io, DOM_CLNT_INFO *clnt, char *q, char *base, int al
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes a DOM_LOGON_ID structure.
|
||||
********************************************************************/
|
||||
void make_logon_id(DOM_LOGON_ID *log, uint32 log_id_low, uint32 log_id_high)
|
||||
{
|
||||
if (log == NULL) return;
|
||||
|
||||
DEBUG(5,("make_logon_id: %d\n", __LINE__));
|
||||
|
||||
log->low = log_id_low;
|
||||
log->high = log_id_high;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes a DOM_LOGON_ID structure.
|
||||
********************************************************************/
|
||||
@ -521,6 +588,18 @@ char* smb_io_logon_id(BOOL io, DOM_LOGON_ID *log, char *q, char *base, int align
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes an ARC4_OWF structure.
|
||||
********************************************************************/
|
||||
void make_arc4_owf(ARC4_OWF *hash, char data[16])
|
||||
{
|
||||
if (hash == NULL) return;
|
||||
|
||||
DEBUG(5,("make_arc4_owf: %d\n", __LINE__));
|
||||
|
||||
memcpy(hash->data, data, sizeof(hash->data));
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes an ARC4_OWF structure.
|
||||
********************************************************************/
|
||||
@ -538,6 +617,40 @@ char* smb_io_arc4_owf(BOOL io, ARC4_OWF *hash, char *q, char *base, int align, i
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes a DOM_ID_INFO_1 structure.
|
||||
********************************************************************/
|
||||
void make_id_info1(DOM_ID_INFO_1 *id, char *domain_name,
|
||||
uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
|
||||
char *user_name, char *workgroup_name,
|
||||
char arc4_lm_owf[16], char arc4_nt_owf[16])
|
||||
{
|
||||
int len_domain_name = strlen(domain_name );
|
||||
int len_user_name = strlen(user_name );
|
||||
int len_workgroup_name = strlen(workgroup_name);
|
||||
|
||||
if (id == NULL) return;
|
||||
|
||||
DEBUG(5,("make_id_info1: %d\n", __LINE__));
|
||||
|
||||
id->ptr_id_info1 = 1;
|
||||
|
||||
make_uni_hdr(&(id->hdr_domain_name ), len_domain_name , len_domain_name , 4);
|
||||
|
||||
id->param_ctrl = param_ctrl;
|
||||
make_logon_id(&(id->logon_id), log_id_low, log_id_high);
|
||||
|
||||
make_uni_hdr(&(id->hdr_user_name ), len_user_name , len_user_name , 4);
|
||||
make_uni_hdr(&(id->hdr_workgroup_name), len_workgroup_name, len_workgroup_name, 4);
|
||||
|
||||
make_arc4_owf(&(id->arc4_lm_owf), arc4_lm_owf);
|
||||
make_arc4_owf(&(id->arc4_nt_owf), arc4_nt_owf);
|
||||
|
||||
make_unistr2(&(id->uni_domain_name ), domain_name , len_domain_name );
|
||||
make_unistr2(&(id->uni_user_name ), user_name , len_user_name );
|
||||
make_unistr2(&(id->uni_workgroup_name), workgroup_name, len_workgroup_name);
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes an DOM_ID_INFO_1 structure.
|
||||
********************************************************************/
|
||||
@ -573,6 +686,49 @@ char* smb_io_id_info1(BOOL io, DOM_ID_INFO_1 *id, char *q, char *base, int align
|
||||
return q;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
makes a DOM_SAM_INFO structure.
|
||||
********************************************************************/
|
||||
void make_sam_info(DOM_SAM_INFO *sam,
|
||||
char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,
|
||||
DOM_CRED *rtn_cred, uint16 switch_value, uint16 logon_level,
|
||||
DOM_ID_INFO_1 *id1)
|
||||
{
|
||||
if (sam == NULL) return;
|
||||
|
||||
DEBUG(5,("make_sam_info: %d\n", __LINE__));
|
||||
|
||||
make_clnt_info2(&(sam->client), logon_srv, comp_name, clnt_cred);
|
||||
|
||||
if (rtn_cred != NULL)
|
||||
{
|
||||
sam->ptr_rtn_cred = 1;
|
||||
memcpy(&(sam->rtn_cred), rtn_cred, sizeof(sam->rtn_cred));
|
||||
}
|
||||
else
|
||||
{
|
||||
sam->ptr_rtn_cred = 0;
|
||||
}
|
||||
|
||||
sam->logon_level = logon_level;
|
||||
sam->switch_value = switch_value;
|
||||
|
||||
switch (sam->switch_value)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
sam->auth.id1 = id1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
/* PANIC! */
|
||||
DEBUG(4,("make_sam_info: unknown switch_value!\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
reads or writes a DOM_SAM_INFO structure.
|
||||
********************************************************************/
|
||||
@ -597,7 +753,7 @@ char* smb_io_sam_info(BOOL io, DOM_SAM_INFO *sam, char *q, char *base, int align
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
q = smb_io_id_info1(io, &(sam->auth.id1), q, base, align, depth);
|
||||
q = smb_io_id_info1(io, sam->auth.id1, q, base, align, depth);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user