1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

Jim McDonough's parse patches for Win9x get SD calls.

Jeremy.
This commit is contained in:
Jeremy Allison 0001-01-01 00:00:00 +00:00
parent a600c96e59
commit bc366f3153
3 changed files with 113 additions and 0 deletions

View File

@ -3711,6 +3711,8 @@ BOOL srv_io_q_net_disk_enum(char *desc, SRV_Q_NET_DISK_ENUM *q_n, prs_struct *ps
BOOL srv_io_r_net_disk_enum(char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_struct *ps, int depth);
BOOL srv_io_q_net_name_validate(char *desc, SRV_Q_NET_NAME_VALIDATE *q_n, prs_struct *ps, int depth);
BOOL srv_io_r_net_name_validate(char *desc, SRV_R_NET_NAME_VALIDATE *r_n, prs_struct *ps, int depth);
BOOL srv_io_q_net_file_query_secdesc(char *desc, SRV_Q_NET_FILE_QUERY_SECDESC *q_n, prs_struct *ps, int depth);
BOOL srv_io_r_net_file_query_secdesc(char *desc, SRV_R_NET_FILE_QUERY_SECDESC *r_n, prs_struct *ps, int depth);
/* The following definitions come from rpc_parse/parse_wks.c */

View File

@ -40,6 +40,7 @@
#define SRV_NET_REMOTE_TOD 0x1c
#define SRV_NET_NAME_VALIDATE 0x21
#define SRV_NETSHAREENUM 0x24
#define SRV_NETFILEQUERYSECDESC 0x27
#define MAX_SERVER_DISK_ENTRIES 15
@ -763,5 +764,28 @@ typedef struct r_net_remote_tod
} SRV_R_NET_REMOTE_TOD;
/* SRV_Q_NET_FILE_QUERY_SECDESC */
typedef struct q_net_file_query_secdesc
{
uint32 ptr_srv_name;
UNISTR2 uni_srv_name;
uint32 ptr_qual_name;
UNISTR2 uni_qual_name;
UNISTR2 uni_file_name;
uint32 unknown1;
uint32 unknown2;
uint32 unknown3;
} SRV_Q_NET_FILE_QUERY_SECDESC;
/* SRV_R_NET_FILE_QUERY_SECDESC */
typedef struct r_net_file_query_secdesc
{
uint32 ptr_response;
uint32 size_response;
uint32 ptr_secdesc;
uint32 size_secdesc;
SEC_DESC *sec_desc;
uint32 status;
} SRV_R_NET_FILE_QUERY_SECDESC;
#endif /* _RPC_SRVSVC_H */

View File

@ -2560,3 +2560,90 @@ BOOL srv_io_r_net_name_validate(char *desc, SRV_R_NET_NAME_VALIDATE *r_n, prs_st
return True;
}
/*******************************************************************
Reads or writes a structure.
********************************************************************/
BOOL srv_io_q_net_file_query_secdesc(char *desc, SRV_Q_NET_FILE_QUERY_SECDESC *q_n, prs_struct *ps, int depth)
{
if (q_n == NULL)
return False;
prs_debug(ps, depth, desc, "srv_io_q_net_file_query_secdesc");
depth++;
if(!prs_align(ps))
return False;
if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
return False;
if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
return False;
if(!prs_align(ps))
return False;
if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
return False;
if(!smb_io_unistr2("", &q_n->uni_qual_name, True, ps, depth))
return False;
if(!prs_align(ps))
return False;
if(!smb_io_unistr2("", &q_n->uni_file_name, True, ps, depth))
return False;
if(!prs_uint32("unknown1", ps, depth, &q_n->unknown1))
return False;
if(!prs_uint32("unknown2", ps, depth, &q_n->unknown2))
return False;
if(!prs_uint32("unknown3", ps, depth, &q_n->unknown3))
return False;
return True;
}
/*******************************************************************
Reads or writes a structure.
********************************************************************/
BOOL srv_io_r_net_file_query_secdesc(char *desc, SRV_R_NET_FILE_QUERY_SECDESC *r_n, prs_struct *ps, int depth)
{
if (r_n == NULL)
return False;
prs_debug(ps, depth, desc, "srv_io_r_net_file_query_secdesc");
depth++;
if(!prs_align(ps))
return False;
if(!prs_uint32("ptr_response", ps, depth, &r_n->ptr_response))
return False;
if(!prs_uint32("size_response", ps, depth, &r_n->size_response))
return False;
if(!prs_uint32("ptr_secdesc", ps, depth, &r_n->ptr_secdesc))
return False;
if(!prs_uint32("size_secdesc", ps, depth, &r_n->size_secdesc))
return False;
if(!sec_io_desc("sec_desc", &r_n->sec_desc, ps, depth))
return False;
if(!prs_align(ps))
return False;
if(!prs_uint32("status", ps, depth, &r_n->status))
return False;
return True;
}