rpc_parse/parse_samr.c

ソースコードを見る。

関数

void init_samr_q_close_hnd (SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd)
BOOL samr_io_q_close_hnd (const char *desc, SAMR_Q_CLOSE_HND *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_close_hnd (const char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int depth)
void init_samr_q_lookup_domain (SAMR_Q_LOOKUP_DOMAIN *q_u, POLICY_HND *pol, char *dom_name)
BOOL samr_io_q_lookup_domain (const char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth)
void init_samr_r_lookup_domain (SAMR_R_LOOKUP_DOMAIN *r_u, DOM_SID *dom_sid, NTSTATUS status)
BOOL samr_io_r_lookup_domain (const char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth)
void init_samr_q_remove_sid_foreign_domain (SAMR_Q_REMOVE_SID_FOREIGN_DOMAIN *q_u, POLICY_HND *dom_pol, DOM_SID *sid)
BOOL samr_io_q_remove_sid_foreign_domain (const char *desc, SAMR_Q_REMOVE_SID_FOREIGN_DOMAIN *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_remove_sid_foreign_domain (const char *desc, SAMR_R_REMOVE_SID_FOREIGN_DOMAIN *r_u, prs_struct *ps, int depth)
void init_samr_q_open_domain (SAMR_Q_OPEN_DOMAIN *q_u, POLICY_HND *pol, uint32 flags, const DOM_SID *sid)
BOOL samr_io_q_open_domain (const char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_open_domain (const char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth)
void init_samr_q_get_usrdom_pwinfo (SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol)
BOOL samr_io_q_get_usrdom_pwinfo (const char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth)
void init_samr_r_get_usrdom_pwinfo (SAMR_R_GET_USRDOM_PWINFO *r_u, NTSTATUS status)
BOOL samr_io_r_get_usrdom_pwinfo (const char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth)
BOOL samr_io_q_set_sec_obj (const char *desc, SAMR_Q_SET_SEC_OBJ *q_u, prs_struct *ps, int depth)
void init_samr_q_query_sec_obj (SAMR_Q_QUERY_SEC_OBJ *q_u, POLICY_HND *user_pol, uint32 sec_info)
BOOL samr_io_q_query_sec_obj (const char *desc, SAMR_Q_QUERY_SEC_OBJ *q_u, prs_struct *ps, int depth)
void init_samr_q_query_domain_info (SAMR_Q_QUERY_DOMAIN_INFO *q_u, POLICY_HND *domain_pol, uint16 switch_value)
BOOL samr_io_q_query_domain_info (const char *desc, SAMR_Q_QUERY_DOMAIN_INFO *q_u, prs_struct *ps, int depth)
void init_unk_info1 (SAM_UNK_INFO_1 *u_1, uint16 min_pass_len, uint16 pass_hist, uint32 password_properties, NTTIME nt_expire, NTTIME nt_min_age)
static BOOL sam_io_unk_info1 (const char *desc, SAM_UNK_INFO_1 *u_1, prs_struct *ps, int depth)
void init_unk_info2 (SAM_UNK_INFO_2 *u_2, const char *comment, const char *domain, const char *server, uint32 seq_num, uint32 num_users, uint32 num_groups, uint32 num_alias, NTTIME nt_logout, uint32 server_role)
static BOOL sam_io_unk_info2 (const char *desc, SAM_UNK_INFO_2 *u_2, prs_struct *ps, int depth)
void init_unk_info3 (SAM_UNK_INFO_3 *u_3, NTTIME nt_logout)
static BOOL sam_io_unk_info3 (const char *desc, SAM_UNK_INFO_3 *u_3, prs_struct *ps, int depth)
void init_unk_info4 (SAM_UNK_INFO_4 *u_4, const char *comment)
static BOOL sam_io_unk_info4 (const char *desc, SAM_UNK_INFO_4 *u_4, prs_struct *ps, int depth)
void init_unk_info5 (SAM_UNK_INFO_5 *u_5, const char *domain)
static BOOL sam_io_unk_info5 (const char *desc, SAM_UNK_INFO_5 *u_5, prs_struct *ps, int depth)
void init_unk_info6 (SAM_UNK_INFO_6 *u_6, const char *server)
static BOOL sam_io_unk_info6 (const char *desc, SAM_UNK_INFO_6 *u_6, prs_struct *ps, int depth)
void init_unk_info7 (SAM_UNK_INFO_7 *u_7, uint32 server_role)
static BOOL sam_io_unk_info7 (const char *desc, SAM_UNK_INFO_7 *u_7, prs_struct *ps, int depth)
void init_unk_info8 (SAM_UNK_INFO_8 *u_8, uint32 seq_num)
static BOOL sam_io_unk_info8 (const char *desc, SAM_UNK_INFO_8 *u_8, prs_struct *ps, int depth)
void init_unk_info9 (SAM_UNK_INFO_9 *u_9, uint32 unknown)
static BOOL sam_io_unk_info9 (const char *desc, SAM_UNK_INFO_9 *u_9, prs_struct *ps, int depth)
void init_unk_info12 (SAM_UNK_INFO_12 *u_12, NTTIME nt_lock_duration, NTTIME nt_reset_time, uint16 lockout)
static BOOL sam_io_unk_info12 (const char *desc, SAM_UNK_INFO_12 *u_12, prs_struct *ps, int depth)
void init_unk_info13 (SAM_UNK_INFO_13 *u_13, uint32 seq_num)
static BOOL sam_io_unk_info13 (const char *desc, SAM_UNK_INFO_13 *u_13, prs_struct *ps, int depth)
void init_samr_r_query_domain_info (SAMR_R_QUERY_DOMAIN_INFO *r_u, uint16 switch_value, SAM_UNK_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_domain_info (const char *desc, SAMR_R_QUERY_DOMAIN_INFO *r_u, prs_struct *ps, int depth)
void init_samr_q_set_sec_obj (SAMR_Q_SET_SEC_OBJ *q_u, POLICY_HND *pol, uint32 sec_info, SEC_DESC_BUF *buf)
BOOL samr_io_r_set_sec_obj (const char *desc, SAMR_R_SET_SEC_OBJ *r_u, prs_struct *ps, int depth)
BOOL samr_io_r_query_sec_obj (const char *desc, SAMR_R_QUERY_SEC_OBJ *r_u, prs_struct *ps, int depth)
static BOOL sam_io_sam_str1 (const char *desc, SAM_STR1 *sam, uint32 acct_buf, uint32 name_buf, uint32 desc_buf, prs_struct *ps, int depth)
static void init_sam_entry1 (SAM_ENTRY1 *sam, uint32 user_idx, UNISTR2 *sam_name, UNISTR2 *sam_full, UNISTR2 *sam_desc, uint32 rid_user, uint32 acb_info)
static BOOL sam_io_sam_entry1 (const char *desc, SAM_ENTRY1 *sam, prs_struct *ps, int depth)
static BOOL sam_io_sam_str2 (const char *desc, SAM_STR2 *sam, uint32 acct_buf, uint32 desc_buf, prs_struct *ps, int depth)
static void init_sam_entry2 (SAM_ENTRY2 *sam, uint32 user_idx, UNISTR2 *sam_name, UNISTR2 *sam_desc, uint32 rid_user, uint32 acb_info)
static BOOL sam_io_sam_entry2 (const char *desc, SAM_ENTRY2 *sam, prs_struct *ps, int depth)
static BOOL sam_io_sam_str3 (const char *desc, SAM_STR3 *sam, uint32 acct_buf, uint32 desc_buf, prs_struct *ps, int depth)
static void init_sam_entry3 (SAM_ENTRY3 *sam, uint32 grp_idx, UNISTR2 *grp_name, UNISTR2 *grp_desc, uint32 rid_grp)
static BOOL sam_io_sam_entry3 (const char *desc, SAM_ENTRY3 *sam, prs_struct *ps, int depth)
static void init_sam_entry4 (SAM_ENTRY4 *sam, uint32 user_idx, uint32 len_acct_name)
static BOOL sam_io_sam_entry4 (const char *desc, SAM_ENTRY4 *sam, prs_struct *ps, int depth)
static void init_sam_entry5 (SAM_ENTRY5 *sam, uint32 grp_idx, uint32 len_grp_name)
static BOOL sam_io_sam_entry5 (const char *desc, SAM_ENTRY5 *sam, prs_struct *ps, int depth)
void init_sam_entry (SAM_ENTRY *sam, UNISTR2 *uni2, uint32 rid)
static BOOL sam_io_sam_entry (const char *desc, SAM_ENTRY *sam, prs_struct *ps, int depth)
void init_samr_q_enum_dom_users (SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol, uint32 start_idx, uint32 acb_mask, uint32 size)
BOOL samr_io_q_enum_dom_users (const char *desc, SAMR_Q_ENUM_DOM_USERS *q_e, prs_struct *ps, int depth)
void init_samr_r_enum_dom_users (SAMR_R_ENUM_DOM_USERS *r_u, uint32 next_idx, uint32 num_sam_entries)
BOOL samr_io_r_enum_dom_users (const char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth)
void init_samr_q_query_dispinfo (SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol, uint16 switch_level, uint32 start_idx, uint32 max_entries, uint32 max_size)
BOOL samr_io_q_query_dispinfo (const char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth)
NTSTATUS init_sam_dispinfo_1 (TALLOC_CTX *ctx, SAM_DISPINFO_1 **sam, uint32 num_entries, uint32 start_idx, struct samr_displayentry *entries)
static BOOL sam_io_sam_dispinfo_1 (const char *desc, SAM_DISPINFO_1 *sam, uint32 num_entries, prs_struct *ps, int depth)
NTSTATUS init_sam_dispinfo_2 (TALLOC_CTX *ctx, SAM_DISPINFO_2 **sam, uint32 num_entries, uint32 start_idx, struct samr_displayentry *entries)
static BOOL sam_io_sam_dispinfo_2 (const char *desc, SAM_DISPINFO_2 *sam, uint32 num_entries, prs_struct *ps, int depth)
NTSTATUS init_sam_dispinfo_3 (TALLOC_CTX *ctx, SAM_DISPINFO_3 **sam, uint32 num_entries, uint32 start_idx, struct samr_displayentry *entries)
static BOOL sam_io_sam_dispinfo_3 (const char *desc, SAM_DISPINFO_3 *sam, uint32 num_entries, prs_struct *ps, int depth)
NTSTATUS init_sam_dispinfo_4 (TALLOC_CTX *ctx, SAM_DISPINFO_4 **sam, uint32 num_entries, uint32 start_idx, struct samr_displayentry *entries)
static BOOL sam_io_sam_dispinfo_4 (const char *desc, SAM_DISPINFO_4 *sam, uint32 num_entries, prs_struct *ps, int depth)
NTSTATUS init_sam_dispinfo_5 (TALLOC_CTX *ctx, SAM_DISPINFO_5 **sam, uint32 num_entries, uint32 start_idx, struct samr_displayentry *entries)
static BOOL sam_io_sam_dispinfo_5 (const char *desc, SAM_DISPINFO_5 *sam, uint32 num_entries, prs_struct *ps, int depth)
void init_samr_r_query_dispinfo (SAMR_R_QUERY_DISPINFO *r_u, uint32 num_entries, uint32 total_size, uint32 data_size, uint16 switch_level, SAM_DISPINFO_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_dispinfo (const char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_get_dispenum_index (SAMR_Q_GET_DISPENUM_INDEX *q_e, POLICY_HND *pol, uint16 switch_level, const char *name)
BOOL samr_io_q_get_dispenum_index (const char *desc, SAMR_Q_GET_DISPENUM_INDEX *q_e, prs_struct *ps, int depth)
BOOL samr_io_r_get_dispenum_index (const char *desc, SAMR_R_GET_DISPENUM_INDEX *r_u, prs_struct *ps, int depth)
void init_samr_q_open_group (SAMR_Q_OPEN_GROUP *q_c, POLICY_HND *hnd, uint32 access_mask, uint32 rid)
void init_samr_r_get_dispenum_index (SAMR_R_GET_DISPENUM_INDEX *q_e, uint32 idx)
BOOL samr_io_q_open_group (const char *desc, SAMR_Q_OPEN_GROUP *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_open_group (const char *desc, SAMR_R_OPEN_GROUP *r_u, prs_struct *ps, int depth)
void init_samr_group_info1 (GROUP_INFO1 *gr1, char *acct_name, char *acct_desc, uint32 num_members)
BOOL samr_io_group_info1 (const char *desc, GROUP_INFO1 *gr1, prs_struct *ps, int depth)
void init_samr_group_info2 (GROUP_INFO2 *gr2, const char *acct_name)
BOOL samr_io_group_info2 (const char *desc, GROUP_INFO2 *gr2, prs_struct *ps, int depth)
void init_samr_group_info3 (GROUP_INFO3 *gr3)
BOOL samr_io_group_info3 (const char *desc, GROUP_INFO3 *gr3, prs_struct *ps, int depth)
void init_samr_group_info4 (GROUP_INFO4 *gr4, const char *acct_desc)
BOOL samr_io_group_info4 (const char *desc, GROUP_INFO4 *gr4, prs_struct *ps, int depth)
void init_samr_group_info5 (GROUP_INFO5 *gr5, char *acct_name, char *acct_desc, uint32 num_members)
BOOL samr_io_group_info5 (const char *desc, GROUP_INFO5 *gr5, prs_struct *ps, int depth)
static BOOL samr_group_info_ctr (const char *desc, GROUP_INFO_CTR **ctr, prs_struct *ps, int depth)
void init_samr_q_create_dom_group (SAMR_Q_CREATE_DOM_GROUP *q_e, POLICY_HND *pol, const char *acct_desc, uint32 access_mask)
BOOL samr_io_q_create_dom_group (const char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_struct *ps, int depth)
BOOL samr_io_r_create_dom_group (const char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth)
void init_samr_q_delete_dom_group (SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd)
BOOL samr_io_q_delete_dom_group (const char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_delete_dom_group (const char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth)
void init_samr_q_del_groupmem (SAMR_Q_DEL_GROUPMEM *q_e, POLICY_HND *pol, uint32 rid)
BOOL samr_io_q_del_groupmem (const char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth)
void init_samr_r_del_groupmem (SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol, NTSTATUS status)
BOOL samr_io_r_del_groupmem (const char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth)
void init_samr_q_add_groupmem (SAMR_Q_ADD_GROUPMEM *q_e, POLICY_HND *pol, uint32 rid)
BOOL samr_io_q_add_groupmem (const char *desc, SAMR_Q_ADD_GROUPMEM *q_e, prs_struct *ps, int depth)
void init_samr_r_add_groupmem (SAMR_R_ADD_GROUPMEM *r_u, POLICY_HND *pol, NTSTATUS status)
BOOL samr_io_r_add_groupmem (const char *desc, SAMR_R_ADD_GROUPMEM *r_u, prs_struct *ps, int depth)
void init_samr_q_set_groupinfo (SAMR_Q_SET_GROUPINFO *q_e, POLICY_HND *pol, GROUP_INFO_CTR *ctr)
BOOL samr_io_q_set_groupinfo (const char *desc, SAMR_Q_SET_GROUPINFO *q_e, prs_struct *ps, int depth)
void init_samr_r_set_groupinfo (SAMR_R_SET_GROUPINFO *r_u, NTSTATUS status)
BOOL samr_io_r_set_groupinfo (const char *desc, SAMR_R_SET_GROUPINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_query_groupinfo (SAMR_Q_QUERY_GROUPINFO *q_e, POLICY_HND *pol, uint16 switch_level)
BOOL samr_io_q_query_groupinfo (const char *desc, SAMR_Q_QUERY_GROUPINFO *q_e, prs_struct *ps, int depth)
void init_samr_r_query_groupinfo (SAMR_R_QUERY_GROUPINFO *r_u, GROUP_INFO_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_groupinfo (const char *desc, SAMR_R_QUERY_GROUPINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_query_groupmem (SAMR_Q_QUERY_GROUPMEM *q_c, POLICY_HND *hnd)
BOOL samr_io_q_query_groupmem (const char *desc, SAMR_Q_QUERY_GROUPMEM *q_u, prs_struct *ps, int depth)
void init_samr_r_query_groupmem (SAMR_R_QUERY_GROUPMEM *r_u, uint32 num_entries, uint32 *rid, uint32 *attr, NTSTATUS status)
BOOL samr_io_r_query_groupmem (const char *desc, SAMR_R_QUERY_GROUPMEM *r_u, prs_struct *ps, int depth)
void init_samr_q_query_usergroups (SAMR_Q_QUERY_USERGROUPS *q_u, POLICY_HND *hnd)
BOOL samr_io_q_query_usergroups (const char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth)
void init_samr_r_query_usergroups (SAMR_R_QUERY_USERGROUPS *r_u, uint32 num_gids, DOM_GID *gid, NTSTATUS status)
BOOL samr_io_gids (const char *desc, uint32 *num_gids, DOM_GID **gid, prs_struct *ps, int depth)
BOOL samr_io_r_query_usergroups (const char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth)
void init_samr_q_enum_domains (SAMR_Q_ENUM_DOMAINS *q_e, POLICY_HND *pol, uint32 start_idx, uint32 size)
BOOL samr_io_q_enum_domains (const char *desc, SAMR_Q_ENUM_DOMAINS *q_e, prs_struct *ps, int depth)
void init_samr_r_enum_domains (SAMR_R_ENUM_DOMAINS *r_u, uint32 next_idx, uint32 num_sam_entries)
BOOL samr_io_r_enum_domains (const char *desc, SAMR_R_ENUM_DOMAINS *r_u, prs_struct *ps, int depth)
void init_samr_q_enum_dom_groups (SAMR_Q_ENUM_DOM_GROUPS *q_e, POLICY_HND *pol, uint32 start_idx, uint32 size)
BOOL samr_io_q_enum_dom_groups (const char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth)
void init_samr_r_enum_dom_groups (SAMR_R_ENUM_DOM_GROUPS *r_u, uint32 next_idx, uint32 num_sam_entries)
BOOL samr_io_r_enum_dom_groups (const char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth)
void init_samr_q_enum_dom_aliases (SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol, uint32 start_idx, uint32 size)
BOOL samr_io_q_enum_dom_aliases (const char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth)
void init_samr_r_enum_dom_aliases (SAMR_R_ENUM_DOM_ALIASES *r_u, uint32 next_idx, uint32 num_sam_entries)
BOOL samr_io_r_enum_dom_aliases (const char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth)
void init_samr_alias_info1 (ALIAS_INFO1 *al1, char *acct_name, uint32 num_member, char *acct_desc)
BOOL samr_io_alias_info1 (const char *desc, ALIAS_INFO1 *al1, prs_struct *ps, int depth)
void init_samr_alias_info3 (ALIAS_INFO3 *al3, const char *acct_desc)
BOOL samr_io_alias_info3 (const char *desc, ALIAS_INFO3 *al3, prs_struct *ps, int depth)
BOOL samr_io_alias_info2 (const char *desc, ALIAS_INFO2 *al2, prs_struct *ps, int depth)
BOOL samr_alias_info_ctr (const char *desc, prs_struct *ps, int depth, ALIAS_INFO_CTR *ctr)
void init_samr_q_query_aliasinfo (SAMR_Q_QUERY_ALIASINFO *q_e, POLICY_HND *pol, uint32 switch_level)
BOOL samr_io_q_query_aliasinfo (const char *desc, SAMR_Q_QUERY_ALIASINFO *in, prs_struct *ps, int depth)
void init_samr_r_query_aliasinfo (SAMR_R_QUERY_ALIASINFO *out, ALIAS_INFO_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_aliasinfo (const char *desc, SAMR_R_QUERY_ALIASINFO *out, prs_struct *ps, int depth)
void init_samr_q_set_aliasinfo (SAMR_Q_SET_ALIASINFO *q_u, POLICY_HND *hnd, ALIAS_INFO_CTR *ctr)
BOOL samr_io_q_set_aliasinfo (const char *desc, SAMR_Q_SET_ALIASINFO *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_set_aliasinfo (const char *desc, SAMR_R_SET_ALIASINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_query_useraliases (SAMR_Q_QUERY_USERALIASES *q_u, POLICY_HND *hnd, uint32 num_sids, uint32 *ptr_sid, DOM_SID2 *sid)
BOOL samr_io_q_query_useraliases (const char *desc, SAMR_Q_QUERY_USERALIASES *q_u, prs_struct *ps, int depth)
void init_samr_r_query_useraliases (SAMR_R_QUERY_USERALIASES *r_u, uint32 num_rids, uint32 *rid, NTSTATUS status)
BOOL samr_io_rids (const char *desc, uint32 *num_rids, uint32 **rid, prs_struct *ps, int depth)
BOOL samr_io_r_query_useraliases (const char *desc, SAMR_R_QUERY_USERALIASES *r_u, prs_struct *ps, int depth)
void init_samr_q_open_alias (SAMR_Q_OPEN_ALIAS *q_u, POLICY_HND *pol, uint32 access_mask, uint32 rid)
BOOL samr_io_q_open_alias (const char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_open_alias (const char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth)
void init_samr_q_lookup_rids (TALLOC_CTX *ctx, SAMR_Q_LOOKUP_RIDS *q_u, POLICY_HND *pol, uint32 flags, uint32 num_rids, uint32 *rid)
BOOL samr_io_q_lookup_rids (const char *desc, SAMR_Q_LOOKUP_RIDS *q_u, prs_struct *ps, int depth)
void init_samr_r_lookup_rids (SAMR_R_LOOKUP_RIDS *r_u, uint32 num_names, UNIHDR *hdr_name, UNISTR2 *uni_name, uint32 *type)
BOOL samr_io_r_lookup_rids (const char *desc, SAMR_R_LOOKUP_RIDS *r_u, prs_struct *ps, int depth)
void init_samr_q_delete_alias (SAMR_Q_DELETE_DOM_ALIAS *q_u, POLICY_HND *hnd)
BOOL samr_io_q_delete_alias (const char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_delete_alias (const char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth)
void init_samr_q_create_dom_alias (SAMR_Q_CREATE_DOM_ALIAS *q_u, POLICY_HND *hnd, const char *acct_desc)
BOOL samr_io_q_create_dom_alias (const char *desc, SAMR_Q_CREATE_DOM_ALIAS *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_create_dom_alias (const char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_struct *ps, int depth)
void init_samr_q_add_aliasmem (SAMR_Q_ADD_ALIASMEM *q_u, POLICY_HND *hnd, DOM_SID *sid)
BOOL samr_io_q_add_aliasmem (const char *desc, SAMR_Q_ADD_ALIASMEM *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_add_aliasmem (const char *desc, SAMR_R_ADD_ALIASMEM *r_u, prs_struct *ps, int depth)
void init_samr_q_del_aliasmem (SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd, DOM_SID *sid)
BOOL samr_io_q_del_aliasmem (const char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_del_aliasmem (const char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth)
void init_samr_q_delete_dom_alias (SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd)
BOOL samr_io_q_delete_dom_alias (const char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth)
void init_samr_r_delete_dom_alias (SAMR_R_DELETE_DOM_ALIAS *r_u, NTSTATUS status)
BOOL samr_io_r_delete_dom_alias (const char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth)
void init_samr_q_query_aliasmem (SAMR_Q_QUERY_ALIASMEM *q_c, POLICY_HND *hnd)
BOOL samr_io_q_query_aliasmem (const char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth)
void init_samr_r_query_aliasmem (SAMR_R_QUERY_ALIASMEM *r_u, uint32 num_sids, DOM_SID2 *sid, NTSTATUS status)
BOOL samr_io_r_query_aliasmem (const char *desc, SAMR_R_QUERY_ALIASMEM *r_u, prs_struct *ps, int depth)
NTSTATUS init_samr_q_lookup_names (TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES *q_u, POLICY_HND *pol, uint32 flags, uint32 num_names, const char **name)
BOOL samr_io_q_lookup_names (const char *desc, SAMR_Q_LOOKUP_NAMES *q_u, prs_struct *ps, int depth)
NTSTATUS init_samr_r_lookup_names (TALLOC_CTX *ctx, SAMR_R_LOOKUP_NAMES *r_u, uint32 num_rids, uint32 *rid, enum lsa_SidType *type, NTSTATUS status)
BOOL samr_io_r_lookup_names (const char *desc, SAMR_R_LOOKUP_NAMES *r_u, prs_struct *ps, int depth)
void init_samr_q_delete_dom_user (SAMR_Q_DELETE_DOM_USER *q_c, POLICY_HND *hnd)
BOOL samr_io_q_delete_dom_user (const char *desc, SAMR_Q_DELETE_DOM_USER *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_delete_dom_user (const char *desc, SAMR_R_DELETE_DOM_USER *r_u, prs_struct *ps, int depth)
void init_samr_q_open_user (SAMR_Q_OPEN_USER *q_u, POLICY_HND *pol, uint32 access_mask, uint32 rid)
BOOL samr_io_q_open_user (const char *desc, SAMR_Q_OPEN_USER *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_open_user (const char *desc, SAMR_R_OPEN_USER *r_u, prs_struct *ps, int depth)
void init_samr_q_create_user (SAMR_Q_CREATE_USER *q_u, POLICY_HND *pol, const char *name, uint32 acb_info, uint32 acct_flags)
BOOL samr_io_q_create_user (const char *desc, SAMR_Q_CREATE_USER *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_create_user (const char *desc, SAMR_R_CREATE_USER *r_u, prs_struct *ps, int depth)
void init_samr_q_query_userinfo (SAMR_Q_QUERY_USERINFO *q_u, const POLICY_HND *hnd, uint16 switch_value)
BOOL samr_io_q_query_userinfo (const char *desc, SAMR_Q_QUERY_USERINFO *q_u, prs_struct *ps, int depth)
static BOOL sam_io_logon_hrs (const char *desc, LOGON_HRS *hrs, prs_struct *ps, int depth)
void init_sam_user_info18 (SAM_USER_INFO_18 *usr, const uint8 lm_pwd[16], const uint8 nt_pwd[16])
static BOOL sam_io_user_info18 (const char *desc, SAM_USER_INFO_18 *u, prs_struct *ps, int depth)
void init_sam_user_info7 (SAM_USER_INFO_7 *usr, const char *name)
static BOOL sam_io_user_info7 (const char *desc, SAM_USER_INFO_7 *usr, prs_struct *ps, int depth)
void init_sam_user_info9 (SAM_USER_INFO_9 *usr, uint32 rid_group)
static BOOL sam_io_user_info9 (const char *desc, SAM_USER_INFO_9 *usr, prs_struct *ps, int depth)
void init_sam_user_info16 (SAM_USER_INFO_16 *usr, uint32 acb_info)
static BOOL sam_io_user_info16 (const char *desc, SAM_USER_INFO_16 *usr, prs_struct *ps, int depth)
void init_sam_user_info17 (SAM_USER_INFO_17 *usr, NTTIME *expiry, char *mach_acct, uint32 rid_user, uint32 rid_group, uint16 acct_ctrl)
static BOOL sam_io_user_info17 (const char *desc, SAM_USER_INFO_17 *usr, prs_struct *ps, int depth)
void init_sam_user_info24 (SAM_USER_INFO_24 *usr, char newpass[516], uint8 pw_len)
static BOOL sam_io_user_info24 (const char *desc, SAM_USER_INFO_24 *usr, prs_struct *ps, int depth)
static BOOL sam_io_user_info26 (const char *desc, SAM_USER_INFO_26 *usr, prs_struct *ps, int depth)
void init_sam_user_info23W (SAM_USER_INFO_23 *usr, NTTIME *logon_time, NTTIME *logoff_time, NTTIME *kickoff_time, NTTIME *pass_last_set_time, NTTIME *pass_can_change_time, NTTIME *pass_must_change_time, UNISTR2 *user_name, UNISTR2 *full_name, UNISTR2 *home_dir, UNISTR2 *dir_drive, UNISTR2 *log_scr, UNISTR2 *prof_path, UNISTR2 *desc, UNISTR2 *wkstas, UNISTR2 *unk_str, UNISTR2 *mung_dial, uint32 user_rid, uint32 group_rid, uint32 acb_info, uint32 fields_present, uint16 logon_divs, LOGON_HRS *hrs, uint16 bad_password_count, uint16 logon_count, char newpass[516])
void init_sam_user_info23A (SAM_USER_INFO_23 *usr, NTTIME *logon_time, NTTIME *logoff_time, NTTIME *kickoff_time, NTTIME *pass_last_set_time, NTTIME *pass_can_change_time, NTTIME *pass_must_change_time, char *user_name, char *full_name, char *home_dir, char *dir_drive, char *log_scr, char *prof_path, const char *desc, char *wkstas, char *unk_str, char *mung_dial, uint32 user_rid, uint32 group_rid, uint32 acb_info, uint32 fields_present, uint16 logon_divs, LOGON_HRS *hrs, uint16 bad_password_count, uint16 logon_count, char newpass[516])
void init_sam_user_info25P (SAM_USER_INFO_25 *usr, uint32 fields_present, uint32 acb_info, char newpass[532])
static BOOL sam_io_user_info23 (const char *desc, SAM_USER_INFO_23 *usr, prs_struct *ps, int depth)
static BOOL sam_io_user_info25 (const char *desc, SAM_USER_INFO_25 *usr, prs_struct *ps, int depth)
void init_sam_user_info21W (SAM_USER_INFO_21 *usr, NTTIME *logon_time, NTTIME *logoff_time, NTTIME *kickoff_time, NTTIME *pass_last_set_time, NTTIME *pass_can_change_time, NTTIME *pass_must_change_time, UNISTR2 *user_name, UNISTR2 *full_name, UNISTR2 *home_dir, UNISTR2 *dir_drive, UNISTR2 *log_scr, UNISTR2 *prof_path, UNISTR2 *desc, UNISTR2 *wkstas, UNISTR2 *unk_str, UNISTR2 *mung_dial, uchar lm_pwd[16], uchar nt_pwd[16], uint32 user_rid, uint32 group_rid, uint32 acb_info, uint32 fields_present, uint16 logon_divs, LOGON_HRS *hrs, uint16 bad_password_count, uint16 logon_count)
NTSTATUS init_sam_user_info21A (SAM_USER_INFO_21 *usr, struct samu *pw, DOM_SID *domain_sid)
static BOOL sam_io_user_info21 (const char *desc, SAM_USER_INFO_21 *usr, prs_struct *ps, int depth)
void init_sam_user_info20A (SAM_USER_INFO_20 *usr, struct samu *pw)
static BOOL sam_io_user_info20 (const char *desc, SAM_USER_INFO_20 *usr, prs_struct *ps, int depth)
NTSTATUS make_samr_userinfo_ctr_usr21 (TALLOC_CTX *ctx, SAM_USERINFO_CTR *ctr, uint16 switch_value, SAM_USER_INFO_21 *usr)
static void init_samr_userinfo_ctr (SAM_USERINFO_CTR *ctr, DATA_BLOB *sess_key, uint16 switch_value, void *info)
static BOOL samr_io_userinfo_ctr (const char *desc, SAM_USERINFO_CTR **ppctr, prs_struct *ps, int depth)
void init_samr_r_query_userinfo (SAMR_R_QUERY_USERINFO *r_u, SAM_USERINFO_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_userinfo (const char *desc, SAMR_R_QUERY_USERINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_set_userinfo (SAMR_Q_SET_USERINFO *q_u, const POLICY_HND *hnd, DATA_BLOB *sess_key, uint16 switch_value, void *info)
BOOL samr_io_q_set_userinfo (const char *desc, SAMR_Q_SET_USERINFO *q_u, prs_struct *ps, int depth)
void init_samr_r_set_userinfo (SAMR_R_SET_USERINFO *r_u, NTSTATUS status)
BOOL samr_io_r_set_userinfo (const char *desc, SAMR_R_SET_USERINFO *r_u, prs_struct *ps, int depth)
void init_samr_q_set_userinfo2 (SAMR_Q_SET_USERINFO2 *q_u, const POLICY_HND *hnd, DATA_BLOB *sess_key, uint16 switch_value, SAM_USERINFO_CTR *ctr)
BOOL samr_io_q_set_userinfo2 (const char *desc, SAMR_Q_SET_USERINFO2 *q_u, prs_struct *ps, int depth)
void init_samr_r_set_userinfo2 (SAMR_R_SET_USERINFO2 *r_u, NTSTATUS status)
BOOL samr_io_r_set_userinfo2 (const char *desc, SAMR_R_SET_USERINFO2 *r_u, prs_struct *ps, int depth)
void init_samr_q_connect (SAMR_Q_CONNECT *q_u, char *srv_name, uint32 access_mask)
BOOL samr_io_q_connect (const char *desc, SAMR_Q_CONNECT *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_connect (const char *desc, SAMR_R_CONNECT *r_u, prs_struct *ps, int depth)
void init_samr_q_connect4 (SAMR_Q_CONNECT4 *q_u, char *srv_name, uint32 access_mask)
BOOL samr_io_q_connect4 (const char *desc, SAMR_Q_CONNECT4 *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_connect4 (const char *desc, SAMR_R_CONNECT4 *r_u, prs_struct *ps, int depth)
void init_samr_q_connect5 (SAMR_Q_CONNECT5 *q_u, char *srv_name, uint32 access_mask)
void init_samr_r_connect5 (SAMR_R_CONNECT5 *r_u, POLICY_HND *pol, NTSTATUS status)
BOOL samr_io_q_connect5 (const char *desc, SAMR_Q_CONNECT5 *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_connect5 (const char *desc, SAMR_R_CONNECT5 *r_u, prs_struct *ps, int depth)
void init_samr_q_connect_anon (SAMR_Q_CONNECT_ANON *q_u)
BOOL samr_io_q_connect_anon (const char *desc, SAMR_Q_CONNECT_ANON *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_connect_anon (const char *desc, SAMR_R_CONNECT_ANON *r_u, prs_struct *ps, int depth)
void init_samr_q_get_dom_pwinfo (SAMR_Q_GET_DOM_PWINFO *q_u, char *srv_name)
BOOL samr_io_q_get_dom_pwinfo (const char *desc, SAMR_Q_GET_DOM_PWINFO *q_u, prs_struct *ps, int depth)
BOOL samr_io_r_get_dom_pwinfo (const char *desc, SAMR_R_GET_DOM_PWINFO *r_u, prs_struct *ps, int depth)
void init_enc_passwd (SAMR_ENC_PASSWD *pwd, const char pass[512])
BOOL samr_io_enc_passwd (const char *desc, SAMR_ENC_PASSWD *pwd, prs_struct *ps, int depth)
void init_enc_hash (SAMR_ENC_HASH *hsh, const uchar hash[16])
BOOL samr_io_enc_hash (const char *desc, SAMR_ENC_HASH *hsh, prs_struct *ps, int depth)
void init_samr_q_chgpasswd_user (SAMR_Q_CHGPASSWD_USER *q_u, const char *dest_host, const char *user_name, const uchar nt_newpass[516], const uchar nt_oldhash[16], const uchar lm_newpass[516], const uchar lm_oldhash[16])
BOOL samr_io_q_chgpasswd_user (const char *desc, SAMR_Q_CHGPASSWD_USER *q_u, prs_struct *ps, int depth)
void init_samr_r_chgpasswd_user (SAMR_R_CHGPASSWD_USER *r_u, NTSTATUS status)
BOOL samr_io_r_chgpasswd_user (const char *desc, SAMR_R_CHGPASSWD_USER *r_u, prs_struct *ps, int depth)
void init_samr_q_chgpasswd_user3 (SAMR_Q_CHGPASSWD_USER3 *q_u, const char *dest_host, const char *user_name, const uchar nt_newpass[516], const uchar nt_oldhash[16], const uchar lm_newpass[516], const uchar lm_oldhash[16])
BOOL samr_io_q_chgpasswd_user3 (const char *desc, SAMR_Q_CHGPASSWD_USER3 *q_u, prs_struct *ps, int depth)
void init_samr_r_chgpasswd_user3 (SAMR_R_CHGPASSWD_USER3 *r_u, NTSTATUS status, SAMR_CHANGE_REJECT *reject, SAM_UNK_INFO_1 *info)
BOOL samr_io_change_reject (const char *desc, SAMR_CHANGE_REJECT *reject, prs_struct *ps, int depth)
BOOL samr_io_r_chgpasswd_user3 (const char *desc, SAMR_R_CHGPASSWD_USER3 *r_u, prs_struct *ps, int depth)
void init_samr_q_query_domain_info2 (SAMR_Q_QUERY_DOMAIN_INFO2 *q_u, POLICY_HND *domain_pol, uint16 switch_value)
BOOL samr_io_q_query_domain_info2 (const char *desc, SAMR_Q_QUERY_DOMAIN_INFO2 *q_u, prs_struct *ps, int depth)
void init_samr_r_query_domain_info2 (SAMR_R_QUERY_DOMAIN_INFO2 *r_u, uint16 switch_value, SAM_UNK_CTR *ctr, NTSTATUS status)
BOOL samr_io_r_query_domain_info2 (const char *desc, SAMR_R_QUERY_DOMAIN_INFO2 *r_u, prs_struct *ps, int depth)
void init_samr_q_set_domain_info (SAMR_Q_SET_DOMAIN_INFO *q_u, POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr)
BOOL samr_io_q_set_domain_info (const char *desc, SAMR_Q_SET_DOMAIN_INFO *q_u, prs_struct *ps, int depth)
void init_samr_r_set_domain_info (SAMR_R_SET_DOMAIN_INFO *r_u, NTSTATUS status)
BOOL samr_io_r_set_domain_info (const char *desc, SAMR_R_SET_DOMAIN_INFO *r_u, prs_struct *ps, int depth)


関数

void init_samr_q_close_hnd ( SAMR_Q_CLOSE_HND q_c,
POLICY_HND hnd 
)

parse_samr.c36 行で定義されています。

参照先 q_samr_close_hnd_info::pol.

参照元 rpccli_samr_close().

00037 {
00038         DEBUG(5, ("init_samr_q_close_hnd\n"));
00039         
00040         q_c->pol = *hnd;
00041 }

BOOL samr_io_q_close_hnd ( const char *  desc,
SAMR_Q_CLOSE_HND q_u,
prs_struct ps,
int  depth 
)

parse_samr.c47 行で定義されています。

参照先 q_samr_close_hnd_info::polprs_debug()smb_io_pol_hnd().

参照元 api_samr_close_hnd()rpccli_samr_close().

00049 {
00050         if (q_u == NULL)
00051                 return False;
00052 
00053         prs_debug(ps, depth, desc, "samr_io_q_close_hnd");
00054         depth++;
00055 
00056         if(!prs_align(ps))
00057                 return False;
00058 
00059         return smb_io_pol_hnd("pol", &q_u->pol, ps, depth);
00060 }

BOOL samr_io_r_close_hnd ( const char *  desc,
SAMR_R_CLOSE_HND r_u,
prs_struct ps,
int  depth 
)

parse_samr.c66 行で定義されています。

参照先 r_samr_close_hnd_info::polprs_debug()smb_io_pol_hnd()r_samr_close_hnd_info::status.

参照元 api_samr_close_hnd()rpccli_samr_close().

00068 {
00069         if (r_u == NULL)
00070                 return False;
00071 
00072         prs_debug(ps, depth, desc, "samr_io_r_close_hnd");
00073         depth++;
00074 
00075         if(!prs_align(ps))
00076                 return False;
00077 
00078         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
00079                 return False;
00080 
00081         if(!prs_ntstatus("status", ps, depth, &r_u->status))
00082                 return False;
00083 
00084         return True;
00085 }

void init_samr_q_lookup_domain ( SAMR_Q_LOOKUP_DOMAIN q_u,
POLICY_HND pol,
char *  dom_name 
)

parse_samr.c91 行で定義されています。

参照先 q_samr_lookup_domain_info::connect_polq_samr_lookup_domain_info::hdr_domaininit_uni_hdr()init_unistr2()polq_samr_lookup_domain_info::uni_domainUNI_FLAGS_NONE.

参照元 rpccli_samr_lookup_domain().

00093 {
00094         DEBUG(5, ("init_samr_q_lookup_domain\n"));
00095 
00096         q_u->connect_pol = *pol;
00097 
00098         init_unistr2(&q_u->uni_domain, dom_name, UNI_FLAGS_NONE);
00099         init_uni_hdr(&q_u->hdr_domain, &q_u->uni_domain);
00100 }

BOOL samr_io_q_lookup_domain ( const char *  desc,
SAMR_Q_LOOKUP_DOMAIN q_u,
prs_struct ps,
int  depth 
)

parse_samr.c105 行で定義されています。

参照先 UNIHDR::bufferq_samr_lookup_domain_info::connect_polq_samr_lookup_domain_info::hdr_domainprs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()q_samr_lookup_domain_info::uni_domain.

参照元 api_samr_lookup_domain()rpccli_samr_lookup_domain().

00107 {
00108         if (q_u == NULL)
00109                 return False;
00110 
00111         prs_debug(ps, depth, desc, "samr_io_q_lookup_domain");
00112         depth++;
00113 
00114         if(!prs_align(ps))
00115                 return False;
00116 
00117         if(!smb_io_pol_hnd("connect_pol", &q_u->connect_pol, ps, depth))
00118                 return False;
00119 
00120         if(!smb_io_unihdr("hdr_domain", &q_u->hdr_domain, ps, depth))
00121                 return False;
00122 
00123         if(!smb_io_unistr2("uni_domain", &q_u->uni_domain, q_u->hdr_domain.buffer, ps, depth))
00124                 return False;
00125 
00126         return True;
00127 }

void init_samr_r_lookup_domain ( SAMR_R_LOOKUP_DOMAIN r_u,
DOM_SID dom_sid,
NTSTATUS  status 
)

parse_samr.c133 行で定義されています。

参照先 r_samr_lookup_domain_info::dom_sidinit_dom_sid2()r_samr_lookup_domain_info::ptr_sidstatusr_samr_lookup_domain_info::status.

参照元 _samr_lookup_domain().

00135 {
00136         DEBUG(5, ("init_samr_r_lookup_domain\n"));
00137 
00138         r_u->status = status;
00139         r_u->ptr_sid = 0;
00140         if (NT_STATUS_IS_OK(status)) {
00141                 r_u->ptr_sid = 1;
00142                 init_dom_sid2(&r_u->dom_sid, dom_sid);
00143         }
00144 }

BOOL samr_io_r_lookup_domain ( const char *  desc,
SAMR_R_LOOKUP_DOMAIN r_u,
prs_struct ps,
int  depth 
)

parse_samr.c150 行で定義されています。

参照先 r_samr_lookup_domain_info::dom_sidprs_debug()r_samr_lookup_domain_info::ptr_sidsmb_io_dom_sid2()r_samr_lookup_domain_info::status.

参照元 api_samr_lookup_domain()rpccli_samr_lookup_domain().

00152 {
00153         if (r_u == NULL)
00154                 return False;
00155 
00156         prs_debug(ps, depth, desc, "samr_io_r_lookup_domain");
00157         depth++;
00158 
00159         if(!prs_align(ps))
00160                 return False;
00161 
00162         if(!prs_uint32("ptr", ps, depth, &r_u->ptr_sid))
00163                 return False;
00164 
00165         if (r_u->ptr_sid != 0) {
00166                 if(!smb_io_dom_sid2("sid", &r_u->dom_sid, ps, depth))
00167                         return False;
00168                 if(!prs_align(ps))
00169                         return False;
00170         }
00171 
00172         if(!prs_ntstatus("status", ps, depth, &r_u->status))
00173                 return False;
00174 
00175         return True;
00176 }

void init_samr_q_remove_sid_foreign_domain ( SAMR_Q_REMOVE_SID_FOREIGN_DOMAIN q_u,
POLICY_HND dom_pol,
DOM_SID sid 
)

parse_samr.c182 行で定義されています。

参照先 q_samr_remove_sid_foreign_domain_info::dom_polinit_dom_sid2()q_samr_remove_sid_foreign_domain_info::sid.

参照元 rpccli_samr_remove_sid_foreign_domain().

00183 {
00184         DEBUG(5, ("samr_init_samr_q_remove_sid_foreign_domain\n"));
00185 
00186         q_u->dom_pol = *dom_pol;
00187         init_dom_sid2(&q_u->sid, sid);
00188 }

BOOL samr_io_q_remove_sid_foreign_domain ( const char *  desc,
SAMR_Q_REMOVE_SID_FOREIGN_DOMAIN q_u,
prs_struct ps,
int  depth 
)

parse_samr.c194 行で定義されています。

参照先 q_samr_remove_sid_foreign_domain_info::dom_polprs_debug()q_samr_remove_sid_foreign_domain_info::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_samr_remove_sid_foreign_domain()rpccli_samr_remove_sid_foreign_domain().

00196 {
00197         if (q_u == NULL)
00198                 return False;
00199 
00200         prs_debug(ps, depth, desc, "samr_io_q_remove_sid_foreign_domain");
00201         depth++;
00202 
00203         if(!prs_align(ps))
00204                 return False;
00205 
00206         if(!smb_io_pol_hnd("domain_pol", &q_u->dom_pol, ps, depth))
00207                 return False;
00208 
00209         if(!smb_io_dom_sid2("sid", &q_u->sid, ps, depth))
00210                 return False;
00211 
00212         if(!prs_align(ps))
00213                 return False;
00214 
00215         return True;
00216 }

BOOL samr_io_r_remove_sid_foreign_domain ( const char *  desc,
SAMR_R_REMOVE_SID_FOREIGN_DOMAIN r_u,
prs_struct ps,
int  depth 
)

parse_samr.c222 行で定義されています。

参照先 prs_debug()r_samr_remove_sid_foreign_domain_info::status.

参照元 api_samr_remove_sid_foreign_domain()rpccli_samr_remove_sid_foreign_domain().

00224 {
00225         if (r_u == NULL)
00226                 return False;
00227 
00228         prs_debug(ps, depth, desc, "samr_io_r_remove_sid_foreign_domain");
00229         depth++;
00230 
00231         if(!prs_align(ps))
00232                 return False;
00233 
00234         if(!prs_ntstatus("status", ps, depth, &r_u->status))
00235                 return False;
00236 
00237         return True;
00238 }

void init_samr_q_open_domain ( SAMR_Q_OPEN_DOMAIN q_u,
POLICY_HND pol,
uint32  flags,
const DOM_SID sid 
)

parse_samr.c244 行で定義されています。

参照先 q_samr_open_domain_info::dom_sidq_samr_open_domain_info::flagsinit_dom_sid2()polq_samr_open_domain_info::pol.

参照元 rpccli_samr_open_domain().

00247 {
00248         DEBUG(5, ("samr_init_samr_q_open_domain\n"));
00249 
00250         q_u->pol = *pol;
00251         q_u->flags = flags;
00252         init_dom_sid2(&q_u->dom_sid, sid);
00253 }

BOOL samr_io_q_open_domain ( const char *  desc,
SAMR_Q_OPEN_DOMAIN q_u,
prs_struct ps,
int  depth 
)

parse_samr.c259 行で定義されています。

参照先 q_samr_open_domain_info::dom_sidq_samr_open_domain_info::flagsq_samr_open_domain_info::polprs_debug()smb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_samr_open_domain()rpccli_samr_open_domain().

00261 {
00262         if (q_u == NULL)
00263                 return False;
00264 
00265         prs_debug(ps, depth, desc, "samr_io_q_open_domain");
00266         depth++;
00267 
00268         if(!prs_align(ps))
00269                 return False;
00270 
00271         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
00272                 return False;
00273 
00274         if(!prs_uint32("flags", ps, depth, &q_u->flags))
00275                 return False;
00276 
00277         if(!smb_io_dom_sid2("sid", &q_u->dom_sid, ps, depth))
00278                 return False;
00279 
00280         return True;
00281 }

BOOL samr_io_r_open_domain ( const char *  desc,
SAMR_R_OPEN_DOMAIN r_u,
prs_struct ps,
int  depth 
)

parse_samr.c287 行で定義されています。

参照先 r_samr_open_domain_info::domain_polprs_debug()smb_io_pol_hnd()r_samr_open_domain_info::status.

参照元 api_samr_open_domain()rpccli_samr_open_domain().

00289 {
00290         if (r_u == NULL)
00291                 return False;
00292 
00293         prs_debug(ps, depth, desc, "samr_io_r_open_domain");
00294         depth++;
00295 
00296         if(!prs_align(ps))
00297                 return False;
00298 
00299         if(!smb_io_pol_hnd("domain_pol", &r_u->domain_pol, ps, depth))
00300                 return False;
00301 
00302         if(!prs_ntstatus("status", ps, depth, &r_u->status))
00303                 return False;
00304 
00305         return True;
00306 }

void init_samr_q_get_usrdom_pwinfo ( SAMR_Q_GET_USRDOM_PWINFO q_u,
POLICY_HND user_pol 
)

parse_samr.c312 行で定義されています。

参照先 q_samr_usrdom_pwinfo_info::user_pol.

参照元 rpccli_samr_get_usrdom_pwinfo().

00314 {
00315         DEBUG(5, ("samr_init_samr_q_get_usrdom_pwinfo\n"));
00316 
00317         q_u->user_pol = *user_pol;
00318 }

BOOL samr_io_q_get_usrdom_pwinfo ( const char *  desc,
SAMR_Q_GET_USRDOM_PWINFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c324 行で定義されています。

参照先 prs_debug()smb_io_pol_hnd()q_samr_usrdom_pwinfo_info::user_pol.

参照元 api_samr_get_usrdom_pwinfo()rpccli_samr_get_usrdom_pwinfo().

00326 {
00327         if (q_u == NULL)
00328                 return False;
00329 
00330         prs_debug(ps, depth, desc, "samr_io_q_get_usrdom_pwinfo");
00331         depth++;
00332 
00333         if(!prs_align(ps))
00334                 return False;
00335 
00336         return smb_io_pol_hnd("user_pol", &q_u->user_pol, ps, depth);
00337 }

void init_samr_r_get_usrdom_pwinfo ( SAMR_R_GET_USRDOM_PWINFO r_u,
NTSTATUS  status 
)

parse_samr.c343 行で定義されています。

参照先 r_samr_usrdom_pwinfo_info::min_pwd_lengthr_samr_usrdom_pwinfo_info::password_propertiesstatusr_samr_usrdom_pwinfo_info::statusr_samr_usrdom_pwinfo_info::unknown_1.

参照元 _samr_get_usrdom_pwinfo().

00344 {
00345         DEBUG(5, ("init_samr_r_get_usrdom_pwinfo\n"));
00346         
00347         r_u->min_pwd_length = 0x0000;
00348 
00349         /*
00350          * used to be   
00351          * r_u->unknown_1 = 0x0015;
00352          * but for trusts.
00353          */
00354         r_u->unknown_1 = 0x01D1;
00355         r_u->unknown_1 = 0x0015;
00356 
00357         r_u->password_properties = 0x00000000;
00358 
00359         r_u->status = status;
00360 }

BOOL samr_io_r_get_usrdom_pwinfo ( const char *  desc,
SAMR_R_GET_USRDOM_PWINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c366 行で定義されています。

参照先 r_samr_usrdom_pwinfo_info::min_pwd_lengthr_samr_usrdom_pwinfo_info::password_propertiesprs_debug()r_samr_usrdom_pwinfo_info::statusr_samr_usrdom_pwinfo_info::unknown_1.

参照元 api_samr_get_usrdom_pwinfo()rpccli_samr_get_usrdom_pwinfo().

00368 {
00369         if (r_u == NULL)
00370                 return False;
00371 
00372         prs_debug(ps, depth, desc, "samr_io_r_get_usrdom_pwinfo");
00373         depth++;
00374 
00375         if(!prs_align(ps))
00376                 return False;
00377 
00378         if(!prs_uint16("min_pwd_length", ps, depth, &r_u->min_pwd_length))
00379                 return False;
00380         if(!prs_uint16("unknown_1", ps, depth, &r_u->unknown_1))
00381                 return False;
00382         if(!prs_uint32("password_properties", ps, depth, &r_u->password_properties))
00383                 return False;
00384 
00385         if(!prs_ntstatus("status   ", ps, depth, &r_u->status))
00386                 return False;
00387 
00388         return True;
00389 }

BOOL samr_io_q_set_sec_obj ( const char *  desc,
SAMR_Q_SET_SEC_OBJ q_u,
prs_struct ps,
int  depth 
)

parse_samr.c396 行で定義されています。

参照先 q_samr_set_sec_obj_info::bufq_samr_set_sec_obj_info::polprs_debug()q_samr_set_sec_obj_info::sec_infosec_io_desc_buf()smb_io_pol_hnd().

参照元 api_samr_set_sec_obj()rpccli_samr_set_sec_obj().

00398 {
00399         if (q_u == NULL)
00400                 return False;
00401 
00402         prs_debug(ps, depth, desc, "samr_io_q_set_sec_obj");
00403         depth++;
00404 
00405         if(!prs_align(ps))
00406                 return False;
00407 
00408         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
00409                 return False;
00410 
00411         if(!prs_uint32("sec_info", ps, depth, &q_u->sec_info))
00412                 return False;
00413                 
00414         if(!sec_io_desc_buf("sec_desc", &q_u->buf, ps, depth))
00415                 return False;
00416         
00417         return True;
00418 }

void init_samr_q_query_sec_obj ( SAMR_Q_QUERY_SEC_OBJ q_u,
POLICY_HND user_pol,
uint32  sec_info 
)

parse_samr.c425 行で定義されています。

参照先 q_samr_query_sec_obj_info::sec_infoq_samr_query_sec_obj_info::user_pol.

参照元 rpccli_samr_query_sec_obj().

00427 {
00428         DEBUG(5, ("samr_init_samr_q_query_sec_obj\n"));
00429 
00430         q_u->user_pol = *user_pol;
00431         q_u->sec_info = sec_info;
00432 }

BOOL samr_io_q_query_sec_obj ( const char *  desc,
SAMR_Q_QUERY_SEC_OBJ q_u,
prs_struct ps,
int  depth 
)

parse_samr.c439 行で定義されています。

参照先 prs_debug()q_samr_query_sec_obj_info::sec_infosmb_io_pol_hnd()q_samr_query_sec_obj_info::user_pol.

参照元 api_samr_query_sec_obj()rpccli_samr_query_sec_obj().

00441 {
00442         if (q_u == NULL)
00443                 return False;
00444 
00445         prs_debug(ps, depth, desc, "samr_io_q_query_sec_obj");
00446         depth++;
00447 
00448         if(!prs_align(ps))
00449                 return False;
00450 
00451         if(!smb_io_pol_hnd("user_pol", &q_u->user_pol, ps, depth))
00452                 return False;
00453 
00454         if(!prs_uint32("sec_info", ps, depth, &q_u->sec_info))
00455                 return False;
00456 
00457         return True;
00458 }

void init_samr_q_query_domain_info ( SAMR_Q_QUERY_DOMAIN_INFO q_u,
POLICY_HND domain_pol,
uint16  switch_value 
)

parse_samr.c464 行で定義されています。

参照先 q_samr_query_domain_info::domain_polq_samr_query_domain_info::switch_value.

参照元 rpccli_samr_query_dom_info().

00466 {
00467         DEBUG(5, ("samr_init_samr_q_query_domain_info\n"));
00468 
00469         q_u->domain_pol = *domain_pol;
00470         q_u->switch_value = switch_value;
00471 }

BOOL samr_io_q_query_domain_info ( const char *  desc,
SAMR_Q_QUERY_DOMAIN_INFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c477 行で定義されています。

参照先 q_samr_query_domain_info::domain_polprs_debug()smb_io_pol_hnd()q_samr_query_domain_info::switch_value.

参照元 api_samr_query_domain_info()rpccli_samr_query_dom_info().

00479 {
00480         if (q_u == NULL)
00481                 return False;
00482 
00483         prs_debug(ps, depth, desc, "samr_io_q_query_domain_info");
00484         depth++;
00485 
00486         if(!prs_align(ps))
00487                 return False;
00488 
00489         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
00490                 return False;
00491 
00492         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value))
00493                 return False;
00494 
00495         return True;
00496 }

void init_unk_info1 ( SAM_UNK_INFO_1 u_1,
uint16  min_pass_len,
uint16  pass_hist,
uint32  password_properties,
NTTIME  nt_expire,
NTTIME  nt_min_age 
)

parse_samr.c502 行で定義されています。

参照先 sam_unknown_info_1_inf::expiresam_unknown_info_1_inf::min_length_passwordsam_unknown_info_1_inf::min_passwordagesam_unknown_info_1_inf::password_historysam_unknown_info_1_inf::password_properties.

参照元 _samr_chgpasswd_user3()_samr_query_domain_info()password_policy().

00504 {
00505         u_1->min_length_password = min_pass_len;
00506         u_1->password_history = pass_hist;
00507         
00508         if (lp_check_password_script() && *lp_check_password_script()) {
00509                 password_properties |= DOMAIN_PASSWORD_COMPLEX;
00510         }
00511         u_1->password_properties = password_properties;
00512 
00513         /* password never expire */
00514         u_1->expire = nt_expire;
00515 
00516         /* can change the password now */
00517         u_1->min_passwordage = nt_min_age;
00518         
00519 }

static BOOL sam_io_unk_info1 ( const char *  desc,
SAM_UNK_INFO_1 u_1,
prs_struct ps,
int  depth 
) [static]

parse_samr.c525 行で定義されています。

参照先 sam_unknown_info_1_inf::expiresam_unknown_info_1_inf::min_length_passwordsam_unknown_info_1_inf::min_passwordagesam_unknown_info_1_inf::password_historysam_unknown_info_1_inf::password_propertiesprs_debug()smb_io_time().

参照元 samr_io_q_set_domain_info()samr_io_r_chgpasswd_user3()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00527 {
00528         if (u_1 == NULL)
00529           return False;
00530 
00531         prs_debug(ps, depth, desc, "sam_io_unk_info1");
00532         depth++;
00533 
00534         if(!prs_uint16("min_length_password", ps, depth, &u_1->min_length_password))
00535                 return False;
00536         if(!prs_uint16("password_history", ps, depth, &u_1->password_history))
00537                 return False;
00538         if(!prs_uint32("password_properties", ps, depth, &u_1->password_properties))
00539                 return False;
00540         if(!smb_io_time("expire", &u_1->expire, ps, depth))
00541                 return False;
00542         if(!smb_io_time("min_passwordage", &u_1->min_passwordage, ps, depth))
00543                 return False;
00544 
00545         return True;
00546 }

void init_unk_info2 ( SAM_UNK_INFO_2 u_2,
const char *  comment,
const char *  domain,
const char *  server,
uint32  seq_num,
uint32  num_users,
uint32  num_groups,
uint32  num_alias,
NTTIME  nt_logout,
uint32  server_role 
)

parse_samr.c552 行で定義されています。

参照先 sam_unknown_info_2_inf::hdr_commentsam_unknown_info_2_inf::hdr_domainsam_unknown_info_2_inf::hdr_serverinit_uni_hdr()init_unistr2()sam_unknown_info_2_inf::logoutsam_unknown_info_2_inf::num_domain_grpssam_unknown_info_2_inf::num_domain_usrssam_unknown_info_2_inf::num_local_grpssam_unknown_info_2_inf::seq_numsam_unknown_info_2_inf::server_rolesam_unknown_info_2_inf::uni_commentsam_unknown_info_2_inf::uni_domainUNI_FLAGS_NONEsam_unknown_info_2_inf::uni_serversam_unknown_info_2_inf::unknown_4sam_unknown_info_2_inf::unknown_6.

参照元 _samr_query_domain_info().

00555 {
00556         u_2->logout = nt_logout;
00557 
00558         u_2->seq_num = seq_num;
00559 
00560         
00561         u_2->unknown_4 = 0x00000001;
00562         u_2->server_role = server_role;
00563         u_2->unknown_6 = 0x00000001;
00564         u_2->num_domain_usrs = num_users;
00565         u_2->num_domain_grps = num_groups;
00566         u_2->num_local_grps = num_alias;
00567 
00568         init_unistr2(&u_2->uni_comment, comment, UNI_FLAGS_NONE);
00569         init_uni_hdr(&u_2->hdr_comment, &u_2->uni_comment);
00570         init_unistr2(&u_2->uni_domain, domain, UNI_FLAGS_NONE);
00571         init_uni_hdr(&u_2->hdr_domain, &u_2->uni_domain);
00572         init_unistr2(&u_2->uni_server, server, UNI_FLAGS_NONE);
00573         init_uni_hdr(&u_2->hdr_server, &u_2->uni_server);
00574 }

static BOOL sam_io_unk_info2 ( const char *  desc,
SAM_UNK_INFO_2 u_2,
prs_struct ps,
int  depth 
) [static]

parse_samr.c580 行で定義されています。

参照先 UNIHDR::buffersam_unknown_info_2_inf::hdr_commentsam_unknown_info_2_inf::hdr_domainsam_unknown_info_2_inf::hdr_serversam_unknown_info_2_inf::logoutsam_unknown_info_2_inf::num_domain_grpssam_unknown_info_2_inf::num_domain_usrssam_unknown_info_2_inf::num_local_grpsprs_debug()prs_uint64()sam_unknown_info_2_inf::seq_numsam_unknown_info_2_inf::server_rolesmb_io_time()smb_io_unihdr()smb_io_unistr2()sam_unknown_info_2_inf::uni_commentsam_unknown_info_2_inf::uni_domainsam_unknown_info_2_inf::uni_serversam_unknown_info_2_inf::unknown_4sam_unknown_info_2_inf::unknown_6.

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00582 {
00583         if (u_2 == NULL)
00584                 return False;
00585 
00586         prs_debug(ps, depth, desc, "sam_io_unk_info2");
00587         depth++;
00588 
00589         if(!smb_io_time("logout", &u_2->logout, ps, depth))
00590                 return False;
00591         if(!smb_io_unihdr("hdr_comment", &u_2->hdr_comment, ps, depth))
00592                 return False;
00593         if(!smb_io_unihdr("hdr_domain", &u_2->hdr_domain, ps, depth))
00594                 return False;
00595         if(!smb_io_unihdr("hdr_server", &u_2->hdr_server, ps, depth))
00596                 return False;
00597 
00598         /* put all the data in here, at the moment, including what the above
00599            pointer is referring to
00600          */
00601 
00602         if(!prs_uint64("seq_num ", ps, depth, &u_2->seq_num))
00603                 return False;
00604 
00605         if(!prs_uint32("unknown_4 ", ps, depth, &u_2->unknown_4)) /* 0x0000 0001 */
00606                 return False;
00607         if(!prs_uint32("server_role ", ps, depth, &u_2->server_role))
00608                 return False;
00609         if(!prs_uint32("unknown_6 ", ps, depth, &u_2->unknown_6)) /* 0x0000 0001 */
00610                 return False;
00611         if(!prs_uint32("num_domain_usrs ", ps, depth, &u_2->num_domain_usrs))
00612                 return False;
00613         if(!prs_uint32("num_domain_grps", ps, depth, &u_2->num_domain_grps))
00614                 return False;
00615         if(!prs_uint32("num_local_grps", ps, depth, &u_2->num_local_grps))
00616                 return False;
00617 
00618         if(!smb_io_unistr2("uni_comment", &u_2->uni_comment, u_2->hdr_comment.buffer, ps, depth))
00619                 return False;
00620         if(!smb_io_unistr2("uni_domain", &u_2->uni_domain, u_2->hdr_domain.buffer, ps, depth))
00621                 return False;
00622         if(!smb_io_unistr2("uni_server", &u_2->uni_server, u_2->hdr_server.buffer, ps, depth))
00623                 return False;
00624 
00625         return True;
00626 }

void init_unk_info3 ( SAM_UNK_INFO_3 u_3,
NTTIME  nt_logout 
)

parse_samr.c632 行で定義されています。

参照先 sam_unknown_info_3_info::logout.

参照元 _samr_query_domain_info().

00633 {
00634         u_3->logout = nt_logout;
00635 }

static BOOL sam_io_unk_info3 ( const char *  desc,
SAM_UNK_INFO_3 u_3,
prs_struct ps,
int  depth 
) [static]

parse_samr.c641 行で定義されています。

参照先 sam_unknown_info_3_info::logoutprs_debug()smb_io_time().

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00643 {
00644         if (u_3 == NULL)
00645                 return False;
00646 
00647         prs_debug(ps, depth, desc, "sam_io_unk_info3");
00648         depth++;
00649 
00650         if(!smb_io_time("logout", &u_3->logout, ps, depth))
00651                 return False;
00652 
00653         return True;
00654 }

void init_unk_info4 ( SAM_UNK_INFO_4 u_4,
const char *  comment 
)

parse_samr.c660 行で定義されています。

参照先 sam_unknown_info_4_inf::hdr_commentinit_uni_hdr()init_unistr2()sam_unknown_info_4_inf::uni_commentUNI_FLAGS_NONE.

参照元 _samr_query_domain_info().

00661 {
00662         init_unistr2(&u_4->uni_comment, comment, UNI_FLAGS_NONE);
00663         init_uni_hdr(&u_4->hdr_comment, &u_4->uni_comment);
00664 }

static BOOL sam_io_unk_info4 ( const char *  desc,
SAM_UNK_INFO_4 u_4,
prs_struct ps,
int  depth 
) [static]

parse_samr.c670 行で定義されています。

参照先 UNIHDR::buffersam_unknown_info_4_inf::hdr_commentprs_debug()smb_io_unihdr()smb_io_unistr2()sam_unknown_info_4_inf::uni_comment.

参照元 samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00672 {
00673         if (u_4 == NULL)
00674                 return False;
00675 
00676         prs_debug(ps, depth, desc, "sam_io_unk_info4");
00677         depth++;
00678 
00679         if(!smb_io_unihdr("hdr_comment", &u_4->hdr_comment, ps, depth))
00680                 return False;
00681 
00682         if(!smb_io_unistr2("uni_comment", &u_4->uni_comment, u_4->hdr_comment.buffer, ps, depth))
00683                 return False;
00684 
00685         return True;
00686 }

void init_unk_info5 ( SAM_UNK_INFO_5 u_5,
const char *  domain 
)

parse_samr.c692 行で定義されています。

参照先 sam_unknown_info_5_inf::hdr_domaininit_uni_hdr()init_unistr2()sam_unknown_info_5_inf::uni_domainUNI_FLAGS_NONE.

参照元 _samr_query_domain_info().

00693 {
00694         init_unistr2(&u_5->uni_domain, domain, UNI_FLAGS_NONE);
00695         init_uni_hdr(&u_5->hdr_domain, &u_5->uni_domain);
00696 }

static BOOL sam_io_unk_info5 ( const char *  desc,
SAM_UNK_INFO_5 u_5,
prs_struct ps,
int  depth 
) [static]

parse_samr.c702 行で定義されています。

参照先 UNIHDR::buffersam_unknown_info_5_inf::hdr_domainprs_debug()smb_io_unihdr()smb_io_unistr2()sam_unknown_info_5_inf::uni_domain.

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00704 {
00705         if (u_5 == NULL)
00706                 return False;
00707 
00708         prs_debug(ps, depth, desc, "sam_io_unk_info5");
00709         depth++;
00710 
00711         if(!smb_io_unihdr("hdr_domain", &u_5->hdr_domain, ps, depth))
00712                 return False;
00713 
00714         if(!smb_io_unistr2("uni_domain", &u_5->uni_domain, u_5->hdr_domain.buffer, ps, depth))
00715                 return False;
00716 
00717         return True;
00718 }

void init_unk_info6 ( SAM_UNK_INFO_6 u_6,
const char *  server 
)

parse_samr.c724 行で定義されています。

参照先 sam_unknown_info_6_info::hdr_serverinit_uni_hdr()init_unistr2()UNI_FLAGS_NONEsam_unknown_info_6_info::uni_server.

参照元 _samr_query_domain_info().

00725 {
00726         init_unistr2(&u_6->uni_server, server, UNI_FLAGS_NONE);
00727         init_uni_hdr(&u_6->hdr_server, &u_6->uni_server);
00728 }

static BOOL sam_io_unk_info6 ( const char *  desc,
SAM_UNK_INFO_6 u_6,
prs_struct ps,
int  depth 
) [static]

parse_samr.c734 行で定義されています。

参照先 UNIHDR::buffersam_unknown_info_6_info::hdr_serverprs_debug()smb_io_unihdr()smb_io_unistr2()sam_unknown_info_6_info::uni_server.

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00736 {
00737         if (u_6 == NULL)
00738                 return False;
00739 
00740         prs_debug(ps, depth, desc, "sam_io_unk_info6");
00741         depth++;
00742 
00743         if(!smb_io_unihdr("hdr_server", &u_6->hdr_server, ps, depth))
00744                 return False;
00745 
00746         if(!smb_io_unistr2("uni_server", &u_6->uni_server, u_6->hdr_server.buffer, ps, depth))
00747                 return False;
00748 
00749         return True;
00750 }

void init_unk_info7 ( SAM_UNK_INFO_7 u_7,
uint32  server_role 
)

parse_samr.c756 行で定義されています。

参照先 sam_unknown_info_7_info::server_role.

参照元 _samr_query_domain_info().

00757 {
00758         u_7->server_role = server_role;
00759 }

static BOOL sam_io_unk_info7 ( const char *  desc,
SAM_UNK_INFO_7 u_7,
prs_struct ps,
int  depth 
) [static]

parse_samr.c765 行で定義されています。

参照先 prs_debug()sam_unknown_info_7_info::server_role.

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00767 {
00768         if (u_7 == NULL)
00769                 return False;
00770 
00771         prs_debug(ps, depth, desc, "sam_io_unk_info7");
00772         depth++;
00773 
00774         if(!prs_uint16("server_role", ps, depth, &u_7->server_role))
00775                 return False;
00776 
00777         return True;
00778 }

void init_unk_info8 ( SAM_UNK_INFO_8 u_8,
uint32  seq_num 
)

parse_samr.c784 行で定義されています。

参照先 sam_unknown_info_8_info::domain_create_timesam_unknown_info_8_info::seq_numunix_to_nt_time().

参照元 _samr_query_domain_info().

00785 {
00786         unix_to_nt_time(&u_8->domain_create_time, 0);
00787         u_8->seq_num = seq_num;
00788 }

static BOOL sam_io_unk_info8 ( const char *  desc,
SAM_UNK_INFO_8 u_8,
prs_struct ps,
int  depth 
) [static]

parse_samr.c794 行で定義されています。

参照先 sam_unknown_info_8_info::domain_create_timeprs_debug()prs_uint64()sam_unknown_info_8_info::seq_numsmb_io_time().

参照元 samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00796 {
00797         if (u_8 == NULL)
00798                 return False;
00799 
00800         prs_debug(ps, depth, desc, "sam_io_unk_info8");
00801         depth++;
00802 
00803         if (!prs_uint64("seq_num", ps, depth, &u_8->seq_num))
00804                 return False;
00805 
00806         if(!smb_io_time("domain_create_time", &u_8->domain_create_time, ps, depth))
00807                 return False;
00808 
00809         return True;
00810 }

void init_unk_info9 ( SAM_UNK_INFO_9 u_9,
uint32  unknown 
)

parse_samr.c816 行で定義されています。

参照先 sam_unknown_info_9_info::unknown.

00817 {
00818         u_9->unknown = unknown;
00819 }

static BOOL sam_io_unk_info9 ( const char *  desc,
SAM_UNK_INFO_9 u_9,
prs_struct ps,
int  depth 
) [static]

parse_samr.c825 行で定義されています。

参照先 prs_debug()sam_unknown_info_9_info::unknown.

参照元 samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00827 {
00828         if (u_9 == NULL)
00829                 return False;
00830 
00831         prs_debug(ps, depth, desc, "sam_io_unk_info9");
00832         depth++;
00833 
00834         if (!prs_uint32("unknown", ps, depth, &u_9->unknown))
00835                 return False;
00836 
00837         return True;
00838 }

void init_unk_info12 ( SAM_UNK_INFO_12 u_12,
NTTIME  nt_lock_duration,
NTTIME  nt_reset_time,
uint16  lockout 
)

parse_samr.c844 行で定義されています。

参照先 sam_unknown_info_12_inf::bad_attempt_lockoutsam_unknown_info_12_inf::durationsam_unknown_info_12_inf::reset_count.

参照元 _samr_query_domain_info().

00845 {
00846         u_12->duration = nt_lock_duration;
00847         u_12->reset_count = nt_reset_time;
00848 
00849         u_12->bad_attempt_lockout = lockout;
00850 }

static BOOL sam_io_unk_info12 ( const char *  desc,
SAM_UNK_INFO_12 u_12,
prs_struct ps,
int  depth 
) [static]

parse_samr.c856 行で定義されています。

参照先 sam_unknown_info_12_inf::bad_attempt_lockoutsam_unknown_info_12_inf::durationprs_debug()sam_unknown_info_12_inf::reset_countsmb_io_time().

参照元 samr_io_q_set_domain_info()samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00858 {
00859         if (u_12 == NULL)
00860                 return False;
00861 
00862         prs_debug(ps, depth, desc, "sam_io_unk_info12");
00863         depth++;
00864 
00865         if(!smb_io_time("duration", &u_12->duration, ps, depth))
00866                 return False;
00867         if(!smb_io_time("reset_count", &u_12->reset_count, ps, depth))
00868                 return False;
00869         if(!prs_uint16("bad_attempt_lockout", ps, depth, &u_12->bad_attempt_lockout))
00870                 return False;
00871 
00872         return True;
00873 }

void init_unk_info13 ( SAM_UNK_INFO_13 u_13,
uint32  seq_num 
)

parse_samr.c879 行で定義されています。

参照先 sam_unknown_info_13_info::domain_create_timesam_unknown_info_13_info::seq_numunix_to_nt_time()sam_unknown_info_13_info::unknown1sam_unknown_info_13_info::unknown2.

00880 {
00881         unix_to_nt_time(&u_13->domain_create_time, 0);
00882         u_13->seq_num = seq_num;
00883         u_13->unknown1 = 0;
00884         u_13->unknown2 = 0;
00885 }

static BOOL sam_io_unk_info13 ( const char *  desc,
SAM_UNK_INFO_13 u_13,
prs_struct ps,
int  depth 
) [static]

parse_samr.c891 行で定義されています。

参照先 sam_unknown_info_13_info::domain_create_timeprs_debug()prs_uint64()sam_unknown_info_13_info::seq_numsmb_io_time()sam_unknown_info_13_info::unknown1sam_unknown_info_13_info::unknown2.

参照元 samr_io_r_query_domain_info()samr_io_r_query_domain_info2().

00893 {
00894         if (u_13 == NULL)
00895                 return False;
00896 
00897         prs_debug(ps, depth, desc, "sam_io_unk_info13");
00898         depth++;
00899 
00900         if (!prs_uint64("seq_num", ps, depth, &u_13->seq_num))
00901                 return False;
00902 
00903         if(!smb_io_time("domain_create_time", &u_13->domain_create_time, ps, depth))
00904                 return False;
00905 
00906         if (!prs_uint32("unknown1", ps, depth, &u_13->unknown1))
00907                 return False;
00908         if (!prs_uint32("unknown2", ps, depth, &u_13->unknown2))
00909                 return False;
00910 
00911         return True;
00912 }

void init_samr_r_query_domain_info ( SAMR_R_QUERY_DOMAIN_INFO r_u,
uint16  switch_value,
SAM_UNK_CTR ctr,
NTSTATUS  status 
)

parse_samr.c918 行で定義されています。

参照先 r_samr_query_domain_info::ctrr_samr_query_domain_info::ptr_0statusr_samr_query_domain_info::statusr_samr_query_domain_info::switch_value.

参照元 _samr_query_domain_info().

00921 {
00922         DEBUG(5, ("init_samr_r_query_domain_info\n"));
00923 
00924         r_u->ptr_0 = 0;
00925         r_u->switch_value = 0;
00926         r_u->status = status;   /* return status */
00927 
00928         if (NT_STATUS_IS_OK(status)) {
00929                 r_u->switch_value = switch_value;
00930                 r_u->ptr_0 = 1;
00931                 r_u->ctr = ctr;
00932         }
00933 }

BOOL samr_io_r_query_domain_info ( const char *  desc,
SAMR_R_QUERY_DOMAIN_INFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c939 行で定義されています。

参照先 r_samr_query_domain_info::ctrsam_unknown_ctr_info::inf1sam_unknown_ctr_info::inf12sam_unknown_ctr_info::inf13sam_unknown_ctr_info::inf2sam_unknown_ctr_info::inf3sam_unknown_ctr_info::inf4sam_unknown_ctr_info::inf5sam_unknown_ctr_info::inf6sam_unknown_ctr_info::inf7sam_unknown_ctr_info::inf8sam_unknown_ctr_info::inf9sam_unknown_ctr_info::infoprs_debug()r_samr_query_domain_info::ptr_0sam_io_unk_info1()sam_io_unk_info12()sam_io_unk_info13()sam_io_unk_info2()sam_io_unk_info3()sam_io_unk_info4()sam_io_unk_info5()sam_io_unk_info6()sam_io_unk_info7()sam_io_unk_info8()sam_io_unk_info9()r_samr_query_domain_info::statusr_samr_query_domain_info::switch_value.

参照元 api_samr_query_domain_info()rpccli_samr_query_dom_info().

00941 {
00942         if (r_u == NULL)
00943                 return False;
00944 
00945         prs_debug(ps, depth, desc, "samr_io_r_query_domain_info");
00946         depth++;
00947 
00948         if(!prs_align(ps))
00949                 return False;
00950 
00951         if(!prs_uint32("ptr_0 ", ps, depth, &r_u->ptr_0))
00952                 return False;
00953 
00954         if (r_u->ptr_0 != 0 && r_u->ctr != NULL) {
00955                 if(!prs_uint16("switch_value", ps, depth, &r_u->switch_value))
00956                         return False;
00957                 if(!prs_align(ps))
00958                         return False;
00959 
00960                 switch (r_u->switch_value) {
00961                 case 0x0d:
00962                         if(!sam_io_unk_info13("unk_inf13", &r_u->ctr->info.inf13, ps, depth))
00963                                 return False;
00964                         break;
00965                 case 0x0c:
00966                         if(!sam_io_unk_info12("unk_inf12", &r_u->ctr->info.inf12, ps, depth))
00967                                 return False;
00968                         break;
00969                 case 0x09:
00970                         if(!sam_io_unk_info9("unk_inf9",&r_u->ctr->info.inf9, ps,depth))
00971                                 return False;
00972                         break;
00973                 case 0x08:
00974                         if(!sam_io_unk_info8("unk_inf8",&r_u->ctr->info.inf8, ps,depth))
00975                                 return False;
00976                         break;
00977                 case 0x07:
00978                         if(!sam_io_unk_info7("unk_inf7",&r_u->ctr->info.inf7, ps,depth))
00979                                 return False;
00980                         break;
00981                 case 0x06:
00982                         if(!sam_io_unk_info6("unk_inf6",&r_u->ctr->info.inf6, ps,depth))
00983                                 return False;
00984                         break;
00985                 case 0x05:
00986                         if(!sam_io_unk_info5("unk_inf5",&r_u->ctr->info.inf5, ps,depth))
00987                                 return False;
00988                         break;
00989                 case 0x04:
00990                         if(!sam_io_unk_info4("unk_inf4",&r_u->ctr->info.inf4, ps,depth))
00991                                 return False;
00992                         break;
00993                 case 0x03:
00994                         if(!sam_io_unk_info3("unk_inf3",&r_u->ctr->info.inf3, ps,depth))
00995                                 return False;
00996                         break;
00997                 case 0x02:
00998                         if(!sam_io_unk_info2("unk_inf2",&r_u->ctr->info.inf2, ps,depth))
00999                                 return False;
01000                         break;
01001                 case 0x01:
01002                         if(!sam_io_unk_info1("unk_inf1",&r_u->ctr->info.inf1, ps,depth))
01003                                 return False;
01004                         break;
01005                 default:
01006                         DEBUG(0, ("samr_io_r_query_domain_info: unknown switch level 0x%x\n",
01007                                 r_u->switch_value));
01008                         r_u->status = NT_STATUS_INVALID_INFO_CLASS;
01009                         return False;
01010                 }
01011         }
01012         
01013         if(!prs_align(ps))
01014                 return False;
01015 
01016         if(!prs_ntstatus("status", ps, depth, &r_u->status))
01017                 return False;
01018         
01019         return True;
01020 }

void init_samr_q_set_sec_obj ( SAMR_Q_SET_SEC_OBJ q_u,
POLICY_HND pol,
uint32  sec_info,
SEC_DESC_BUF buf 
)

parse_samr.c1026 行で定義されています。

参照先 bufq_samr_set_sec_obj_info::bufpolq_samr_set_sec_obj_info::polq_samr_set_sec_obj_info::sec_info.

参照元 rpccli_samr_set_sec_obj().

01028 {
01029         DEBUG(5, ("samr_init_samr_q_set_sec_obj\n"));
01030 
01031         q_u->pol = *pol;
01032         q_u->sec_info = sec_info;
01033         q_u->buf = buf;
01034 }

BOOL samr_io_r_set_sec_obj ( const char *  desc,
SAMR_R_SET_SEC_OBJ r_u,
prs_struct ps,
int  depth 
)

parse_samr.c1041 行で定義されています。

参照先 prs_debug()r_samr_set_sec_obj_info::status.

参照元 api_samr_set_sec_obj()rpccli_samr_set_sec_obj().

01043 {
01044         if (r_u == NULL)
01045                 return False;
01046   
01047         prs_debug(ps, depth, desc, "samr_io_r_set_sec_obj");
01048         depth++;
01049 
01050         if(!prs_align(ps))
01051                 return False;
01052 
01053         if(!prs_ntstatus("status", ps, depth, &r_u->status))
01054                 return False;
01055 
01056         return True;
01057 }

BOOL samr_io_r_query_sec_obj ( const char *  desc,
SAMR_R_QUERY_SEC_OBJ r_u,
prs_struct ps,
int  depth 
)

parse_samr.c1063 行で定義されています。

参照先 r_samr_query_sec_obj_info::bufprs_debug()r_samr_query_sec_obj_info::ptrsec_io_desc_buf()r_samr_query_sec_obj_info::status.

参照元 api_samr_query_sec_obj()rpccli_samr_query_sec_obj().

01065 {
01066         if (r_u == NULL)
01067                 return False;
01068   
01069         prs_debug(ps, depth, desc, "samr_io_r_query_sec_obj");
01070         depth++;
01071 
01072         if(!prs_align(ps))
01073                 return False;
01074 
01075         if(!prs_uint32("ptr", ps, depth, &r_u->ptr))
01076                 return False;
01077         if (r_u->ptr != 0) {
01078                 if(!sec_io_desc_buf("sec", &r_u->buf, ps, depth))
01079                         return False;
01080         }
01081 
01082         if(!prs_ntstatus("status", ps, depth, &r_u->status))
01083                 return False;
01084 
01085         return True;
01086 }

static BOOL sam_io_sam_str1 ( const char *  desc,
SAM_STR1 sam,
uint32  acct_buf,
uint32  name_buf,
uint32  desc_buf,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1092 行で定義されています。

参照先 prs_debug()smb_io_unistr2()samr_str_entry_info1::uni_acct_descsamr_str_entry_info1::uni_acct_namesamr_str_entry_info1::uni_full_name.

参照元 sam_io_sam_dispinfo_1().

01095 {
01096         if (sam == NULL)
01097                 return False;
01098 
01099         prs_debug(ps, depth, desc, "sam_io_sam_str1");
01100         depth++;
01101 
01102         if(!prs_align(ps))
01103                 return False;
01104         if (!smb_io_unistr2("name", &sam->uni_acct_name, acct_buf, ps, depth))
01105                 return False;
01106 
01107         if (!smb_io_unistr2("desc", &sam->uni_acct_desc, desc_buf, ps, depth))
01108                 return False;
01109 
01110         if (!smb_io_unistr2("full", &sam->uni_full_name, name_buf, ps, depth))
01111                 return False;
01112 
01113         return True;
01114 }

static void init_sam_entry1 ( SAM_ENTRY1 sam,
uint32  user_idx,
UNISTR2 sam_name,
UNISTR2 sam_full,
UNISTR2 sam_desc,
uint32  rid_user,
uint32  acb_info 
) [static]

parse_samr.c1120 行で定義されています。

参照先 samr_entry_info1::acb_infosamr_entry_info1::hdr_acct_namesamr_entry_info1::hdr_user_descsamr_entry_info1::hdr_user_nameinit_uni_hdr()samr_entry_info1::rid_usersamr_entry_info1::user_idx.

参照元 init_sam_dispinfo_1().

01124 {
01125         DEBUG(5, ("init_sam_entry1\n"));
01126 
01127         ZERO_STRUCTP(sam);
01128 
01129         sam->user_idx = user_idx;
01130         sam->rid_user = rid_user;
01131         sam->acb_info = acb_info;
01132 
01133         init_uni_hdr(&sam->hdr_acct_name, sam_name);
01134         init_uni_hdr(&sam->hdr_user_name, sam_full);
01135         init_uni_hdr(&sam->hdr_user_desc, sam_desc);
01136 }

static BOOL sam_io_sam_entry1 ( const char *  desc,
SAM_ENTRY1 sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1142 行で定義されています。

参照先 samr_entry_info1::acb_infosamr_entry_info1::hdr_acct_namesamr_entry_info1::hdr_user_descsamr_entry_info1::hdr_user_nameprs_debug()samr_entry_info1::rid_usersmb_io_unihdr()samr_entry_info1::user_idx.

参照元 sam_io_sam_dispinfo_1().

01144 {
01145         if (sam == NULL)
01146                 return False;
01147 
01148         prs_debug(ps, depth, desc, "sam_io_sam_entry1");
01149         depth++;
01150 
01151         if(!prs_align(ps))
01152                 return False;
01153 
01154         if(!prs_uint32("user_idx ", ps, depth, &sam->user_idx))
01155                 return False;
01156 
01157         if(!prs_uint32("rid_user ", ps, depth, &sam->rid_user))
01158                 return False;
01159         if(!prs_uint32("acb_info ", ps, depth, &sam->acb_info))
01160                 return False;
01161 
01162         if (!smb_io_unihdr("hdr_acct_name", &sam->hdr_acct_name, ps, depth))
01163                 return False;
01164         if (!smb_io_unihdr("hdr_user_desc", &sam->hdr_user_desc, ps, depth))
01165                 return False;
01166         if (!smb_io_unihdr("hdr_user_name", &sam->hdr_user_name, ps, depth))
01167                 return False;
01168 
01169         return True;
01170 }

static BOOL sam_io_sam_str2 ( const char *  desc,
SAM_STR2 sam,
uint32  acct_buf,
uint32  desc_buf,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1176 行で定義されています。

参照先 prs_debug()smb_io_unistr2()samr_str_entry_info2::uni_srv_descsamr_str_entry_info2::uni_srv_name.

参照元 sam_io_sam_dispinfo_2().

01178 {
01179         if (sam == NULL)
01180                 return False;
01181 
01182         prs_debug(ps, depth, desc, "sam_io_sam_str2");
01183         depth++;
01184 
01185         if(!prs_align(ps))
01186                 return False;
01187 
01188         if(!smb_io_unistr2("uni_srv_name", &sam->uni_srv_name, acct_buf, ps, depth)) /* account name unicode string */
01189                 return False;
01190         if(!smb_io_unistr2("uni_srv_desc", &sam->uni_srv_desc, desc_buf, ps, depth))    /* account desc unicode string */
01191                 return False;
01192 
01193         return True;
01194 }

static void init_sam_entry2 ( SAM_ENTRY2 sam,
uint32  user_idx,
UNISTR2 sam_name,
UNISTR2 sam_desc,
uint32  rid_user,
uint32  acb_info 
) [static]

parse_samr.c1199 行で定義されています。

参照先 samr_entry_info2::acb_infosamr_entry_info2::hdr_srv_descsamr_entry_info2::hdr_srv_nameinit_uni_hdr()samr_entry_info2::rid_usersamr_entry_info2::user_idx.

参照元 init_sam_dispinfo_2().

01202 {
01203         DEBUG(5, ("init_sam_entry2\n"));
01204 
01205         sam->user_idx = user_idx;
01206         sam->rid_user = rid_user;
01207         sam->acb_info = acb_info;
01208 
01209         init_uni_hdr(&sam->hdr_srv_name, sam_name);
01210         init_uni_hdr(&sam->hdr_srv_desc, sam_desc);
01211 }

static BOOL sam_io_sam_entry2 ( const char *  desc,
SAM_ENTRY2 sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1217 行で定義されています。

参照先 samr_entry_info2::acb_infosamr_entry_info2::hdr_srv_descsamr_entry_info2::hdr_srv_nameprs_debug()samr_entry_info2::rid_usersmb_io_unihdr()samr_entry_info2::user_idx.

参照元 sam_io_sam_dispinfo_2().

01219 {
01220         if (sam == NULL)
01221                 return False;
01222 
01223         prs_debug(ps, depth, desc, "sam_io_sam_entry2");
01224         depth++;
01225 
01226         if(!prs_align(ps))
01227                 return False;
01228 
01229         if(!prs_uint32("user_idx ", ps, depth, &sam->user_idx))
01230                 return False;
01231 
01232         if(!prs_uint32("rid_user ", ps, depth, &sam->rid_user))
01233                 return False;
01234         if(!prs_uint32("acb_info ", ps, depth, &sam->acb_info))
01235                 return False;
01236 
01237         if(!smb_io_unihdr("unihdr", &sam->hdr_srv_name, ps, depth))     /* account name unicode string header */
01238                 return False;
01239         if(!smb_io_unihdr("unihdr", &sam->hdr_srv_desc, ps, depth))     /* account name unicode string header */
01240                 return False;
01241 
01242         return True;
01243 }

static BOOL sam_io_sam_str3 ( const char *  desc,
SAM_STR3 sam,
uint32  acct_buf,
uint32  desc_buf,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1249 行で定義されています。

参照先 prs_debug()smb_io_unistr2()samr_str_entry_info3::uni_grp_descsamr_str_entry_info3::uni_grp_name.

参照元 sam_io_sam_dispinfo_3().

01251 {
01252         if (sam == NULL)
01253                 return False;
01254 
01255         prs_debug(ps, depth, desc, "sam_io_sam_str3");
01256         depth++;
01257 
01258         if(!prs_align(ps))
01259                 return False;
01260 
01261         if(!smb_io_unistr2("uni_grp_name", &sam->uni_grp_name, acct_buf, ps, depth))    /* account name unicode string */
01262                 return False;
01263         if(!smb_io_unistr2("uni_grp_desc", &sam->uni_grp_desc, desc_buf, ps, depth))    /* account desc unicode string */
01264                 return False;
01265 
01266         return True;
01267 }

static void init_sam_entry3 ( SAM_ENTRY3 sam,
uint32  grp_idx,
UNISTR2 grp_name,
UNISTR2 grp_desc,
uint32  rid_grp 
) [static]

parse_samr.c1273 行で定義されています。

参照先 samr_entry_info3::attrsamr_entry_info3::grp_idxsamr_entry_info3::hdr_grp_descsamr_entry_info3::hdr_grp_nameinit_uni_hdr()samr_entry_info3::rid_grp.

参照元 init_sam_dispinfo_3().

01276 {
01277         DEBUG(5, ("init_sam_entry3\n"));
01278 
01279         sam->grp_idx = grp_idx;
01280         sam->rid_grp = rid_grp;
01281         sam->attr = 0x07;       /* group rid attributes - gets ignored by nt 4.0 */
01282 
01283         init_uni_hdr(&sam->hdr_grp_name, grp_name);
01284         init_uni_hdr(&sam->hdr_grp_desc, grp_desc);
01285 }

static BOOL sam_io_sam_entry3 ( const char *  desc,
SAM_ENTRY3 sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1291 行で定義されています。

参照先 samr_entry_info3::attrsamr_entry_info3::grp_idxsamr_entry_info3::hdr_grp_descsamr_entry_info3::hdr_grp_nameprs_debug()samr_entry_info3::rid_grpsmb_io_unihdr().

参照元 sam_io_sam_dispinfo_3().

01293 {
01294         if (sam == NULL)
01295                 return False;
01296 
01297         prs_debug(ps, depth, desc, "sam_io_sam_entry3");
01298         depth++;
01299 
01300         if(!prs_align(ps))
01301                 return False;
01302 
01303         if(!prs_uint32("grp_idx", ps, depth, &sam->grp_idx))
01304                 return False;
01305 
01306         if(!prs_uint32("rid_grp", ps, depth, &sam->rid_grp))
01307                 return False;
01308         if(!prs_uint32("attr   ", ps, depth, &sam->attr))
01309                 return False;
01310 
01311         if(!smb_io_unihdr("unihdr", &sam->hdr_grp_name, ps, depth))     /* account name unicode string header */
01312                 return False;
01313         if(!smb_io_unihdr("unihdr", &sam->hdr_grp_desc, ps, depth))     /* account name unicode string header */
01314                 return False;
01315 
01316         return True;
01317 }

static void init_sam_entry4 ( SAM_ENTRY4 sam,
uint32  user_idx,
uint32  len_acct_name 
) [static]

parse_samr.c1323 行で定義されています。

参照先 samr_entry_info4::hdr_acct_nameinit_str_hdr()samr_entry_info4::user_idx.

参照元 init_sam_dispinfo_4().

01325 {
01326         DEBUG(5, ("init_sam_entry4\n"));
01327 
01328         sam->user_idx = user_idx;
01329         init_str_hdr(&sam->hdr_acct_name, len_acct_name+1, len_acct_name, len_acct_name != 0);
01330 }

static BOOL sam_io_sam_entry4 ( const char *  desc,
SAM_ENTRY4 sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1336 行で定義されています。

参照先 samr_entry_info4::hdr_acct_nameprs_debug()smb_io_strhdr()samr_entry_info4::user_idx.

参照元 sam_io_sam_dispinfo_4().

01338 {
01339         if (sam == NULL)
01340                 return False;
01341 
01342         prs_debug(ps, depth, desc, "sam_io_sam_entry4");
01343         depth++;
01344 
01345         if(!prs_align(ps))
01346                 return False;
01347 
01348         if(!prs_uint32("user_idx", ps, depth, &sam->user_idx))
01349                 return False;
01350         if(!smb_io_strhdr("strhdr", &sam->hdr_acct_name, ps, depth))
01351                 return False;
01352 
01353         return True;
01354 }

static void init_sam_entry5 ( SAM_ENTRY5 sam,
uint32  grp_idx,
uint32  len_grp_name 
) [static]

parse_samr.c1360 行で定義されています。

参照先 samr_entry_info5::grp_idxsamr_entry_info5::hdr_grp_nameinit_str_hdr().

参照元 init_sam_dispinfo_5().

01362 {
01363         DEBUG(5, ("init_sam_entry5\n"));
01364 
01365         sam->grp_idx = grp_idx;
01366         init_str_hdr(&sam->hdr_grp_name, len_grp_name, len_grp_name,
01367                      len_grp_name != 0);
01368 }

static BOOL sam_io_sam_entry5 ( const char *  desc,
SAM_ENTRY5 sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1374 行で定義されています。

参照先 samr_entry_info5::grp_idxsamr_entry_info5::hdr_grp_nameprs_debug()smb_io_strhdr().

参照元 sam_io_sam_dispinfo_5().

01376 {
01377         if (sam == NULL)
01378                 return False;
01379 
01380         prs_debug(ps, depth, desc, "sam_io_sam_entry5");
01381         depth++;
01382 
01383         if(!prs_align(ps))
01384                 return False;
01385 
01386         if(!prs_uint32("grp_idx", ps, depth, &sam->grp_idx))
01387                 return False;
01388         if(!smb_io_strhdr("strhdr", &sam->hdr_grp_name, ps, depth))
01389                 return False;
01390 
01391         return True;
01392 }

void init_sam_entry ( SAM_ENTRY sam,
UNISTR2 uni2,
uint32  rid 
)

parse_samr.c1398 行で定義されています。

参照先 samr_entry_info::hdr_nameinit_uni_hdr()samr_entry_info::rid.

参照元 make_enum_domains()make_group_sam_entry_list()make_user_sam_entry_list().

01399 {
01400         DEBUG(10, ("init_sam_entry: %d\n", rid));
01401 
01402         sam->rid = rid;
01403         init_uni_hdr(&sam->hdr_name, uni2);
01404 }

static BOOL sam_io_sam_entry ( const char *  desc,
SAM_ENTRY sam,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1410 行で定義されています。

参照先 samr_entry_info::hdr_nameprs_debug()samr_entry_info::ridsmb_io_unihdr().

参照元 samr_io_r_enum_dom_aliases()samr_io_r_enum_dom_groups()samr_io_r_enum_dom_users()samr_io_r_enum_domains().

01412 {
01413         if (sam == NULL)
01414                 return False;
01415 
01416         prs_debug(ps, depth, desc, "sam_io_sam_entry");
01417         depth++;
01418 
01419         if(!prs_align(ps))
01420                 return False;
01421         if(!prs_uint32("rid", ps, depth, &sam->rid))
01422                 return False;
01423         if(!smb_io_unihdr("unihdr", &sam->hdr_name, ps, depth)) /* account name unicode string header */
01424                 return False;
01425 
01426         return True;
01427 }

void init_samr_q_enum_dom_users ( SAMR_Q_ENUM_DOM_USERS q_e,
POLICY_HND pol,
uint32  start_idx,
uint32  acb_mask,
uint32  size 
)

parse_samr.c1433 行で定義されています。

参照先 q_samr_enum_dom_users_info::acb_maskq_samr_enum_dom_users_info::max_sizepolq_samr_enum_dom_users_info::polq_samr_enum_dom_users_info::start_idx.

参照元 rpccli_samr_enum_dom_users().

01436 {
01437         DEBUG(5, ("init_samr_q_enum_dom_users\n"));
01438 
01439         q_e->pol = *pol;
01440 
01441         q_e->start_idx = start_idx;     /* zero indicates lots */
01442         q_e->acb_mask = acb_mask;
01443         q_e->max_size = size;
01444 }

BOOL samr_io_q_enum_dom_users ( const char *  desc,
SAMR_Q_ENUM_DOM_USERS q_e,
prs_struct ps,
int  depth 
)

parse_samr.c1450 行で定義されています。

参照先 q_samr_enum_dom_users_info::acb_maskq_samr_enum_dom_users_info::max_sizeq_samr_enum_dom_users_info::polprs_debug()smb_io_pol_hnd()q_samr_enum_dom_users_info::start_idx.

参照元 api_samr_enum_dom_users()rpccli_samr_enum_dom_users().

01452 {
01453         if (q_e == NULL)
01454                 return False;
01455 
01456         prs_debug(ps, depth, desc, "samr_io_q_enum_dom_users");
01457         depth++;
01458 
01459         if(!prs_align(ps))
01460                 return False;
01461 
01462         if(!smb_io_pol_hnd("domain_pol", &q_e->pol, ps, depth))
01463                 return False;
01464 
01465         if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx))
01466                 return False;
01467         if(!prs_uint32("acb_mask ", ps, depth, &q_e->acb_mask))
01468                 return False;
01469 
01470         if(!prs_uint32("max_size ", ps, depth, &q_e->max_size))
01471                 return False;
01472 
01473         return True;
01474 }

void init_samr_r_enum_dom_users ( SAMR_R_ENUM_DOM_USERS r_u,
uint32  next_idx,
uint32  num_sam_entries 
)

parse_samr.c1481 行で定義されています。

参照先 r_samr_enum_dom_users_info::next_idxr_samr_enum_dom_users_info::num_entries2r_samr_enum_dom_users_info::num_entries3r_samr_enum_dom_users_info::num_entries4r_samr_enum_dom_users_info::ptr_entries1r_samr_enum_dom_users_info::ptr_entries2.

参照元 _samr_enum_dom_users().

01483 {
01484         DEBUG(5, ("init_samr_r_enum_dom_users\n"));
01485 
01486         r_u->next_idx = next_idx;
01487 
01488         if (num_sam_entries != 0) {
01489                 r_u->ptr_entries1 = 1;
01490                 r_u->ptr_entries2 = 1;
01491                 r_u->num_entries2 = num_sam_entries;
01492                 r_u->num_entries3 = num_sam_entries;
01493 
01494                 r_u->num_entries4 = num_sam_entries;
01495         } else {
01496                 r_u->ptr_entries1 = 0;
01497                 r_u->num_entries2 = num_sam_entries;
01498                 r_u->ptr_entries2 = 1;
01499         }
01500 }

BOOL samr_io_r_enum_dom_users ( const char *  desc,
SAMR_R_ENUM_DOM_USERS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c1506 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info::hdr_namer_samr_enum_dom_users_info::next_idxr_samr_enum_dom_users_info::num_entries2r_samr_enum_dom_users_info::num_entries3r_samr_enum_dom_users_info::num_entries4prs_debug()r_samr_enum_dom_users_info::ptr_entries1r_samr_enum_dom_users_info::ptr_entries2r_samr_enum_dom_users_info::samsam_io_sam_entry()smb_io_unistr2()r_samr_enum_dom_users_info::statusr_samr_enum_dom_users_info::uni_acct_name.

参照元 api_samr_enum_dom_users()rpccli_samr_enum_dom_users().

01508 {
01509         uint32 i;
01510 
01511         if (r_u == NULL)
01512                 return False;
01513 
01514         prs_debug(ps, depth, desc, "samr_io_r_enum_dom_users");
01515         depth++;
01516 
01517         if(!prs_align(ps))
01518                 return False;
01519 
01520         if(!prs_uint32("next_idx    ", ps, depth, &r_u->next_idx))
01521                 return False;
01522         if(!prs_uint32("ptr_entries1", ps, depth, &r_u->ptr_entries1))
01523                 return False;
01524 
01525         if (r_u->ptr_entries1 != 0) {
01526                 if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2))
01527                         return False;
01528                 if(!prs_uint32("ptr_entries2", ps, depth, &r_u->ptr_entries2))
01529                         return False;
01530                 if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3))
01531                         return False;
01532 
01533                 if (UNMARSHALLING(ps) && (r_u->num_entries2 != 0)) {
01534                         r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY, r_u->num_entries2);
01535                         r_u->uni_acct_name = PRS_ALLOC_MEM(ps,UNISTR2, r_u->num_entries2);
01536                 }
01537 
01538                 if ((r_u->sam == NULL || r_u->uni_acct_name == NULL) && r_u->num_entries2 != 0) {
01539                         DEBUG(0,("NULL pointers in SAMR_R_ENUM_DOM_USERS\n"));
01540                         r_u->num_entries4 = 0;
01541                         r_u->status = NT_STATUS_MEMORY_NOT_ALLOCATED;
01542                         return False;
01543                 }
01544 
01545                 for (i = 0; i < r_u->num_entries2; i++) {
01546                         if(!sam_io_sam_entry("", &r_u->sam[i], ps, depth))
01547                                 return False;
01548                 }
01549 
01550                 for (i = 0; i < r_u->num_entries2; i++) {
01551                         if(!smb_io_unistr2("", &r_u->uni_acct_name[i],r_u->sam[i].hdr_name.buffer, ps,depth))
01552                                 return False;
01553                 }
01554 
01555         }
01556 
01557         if(!prs_align(ps))
01558                 return False;
01559                 
01560         if(!prs_uint32("num_entries4", ps, depth, &r_u->num_entries4))
01561                 return False;
01562         if(!prs_ntstatus("status", ps, depth, &r_u->status))
01563                 return False;
01564 
01565         return True;
01566 }

void init_samr_q_query_dispinfo ( SAMR_Q_QUERY_DISPINFO q_e,
POLICY_HND pol,
uint16  switch_level,
uint32  start_idx,
uint32  max_entries,
uint32  max_size 
)

parse_samr.c1572 行で定義されています。

参照先 q_samr_query_disp_info::domain_polq_samr_query_disp_info::max_entriesq_samr_query_disp_info::max_sizepolq_samr_query_disp_info::start_idxq_samr_query_disp_info::switch_level.

参照元 rpccli_samr_query_dispinfo().

01575 {
01576         DEBUG(5, ("init_samr_q_query_dispinfo\n"));
01577 
01578         q_e->domain_pol = *pol;
01579 
01580         q_e->switch_level = switch_level;
01581 
01582         q_e->start_idx = start_idx;
01583         q_e->max_entries = max_entries;
01584         q_e->max_size = max_size;
01585 }

BOOL samr_io_q_query_dispinfo ( const char *  desc,
SAMR_Q_QUERY_DISPINFO q_e,
prs_struct ps,
int  depth 
)

parse_samr.c1591 行で定義されています。

参照先 q_samr_query_disp_info::domain_polq_samr_query_disp_info::max_entriesq_samr_query_disp_info::max_sizeprs_debug()smb_io_pol_hnd()q_samr_query_disp_info::start_idxq_samr_query_disp_info::switch_level.

参照元 api_samr_query_dispinfo()rpccli_samr_query_dispinfo().

01593 {
01594         if (q_e == NULL)
01595                 return False;
01596 
01597         prs_debug(ps, depth, desc, "samr_io_q_query_dispinfo");
01598         depth++;
01599 
01600         if(!prs_align(ps))
01601                 return False;
01602 
01603         if(!smb_io_pol_hnd("domain_pol", &q_e->domain_pol, ps, depth))
01604                 return False;
01605 
01606         if(!prs_uint16("switch_level", ps, depth, &q_e->switch_level))
01607                 return False;
01608         if(!prs_align(ps))
01609                 return False;
01610 
01611         if(!prs_uint32("start_idx   ", ps, depth, &q_e->start_idx))
01612                 return False;
01613         if(!prs_uint32("max_entries ", ps, depth, &q_e->max_entries))
01614                 return False;
01615         if(!prs_uint32("max_size    ", ps, depth, &q_e->max_size))
01616                 return False;
01617 
01618         return True;
01619 }

NTSTATUS init_sam_dispinfo_1 ( TALLOC_CTX ctx,
SAM_DISPINFO_1 **  sam,
uint32  num_entries,
uint32  start_idx,
struct samr_displayentry entries 
)

parse_samr.c1625 行で定義されています。

参照先 samr_displayentry::account_namesamr_displayentry::acct_flagssamr_displayentry::descriptionsamr_displayentry::fullnameinit_sam_entry1()init_unistr2()samr_displayentry::ridUNI_FLAGS_NONE.

参照元 _samr_query_dispinfo().

01628 {
01629         uint32 i;
01630 
01631         DEBUG(10, ("init_sam_dispinfo_1: num_entries: %d\n", num_entries));
01632 
01633         if (num_entries==0)
01634                 return NT_STATUS_OK;
01635 
01636         *sam = TALLOC_ZERO_ARRAY(ctx, SAM_DISPINFO_1, num_entries);
01637         if (*sam == NULL)
01638                 return NT_STATUS_NO_MEMORY;
01639 
01640         (*sam)->sam=TALLOC_ARRAY(ctx, SAM_ENTRY1, num_entries);
01641         if ((*sam)->sam == NULL)
01642                 return NT_STATUS_NO_MEMORY;
01643 
01644         (*sam)->str=TALLOC_ARRAY(ctx, SAM_STR1, num_entries);
01645         if ((*sam)->str == NULL)
01646                 return NT_STATUS_NO_MEMORY;
01647 
01648         for (i = 0; i < num_entries ; i++) {
01649                 init_unistr2(&(*sam)->str[i].uni_acct_name,
01650                              entries[i].account_name, UNI_FLAGS_NONE);
01651                 init_unistr2(&(*sam)->str[i].uni_full_name,
01652                              entries[i].fullname, UNI_FLAGS_NONE);
01653                 init_unistr2(&(*sam)->str[i].uni_acct_desc,
01654                              entries[i].description, UNI_FLAGS_NONE);
01655 
01656                 init_sam_entry1(&(*sam)->sam[i], start_idx+i+1,
01657                                 &(*sam)->str[i].uni_acct_name,
01658                                 &(*sam)->str[i].uni_full_name,
01659                                 &(*sam)->str[i].uni_acct_desc,
01660                                 entries[i].rid, entries[i].acct_flags);
01661         }
01662 
01663         return NT_STATUS_OK;
01664 }

static BOOL sam_io_sam_dispinfo_1 ( const char *  desc,
SAM_DISPINFO_1 sam,
uint32  num_entries,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1670 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info1::hdr_acct_namesamr_entry_info1::hdr_user_descsamr_entry_info1::hdr_user_nameprs_debug()sam_entry_info_1::samsam_io_sam_entry1()sam_io_sam_str1()sam_entry_info_1::str.

参照元 samr_io_r_query_dispinfo().

01673 {
01674         uint32 i;
01675 
01676         prs_debug(ps, depth, desc, "sam_io_sam_dispinfo_1");
01677         depth++;
01678 
01679         if(!prs_align(ps))
01680                 return False;
01681 
01682         if (UNMARSHALLING(ps) && num_entries > 0) {
01683 
01684                 if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY1, num_entries)) == NULL) {
01685                         DEBUG(0, ("out of memory allocating SAM_ENTRY1\n"));
01686                         return False;
01687                 }
01688 
01689                 if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR1, num_entries)) == NULL) {
01690                         DEBUG(0, ("out of memory allocating SAM_STR1\n"));
01691                         return False;
01692                 }
01693         }
01694 
01695         for (i = 0; i < num_entries; i++) {
01696                 if(!sam_io_sam_entry1("", &sam->sam[i], ps, depth))
01697                         return False;
01698         }
01699 
01700         for (i = 0; i < num_entries; i++) {
01701                 if(!sam_io_sam_str1("", &sam->str[i],
01702                               sam->sam[i].hdr_acct_name.buffer,
01703                               sam->sam[i].hdr_user_name.buffer,
01704                               sam->sam[i].hdr_user_desc.buffer, ps, depth))
01705                         return False;
01706         }
01707 
01708         return True;
01709 }

NTSTATUS init_sam_dispinfo_2 ( TALLOC_CTX ctx,
SAM_DISPINFO_2 **  sam,
uint32  num_entries,
uint32  start_idx,
struct samr_displayentry entries 
)

parse_samr.c1715 行で定義されています。

参照先 samr_displayentry::account_namesamr_displayentry::acct_flagssamr_displayentry::descriptioninit_sam_entry2()init_unistr2()samr_displayentry::ridUNI_FLAGS_NONE.

参照元 _samr_query_dispinfo().

01718 {
01719         uint32 i;
01720 
01721         DEBUG(10, ("init_sam_dispinfo_2: num_entries: %d\n", num_entries));
01722 
01723         if (num_entries==0)
01724                 return NT_STATUS_OK;
01725 
01726         *sam = TALLOC_ZERO_ARRAY(ctx, SAM_DISPINFO_2, num_entries);
01727         if (*sam == NULL)
01728                 return NT_STATUS_NO_MEMORY;
01729 
01730         (*sam)->sam = TALLOC_ARRAY(ctx, SAM_ENTRY2, num_entries);
01731         if ((*sam)->sam == NULL)
01732                 return NT_STATUS_NO_MEMORY;
01733 
01734         (*sam)->str=TALLOC_ARRAY(ctx, SAM_STR2, num_entries);
01735         if ((*sam)->str == NULL)
01736                 return NT_STATUS_NO_MEMORY;
01737 
01738         for (i = 0; i < num_entries; i++) {
01739                 init_unistr2(&(*sam)->str[i].uni_srv_name,
01740                              entries[i].account_name, UNI_FLAGS_NONE);
01741                 init_unistr2(&(*sam)->str[i].uni_srv_desc,
01742                              entries[i].description, UNI_FLAGS_NONE);
01743 
01744                 init_sam_entry2(&(*sam)->sam[i], start_idx + i + 1,
01745                                 &(*sam)->str[i].uni_srv_name,
01746                                 &(*sam)->str[i].uni_srv_desc,
01747                                 entries[i].rid, entries[i].acct_flags);
01748         }
01749 
01750         return NT_STATUS_OK;
01751 }

static BOOL sam_io_sam_dispinfo_2 ( const char *  desc,
SAM_DISPINFO_2 sam,
uint32  num_entries,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1757 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info2::hdr_srv_descsamr_entry_info2::hdr_srv_nameprs_debug()sam_entry_info_2::samsam_io_sam_entry2()sam_io_sam_str2()sam_entry_info_2::str.

参照元 samr_io_r_query_dispinfo().

01760 {
01761         uint32 i;
01762 
01763         if (sam == NULL)
01764                 return False;
01765 
01766         prs_debug(ps, depth, desc, "sam_io_sam_dispinfo_2");
01767         depth++;
01768 
01769         if(!prs_align(ps))
01770                 return False;
01771 
01772         if (UNMARSHALLING(ps) && num_entries > 0) {
01773 
01774                 if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY2, num_entries)) == NULL) {
01775                         DEBUG(0, ("out of memory allocating SAM_ENTRY2\n"));
01776                         return False;
01777                 }
01778 
01779                 if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR2, num_entries)) == NULL) {
01780                         DEBUG(0, ("out of memory allocating SAM_STR2\n"));
01781                         return False;
01782                 }
01783         }
01784 
01785         for (i = 0; i < num_entries; i++) {
01786                 if(!sam_io_sam_entry2("", &sam->sam[i], ps, depth))
01787                         return False;
01788         }
01789 
01790         for (i = 0; i < num_entries; i++) {
01791                 if(!sam_io_sam_str2("", &sam->str[i],
01792                               sam->sam[i].hdr_srv_name.buffer,
01793                               sam->sam[i].hdr_srv_desc.buffer, ps, depth))
01794                         return False;
01795         }
01796 
01797         return True;
01798 }

NTSTATUS init_sam_dispinfo_3 ( TALLOC_CTX ctx,
SAM_DISPINFO_3 **  sam,
uint32  num_entries,
uint32  start_idx,
struct samr_displayentry entries 
)

parse_samr.c1804 行で定義されています。

参照先 samr_displayentry::account_namesamr_displayentry::descriptioninit_sam_entry3()init_unistr2()samr_displayentry::ridUNI_FLAGS_NONE.

参照元 _samr_query_dispinfo().

01807 {
01808         uint32 i;
01809 
01810         DEBUG(5, ("init_sam_dispinfo_3: num_entries: %d\n", num_entries));
01811 
01812         if (num_entries==0)
01813                 return NT_STATUS_OK;
01814 
01815         *sam = TALLOC_ZERO_ARRAY(ctx, SAM_DISPINFO_3, num_entries);
01816         if (*sam == NULL)
01817                 return NT_STATUS_NO_MEMORY;
01818 
01819         if (!((*sam)->sam=TALLOC_ARRAY(ctx, SAM_ENTRY3, num_entries)))
01820                 return NT_STATUS_NO_MEMORY;
01821 
01822         if (!((*sam)->str=TALLOC_ARRAY(ctx, SAM_STR3, num_entries)))
01823                 return NT_STATUS_NO_MEMORY;
01824 
01825         for (i = 0; i < num_entries; i++) {
01826                 DEBUG(11, ("init_sam_dispinfo_3: entry: %d\n",i));
01827 
01828                 init_unistr2(&(*sam)->str[i].uni_grp_name,
01829                              entries[i].account_name, UNI_FLAGS_NONE);
01830                 init_unistr2(&(*sam)->str[i].uni_grp_desc,
01831                              entries[i].description, UNI_FLAGS_NONE);
01832 
01833                 init_sam_entry3(&(*sam)->sam[i], start_idx+i+1,
01834                                 &(*sam)->str[i].uni_grp_name,
01835                                 &(*sam)->str[i].uni_grp_desc,
01836                                 entries[i].rid);
01837         }
01838 
01839         return NT_STATUS_OK;
01840 }

static BOOL sam_io_sam_dispinfo_3 ( const char *  desc,
SAM_DISPINFO_3 sam,
uint32  num_entries,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1846 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info3::hdr_grp_descsamr_entry_info3::hdr_grp_nameprs_debug()sam_entry_info_3::samsam_io_sam_entry3()sam_io_sam_str3()sam_entry_info_3::str.

参照元 samr_io_r_query_dispinfo().

01849 {
01850         uint32 i;
01851 
01852         if (sam == NULL)
01853                 return False;
01854 
01855         prs_debug(ps, depth, desc, "sam_io_sam_dispinfo_3");
01856         depth++;
01857 
01858         if(!prs_align(ps))
01859                 return False;
01860 
01861         if (UNMARSHALLING(ps) && num_entries > 0) {
01862 
01863                 if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY3, num_entries)) == NULL) {
01864                         DEBUG(0, ("out of memory allocating SAM_ENTRY3\n"));
01865                         return False;
01866                 }
01867 
01868                 if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR3, num_entries)) == NULL) {
01869                         DEBUG(0, ("out of memory allocating SAM_STR3\n"));
01870                         return False;
01871                 }
01872         }
01873 
01874         for (i = 0; i < num_entries; i++) {
01875                 if(!sam_io_sam_entry3("", &sam->sam[i], ps, depth))
01876                         return False;
01877         }
01878 
01879         for (i = 0; i < num_entries; i++) {
01880                 if(!sam_io_sam_str3("", &sam->str[i],
01881                               sam->sam[i].hdr_grp_name.buffer,
01882                               sam->sam[i].hdr_grp_desc.buffer, ps, depth))
01883                         return False;
01884         }
01885 
01886         return True;
01887 }

NTSTATUS init_sam_dispinfo_4 ( TALLOC_CTX ctx,
SAM_DISPINFO_4 **  sam,
uint32  num_entries,
uint32  start_idx,
struct samr_displayentry entries 
)

parse_samr.c1893 行で定義されています。

参照先 samr_displayentry::account_nameinit_sam_entry4()init_string2().

参照元 _samr_query_dispinfo().

01896 {
01897         uint32 i;
01898 
01899         DEBUG(5, ("init_sam_dispinfo_4: num_entries: %d\n", num_entries));
01900 
01901         if (num_entries==0)
01902                 return NT_STATUS_OK;
01903 
01904         *sam = TALLOC_ZERO_ARRAY(ctx, SAM_DISPINFO_4, num_entries);
01905         if (*sam == NULL)
01906                 return NT_STATUS_NO_MEMORY;
01907 
01908         (*sam)->sam = TALLOC_ARRAY(ctx, SAM_ENTRY4, num_entries);
01909         if ((*sam)->sam == NULL)
01910                 return NT_STATUS_NO_MEMORY;
01911 
01912         (*sam)->str=TALLOC_ARRAY(ctx, SAM_STR4, num_entries);
01913         if ((*sam)->str == NULL)
01914                 return NT_STATUS_NO_MEMORY;
01915 
01916         for (i = 0; i < num_entries; i++) {
01917                 size_t len_sam_name = strlen(entries[i].account_name);
01918 
01919                 DEBUG(11, ("init_sam_dispinfo_2: entry: %d\n",i));
01920           
01921                 init_sam_entry4(&(*sam)->sam[i], start_idx + i + 1,
01922                                 len_sam_name);
01923 
01924                 init_string2(&(*sam)->str[i].acct_name,
01925                              entries[i].account_name, len_sam_name+1,
01926                              len_sam_name);
01927         }
01928         
01929         return NT_STATUS_OK;
01930 }

static BOOL sam_io_sam_dispinfo_4 ( const char *  desc,
SAM_DISPINFO_4 sam,
uint32  num_entries,
prs_struct ps,
int  depth 
) [static]

parse_samr.c1936 行で定義されています。

参照先 samr_str_entry_info4::acct_nameSTRHDR::buffersamr_entry_info4::hdr_acct_nameprs_debug()sam_entry_info_4::samsam_io_sam_entry4()smb_io_string2()sam_entry_info_4::str.

参照元 samr_io_r_query_dispinfo().

01939 {
01940         uint32 i;
01941 
01942         if (sam == NULL)
01943                 return False;
01944 
01945         prs_debug(ps, depth, desc, "sam_io_sam_dispinfo_4");
01946         depth++;
01947 
01948         if(!prs_align(ps))
01949                 return False;
01950 
01951         if (UNMARSHALLING(ps) && num_entries > 0) {
01952 
01953                 if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY4, num_entries)) == NULL) {
01954                         DEBUG(0, ("out of memory allocating SAM_ENTRY4\n"));
01955                         return False;
01956                 }
01957 
01958                 if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR4, num_entries)) == NULL) {
01959                         DEBUG(0, ("out of memory allocating SAM_STR4\n"));
01960                         return False;
01961                 }
01962         }
01963 
01964         for (i = 0; i < num_entries; i++) {
01965                 if(!sam_io_sam_entry4("", &sam->sam[i], ps, depth))
01966                         return False;
01967         }
01968 
01969         for (i = 0; i < num_entries; i++) {
01970                 if(!smb_io_string2("acct_name", &sam->str[i].acct_name,
01971                              sam->sam[i].hdr_acct_name.buffer, ps, depth))
01972                         return False;
01973         }
01974 
01975         return True;
01976 }

NTSTATUS init_sam_dispinfo_5 ( TALLOC_CTX ctx,
SAM_DISPINFO_5 **  sam,
uint32  num_entries,
uint32  start_idx,
struct samr_displayentry entries 
)

parse_samr.c1982 行で定義されています。

参照先 samr_displayentry::account_nameinit_sam_entry5()init_string2().

参照元 _samr_query_dispinfo().

01985 {
01986         uint32 len_sam_name;
01987         uint32 i;
01988 
01989         DEBUG(5, ("init_sam_dispinfo_5: num_entries: %d\n", num_entries));
01990 
01991         if (num_entries==0)
01992                 return NT_STATUS_OK;
01993 
01994         *sam = TALLOC_ZERO_ARRAY(ctx, SAM_DISPINFO_5, num_entries);
01995         if (*sam == NULL)
01996                 return NT_STATUS_NO_MEMORY;
01997 
01998         if (!((*sam)->sam=TALLOC_ARRAY(ctx, SAM_ENTRY5, num_entries)))
01999                 return NT_STATUS_NO_MEMORY;
02000 
02001         if (!((*sam)->str=TALLOC_ARRAY(ctx, SAM_STR5, num_entries)))
02002                 return NT_STATUS_NO_MEMORY;
02003 
02004         for (i = 0; i < num_entries; i++) {
02005                 DEBUG(11, ("init_sam_dispinfo_5: entry: %d\n",i));
02006 
02007                 len_sam_name = strlen(entries[i].account_name);
02008           
02009                 init_sam_entry5(&(*sam)->sam[i], start_idx+i+1, len_sam_name);
02010                 init_string2(&(*sam)->str[i].grp_name, entries[i].account_name,
02011                              len_sam_name+1, len_sam_name);
02012         }
02013 
02014         return NT_STATUS_OK;
02015 }

static BOOL sam_io_sam_dispinfo_5 ( const char *  desc,
SAM_DISPINFO_5 sam,
uint32  num_entries,
prs_struct ps,
int  depth 
) [static]

parse_samr.c2021 行で定義されています。

参照先 STRHDR::buffersamr_str_entry_info5::grp_namesamr_entry_info5::hdr_grp_nameprs_debug()sam_entry_info_5::samsam_io_sam_entry5()smb_io_string2()sam_entry_info_5::str.

参照元 samr_io_r_query_dispinfo().

02024 {
02025         uint32 i;
02026 
02027         if (sam == NULL)
02028                 return False;
02029 
02030         prs_debug(ps, depth, desc, "sam_io_sam_dispinfo_5");
02031         depth++;
02032 
02033         if(!prs_align(ps))
02034                 return False;
02035 
02036         if (UNMARSHALLING(ps) && num_entries > 0) {
02037 
02038                 if ((sam->sam = PRS_ALLOC_MEM(ps, SAM_ENTRY5, num_entries)) == NULL) {
02039                         DEBUG(0, ("out of memory allocating SAM_ENTRY5\n"));
02040                         return False;
02041                 }
02042 
02043                 if ((sam->str = PRS_ALLOC_MEM(ps, SAM_STR5, num_entries)) == NULL) {
02044                         DEBUG(0, ("out of memory allocating SAM_STR5\n"));
02045                         return False;
02046                 }
02047         }
02048 
02049         for (i = 0; i < num_entries; i++) {
02050                 if(!sam_io_sam_entry5("", &sam->sam[i], ps, depth))
02051                         return False;
02052         }
02053 
02054         for (i = 0; i < num_entries; i++) {
02055                 if(!smb_io_string2("grp_name", &sam->str[i].grp_name,
02056                              sam->sam[i].hdr_grp_name.buffer, ps, depth))
02057                         return False;
02058         }
02059 
02060         return True;
02061 }

void init_samr_r_query_dispinfo ( SAMR_R_QUERY_DISPINFO r_u,
uint32  num_entries,
uint32  total_size,
uint32  data_size,
uint16  switch_level,
SAM_DISPINFO_CTR ctr,
NTSTATUS  status 
)

parse_samr.c2067 行で定義されています。

参照先 r_samr_query_dispinfo_info::ctrr_samr_query_dispinfo_info::data_sizer_samr_query_dispinfo_info::num_entriesr_samr_query_dispinfo_info::num_entries2r_samr_query_dispinfo_info::ptr_entriesstatusr_samr_query_dispinfo_info::statusr_samr_query_dispinfo_info::switch_levelr_samr_query_dispinfo_info::total_size.

参照元 _samr_query_dispinfo().

02071 {
02072         DEBUG(5, ("init_samr_r_query_dispinfo: level %d\n", switch_level));
02073 
02074         r_u->total_size = total_size;
02075 
02076         r_u->data_size = data_size;
02077 
02078         r_u->switch_level = switch_level;
02079         r_u->num_entries = num_entries;
02080 
02081         if (num_entries==0)
02082                 r_u->ptr_entries = 0;
02083         else
02084                 r_u->ptr_entries = 1;
02085 
02086         r_u->num_entries2 = num_entries;
02087         r_u->ctr = ctr;
02088 
02089         r_u->status = status;
02090 }

BOOL samr_io_r_query_dispinfo ( const char *  desc,
SAMR_R_QUERY_DISPINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2096 行で定義されています。

参照先 r_samr_query_dispinfo_info::ctrr_samr_query_dispinfo_info::data_sizesam_dispinfo_ctr_info::info1sam_dispinfo_ctr_info::info2sam_dispinfo_ctr_info::info3sam_dispinfo_ctr_info::info4sam_dispinfo_ctr_info::info5r_samr_query_dispinfo_info::num_entriesr_samr_query_dispinfo_info::num_entries2prs_debug()r_samr_query_dispinfo_info::ptr_entriessam_dispinfo_ctr_info::samsam_io_sam_dispinfo_1()sam_io_sam_dispinfo_2()sam_io_sam_dispinfo_3()sam_io_sam_dispinfo_4()sam_io_sam_dispinfo_5()r_samr_query_dispinfo_info::statusr_samr_query_dispinfo_info::switch_levelr_samr_query_dispinfo_info::total_size.

参照元 api_samr_query_dispinfo()rpccli_samr_query_dispinfo().

02098 {
02099         if (r_u == NULL)
02100                 return False;
02101 
02102         prs_debug(ps, depth, desc, "samr_io_r_query_dispinfo");
02103         depth++;
02104 
02105         if(!prs_align(ps))
02106                 return False;
02107 
02108         if(!prs_uint32("total_size  ", ps, depth, &r_u->total_size))
02109                 return False;
02110         if(!prs_uint32("data_size   ", ps, depth, &r_u->data_size))
02111                 return False;
02112         if(!prs_uint16("switch_level", ps, depth, &r_u->switch_level))
02113                 return False;
02114         if(!prs_align(ps))
02115                 return False;
02116 
02117         if(!prs_uint32("num_entries ", ps, depth, &r_u->num_entries))
02118                 return False;
02119         if(!prs_uint32("ptr_entries ", ps, depth, &r_u->ptr_entries))
02120                 return False;
02121 
02122         if (r_u->ptr_entries==0) {
02123                 if(!prs_align(ps))
02124                         return False;
02125                 if(!prs_ntstatus("status", ps, depth, &r_u->status))
02126                         return False;
02127 
02128                 return True;
02129         }
02130 
02131         if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2))
02132                 return False;
02133 
02134         switch (r_u->switch_level) {
02135         case 0x1:
02136                 if(!sam_io_sam_dispinfo_1("users", r_u->ctr->sam.info1,
02137                                 r_u->num_entries, ps, depth))
02138                         return False;
02139                 break;
02140         case 0x2:
02141                 if(!sam_io_sam_dispinfo_2("servers", r_u->ctr->sam.info2,
02142                                 r_u->num_entries, ps, depth))
02143                         return False;
02144                 break;
02145         case 0x3:
02146                 if(!sam_io_sam_dispinfo_3("groups", r_u->ctr->sam.info3,
02147                                     r_u->num_entries, ps, depth))
02148                         return False;
02149                 break;
02150         case 0x4:
02151                 if(!sam_io_sam_dispinfo_4("user list",
02152                                     r_u->ctr->sam.info4,
02153                                     r_u->num_entries, ps, depth))
02154                         return False;
02155                 break;
02156         case 0x5:
02157                 if(!sam_io_sam_dispinfo_5("group list",
02158                                     r_u->ctr->sam.info5,
02159                                     r_u->num_entries, ps, depth))
02160                         return False;
02161                 break;
02162         default:
02163                 DEBUG(0,("samr_io_r_query_dispinfo: unknown switch value\n"));
02164                 break;
02165         }
02166         
02167         if(!prs_align(ps))
02168                 return False;
02169         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02170                 return False;
02171 
02172         return True;
02173 }

void init_samr_q_get_dispenum_index ( SAMR_Q_GET_DISPENUM_INDEX q_e,
POLICY_HND pol,
uint16  switch_level,
const char *  name 
)

parse_samr.c2179 行で定義されています。

参照先 q_samr_get_dispenum_index::domain_polinit_lsa_string()q_samr_get_dispenum_index::namepolq_samr_get_dispenum_index::switch_level.

02181 {
02182         DEBUG(5, ("init_samr_q_get_dispenum_index\n"));
02183 
02184         q_e->domain_pol = *pol;
02185 
02186         q_e->switch_level = switch_level;
02187 
02188         init_lsa_string(&q_e->name, name);
02189 }

BOOL samr_io_q_get_dispenum_index ( const char *  desc,
SAMR_Q_GET_DISPENUM_INDEX q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2195 行で定義されています。

参照先 q_samr_get_dispenum_index::domain_polq_samr_get_dispenum_index::nameprs_debug()smb_io_lsa_string()smb_io_pol_hnd()q_samr_get_dispenum_index::switch_level.

参照元 api_samr_get_dispenum_index().

02197 {
02198         if (q_e == NULL)
02199                 return False;
02200 
02201         prs_debug(ps, depth, desc, "samr_io_q_get_dispenum_index");
02202         depth++;
02203 
02204         if(!prs_align(ps))
02205                 return False;
02206 
02207         if(!smb_io_pol_hnd("domain_pol", &q_e->domain_pol, ps, depth))
02208                 return False;
02209 
02210         if(!prs_uint16("switch_level", ps, depth, &q_e->switch_level))
02211                 return False;
02212 
02213         if (!smb_io_lsa_string("name", &q_e->name, ps, depth))
02214                 return False;
02215 
02216         return True;
02217 }

BOOL samr_io_r_get_dispenum_index ( const char *  desc,
SAMR_R_GET_DISPENUM_INDEX r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2223 行で定義されています。

参照先 r_samr_get_dispenum_index::idxprs_debug()r_samr_get_dispenum_index::status.

参照元 api_samr_get_dispenum_index().

02225 {
02226         if (r_u == NULL)
02227                 return False;
02228 
02229         prs_debug(ps, depth, desc, "samr_io_r_get_dispenum_index");
02230         depth++;
02231 
02232         if(!prs_align(ps))
02233                 return False;
02234 
02235         if(!prs_uint32("idx", ps, depth, &r_u->idx))
02236                 return False;
02237         
02238         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02239                 return False;
02240 
02241         return True;
02242 }

void init_samr_q_open_group ( SAMR_Q_OPEN_GROUP q_c,
POLICY_HND hnd,
uint32  access_mask,
uint32  rid 
)

parse_samr.c2249 行で定義されています。

参照先 q_samr_open_group_info::access_maskq_samr_open_group_info::domain_polq_samr_open_group_info::rid_group.

参照元 rpccli_samr_open_group().

02252 {
02253         DEBUG(5, ("init_samr_q_open_group\n"));
02254 
02255         q_c->domain_pol = *hnd;
02256         q_c->access_mask = access_mask;
02257         q_c->rid_group = rid;
02258 }

void init_samr_r_get_dispenum_index ( SAMR_R_GET_DISPENUM_INDEX q_e,
uint32  idx 
)

parse_samr.c2264 行で定義されています。

参照先 r_samr_get_dispenum_index::idx.

参照元 _samr_get_dispenum_index().

02265 {
02266         DEBUG(5, ("init_samr_r_get_dispenum_index\n"));
02267 
02268         q_e->idx = idx;
02269 }

BOOL samr_io_q_open_group ( const char *  desc,
SAMR_Q_OPEN_GROUP q_u,
prs_struct ps,
int  depth 
)

parse_samr.c2275 行で定義されています。

参照先 q_samr_open_group_info::access_maskq_samr_open_group_info::domain_polprs_debug()q_samr_open_group_info::rid_groupsmb_io_pol_hnd().

参照元 api_samr_open_group()rpccli_samr_open_group().

02277 {
02278         if (q_u == NULL)
02279                 return False;
02280 
02281         prs_debug(ps, depth, desc, "samr_io_q_open_group");
02282         depth++;
02283 
02284         if(!prs_align(ps))
02285                 return False;
02286 
02287         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
02288                 return False;
02289 
02290         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
02291                 return False;
02292         if(!prs_uint32("rid_group", ps, depth, &q_u->rid_group))
02293                 return False;
02294 
02295         return True;
02296 }

BOOL samr_io_r_open_group ( const char *  desc,
SAMR_R_OPEN_GROUP r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2302 行で定義されています。

参照先 r_samr_open_group_info::polprs_debug()smb_io_pol_hnd()r_samr_open_group_info::status.

参照元 api_samr_open_group()rpccli_samr_open_group().

02304 {
02305         if (r_u == NULL)
02306                 return False;
02307 
02308         prs_debug(ps, depth, desc, "samr_io_r_open_group");
02309         depth++;
02310 
02311         if(!prs_align(ps))
02312                 return False;
02313 
02314         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
02315                 return False;
02316 
02317         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02318                 return False;
02319 
02320         return True;
02321 }

void init_samr_group_info1 ( GROUP_INFO1 gr1,
char *  acct_name,
char *  acct_desc,
uint32  num_members 
)

parse_samr.c2327 行で定義されています。

参照先 samr_group_info1::group_attrsamr_group_info1::hdr_acct_descsamr_group_info1::hdr_acct_nameinit_uni_hdr()init_unistr2()samr_group_info1::num_memberssamr_group_info1::uni_acct_descsamr_group_info1::uni_acct_nameUNI_FLAGS_NONE.

参照元 _samr_query_groupinfo()cac_MakeGroupInfoCtr().

02330 {
02331         DEBUG(5, ("init_samr_group_info1\n"));
02332 
02333         gr1->group_attr = (SE_GROUP_MANDATORY|SE_GROUP_ENABLED_BY_DEFAULT); /* why not | SE_GROUP_ENABLED ? */
02334         gr1->num_members = num_members;
02335 
02336         init_unistr2(&gr1->uni_acct_name, acct_name, UNI_FLAGS_NONE);
02337         init_uni_hdr(&gr1->hdr_acct_name, &gr1->uni_acct_name);
02338         init_unistr2(&gr1->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
02339         init_uni_hdr(&gr1->hdr_acct_desc, &gr1->uni_acct_desc);
02340 }

BOOL samr_io_group_info1 ( const char *  desc,
GROUP_INFO1 gr1,
prs_struct ps,
int  depth 
)

parse_samr.c2346 行で定義されています。

参照先 UNIHDR::buffersamr_group_info1::group_attrsamr_group_info1::hdr_acct_descsamr_group_info1::hdr_acct_namesamr_group_info1::num_membersprs_debug()smb_io_unihdr()smb_io_unistr2()samr_group_info1::uni_acct_descsamr_group_info1::uni_acct_name.

参照元 samr_group_info_ctr().

02348 {
02349         uint16 dummy = 1;
02350 
02351         if (gr1 == NULL)
02352                 return False;
02353 
02354         prs_debug(ps, depth, desc, "samr_io_group_info1");
02355         depth++;
02356 
02357         if(!prs_uint16("level", ps, depth, &dummy))
02358                 return False;
02359 
02360         if(!prs_align(ps))
02361                 return False;
02362 
02363         if(!smb_io_unihdr("hdr_acct_name", &gr1->hdr_acct_name, ps, depth))
02364                 return False;
02365 
02366         if(!prs_uint32("group_attr", ps, depth, &gr1->group_attr))
02367                 return False;
02368         if(!prs_uint32("num_members", ps, depth, &gr1->num_members))
02369                 return False;
02370 
02371         if(!smb_io_unihdr("hdr_acct_desc", &gr1->hdr_acct_desc, ps, depth))
02372                 return False;
02373 
02374         if(!smb_io_unistr2("uni_acct_name", &gr1->uni_acct_name,
02375                            gr1->hdr_acct_name.buffer, ps, depth))
02376                 return False;
02377 
02378         if(!smb_io_unistr2("uni_acct_desc", &gr1->uni_acct_desc,
02379                            gr1->hdr_acct_desc.buffer, ps, depth))
02380                 return False;
02381 
02382         return True;
02383 }

void init_samr_group_info2 ( GROUP_INFO2 gr2,
const char *  acct_name 
)

parse_samr.c2389 行で定義されています。

参照先 samr_group_info2::hdr_acct_nameinit_uni_hdr()init_unistr2()samr_group_info2::levelsamr_group_info2::uni_acct_nameUNI_FLAGS_NONE.

参照元 _samr_query_groupinfo()cac_SamRenameGroup()rpc_group_rename_internals().

02390 {
02391         DEBUG(5, ("init_samr_group_info2\n"));
02392 
02393         gr2->level = 2;
02394         init_unistr2(&gr2->uni_acct_name, acct_name, UNI_FLAGS_NONE);
02395         init_uni_hdr(&gr2->hdr_acct_name, &gr2->uni_acct_name);
02396 }

BOOL samr_io_group_info2 ( const char *  desc,
GROUP_INFO2 gr2,
prs_struct ps,
int  depth 
)

parse_samr.c2402 行で定義されています。

参照先 UNIHDR::buffersamr_group_info2::hdr_acct_namesamr_group_info2::levelprs_debug()smb_io_unihdr()smb_io_unistr2()samr_group_info2::uni_acct_name.

参照元 samr_group_info_ctr().

02403 {
02404         if (gr2 == NULL)
02405                 return False;
02406 
02407         prs_debug(ps, depth, desc, "samr_io_group_info2");
02408         depth++;
02409 
02410         if(!prs_uint16("hdr_level", ps, depth, &gr2->level))
02411                 return False;
02412 
02413         if(!smb_io_unihdr("hdr_acct_name", &gr2->hdr_acct_name, ps, depth))
02414                 return False;
02415         if(!smb_io_unistr2("uni_acct_name", &gr2->uni_acct_name,
02416                            gr2->hdr_acct_name.buffer, ps, depth))
02417                 return False;
02418 
02419         return True;
02420 }

void init_samr_group_info3 ( GROUP_INFO3 gr3  ) 

parse_samr.c2426 行で定義されています。

参照先 samr_group_info3::group_attr.

参照元 _samr_query_groupinfo().

02427 {
02428         DEBUG(5, ("init_samr_group_info3\n"));
02429 
02430         gr3->group_attr = (SE_GROUP_MANDATORY|SE_GROUP_ENABLED_BY_DEFAULT); /* why not | SE_GROUP_ENABLED ? */
02431 }

BOOL samr_io_group_info3 ( const char *  desc,
GROUP_INFO3 gr3,
prs_struct ps,
int  depth 
)

parse_samr.c2437 行で定義されています。

参照先 samr_group_info3::group_attrprs_debug().

参照元 samr_group_info_ctr().

02438 {
02439         if (gr3 == NULL)
02440                 return False;
02441 
02442         prs_debug(ps, depth, desc, "samr_io_group_info3");
02443         depth++;
02444 
02445         if(!prs_align(ps))
02446                 return False;
02447 
02448         if(!prs_uint32("group_attr", ps, depth, &gr3->group_attr))
02449                 return False;
02450 
02451         return True;
02452 }

void init_samr_group_info4 ( GROUP_INFO4 gr4,
const char *  acct_desc 
)

parse_samr.c2458 行で定義されています。

参照先 samr_group_info4::hdr_acct_descinit_uni_hdr()init_unistr2()samr_group_info4::levelsamr_group_info4::uni_acct_descUNI_FLAGS_NONE.

参照元 _samr_query_groupinfo()rpc_group_add_internals().

02459 {
02460         DEBUG(5, ("init_samr_group_info4\n"));
02461 
02462         gr4->level = 4;
02463         init_unistr2(&gr4->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
02464         init_uni_hdr(&gr4->hdr_acct_desc, &gr4->uni_acct_desc);
02465 }

BOOL samr_io_group_info4 ( const char *  desc,
GROUP_INFO4 gr4,
prs_struct ps,
int  depth 
)

parse_samr.c2471 行で定義されています。

参照先 UNIHDR::buffersamr_group_info4::hdr_acct_descsamr_group_info4::levelprs_debug()smb_io_unihdr()smb_io_unistr2()samr_group_info4::uni_acct_desc.

参照元 samr_group_info_ctr().

02473 {
02474         if (gr4 == NULL)
02475                 return False;
02476 
02477         prs_debug(ps, depth, desc, "samr_io_group_info4");
02478         depth++;
02479 
02480         if(!prs_uint16("hdr_level", ps, depth, &gr4->level))
02481                 return False;
02482         if(!smb_io_unihdr("hdr_acct_desc", &gr4->hdr_acct_desc, ps, depth))
02483                 return False;
02484         if(!smb_io_unistr2("uni_acct_desc", &gr4->uni_acct_desc,
02485                            gr4->hdr_acct_desc.buffer, ps, depth))
02486                 return False;
02487 
02488         return True;
02489 }

void init_samr_group_info5 ( GROUP_INFO5 gr5,
char *  acct_name,
char *  acct_desc,
uint32  num_members 
)

parse_samr.c2495 行で定義されています。

参照先 samr_group_info5::group_attrsamr_group_info5::hdr_acct_descsamr_group_info5::hdr_acct_nameinit_uni_hdr()init_unistr2()samr_group_info5::num_memberssamr_group_info5::uni_acct_descsamr_group_info5::uni_acct_nameUNI_FLAGS_NONE.

参照元 _samr_query_groupinfo().

02498 {
02499         DEBUG(5, ("init_samr_group_info5\n"));
02500 
02501         gr5->group_attr = (SE_GROUP_MANDATORY|SE_GROUP_ENABLED_BY_DEFAULT); /* why not | SE_GROUP_ENABLED ? */
02502         gr5->num_members = num_members;
02503 
02504         init_unistr2(&gr5->uni_acct_name, acct_name, UNI_FLAGS_NONE);
02505         init_uni_hdr(&gr5->hdr_acct_name, &gr5->uni_acct_name);
02506         init_unistr2(&gr5->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
02507         init_uni_hdr(&gr5->hdr_acct_desc, &gr5->uni_acct_desc);
02508 }

BOOL samr_io_group_info5 ( const char *  desc,
GROUP_INFO5 gr5,
prs_struct ps,
int  depth 
)

parse_samr.c2514 行で定義されています。

参照先 UNIHDR::buffersamr_group_info5::group_attrsamr_group_info5::hdr_acct_descsamr_group_info5::hdr_acct_namesamr_group_info5::num_membersprs_debug()smb_io_unihdr()smb_io_unistr2()samr_group_info5::uni_acct_descsamr_group_info5::uni_acct_name.

参照元 samr_group_info_ctr().

02516 {
02517         uint16 dummy = 1;
02518 
02519         if (gr5 == NULL)
02520                 return False;
02521 
02522         prs_debug(ps, depth, desc, "samr_io_group_info5");
02523         depth++;
02524 
02525         if(!prs_uint16("level", ps, depth, &dummy))
02526                 return False;
02527 
02528         if(!prs_align(ps))
02529                 return False;
02530 
02531         if(!smb_io_unihdr("hdr_acct_name", &gr5->hdr_acct_name, ps, depth))
02532                 return False;
02533 
02534         if(!prs_uint32("group_attr", ps, depth, &gr5->group_attr))
02535                 return False;
02536         if(!prs_uint32("num_members", ps, depth, &gr5->num_members))
02537                 return False;
02538 
02539         if(!smb_io_unihdr("hdr_acct_desc", &gr5->hdr_acct_desc, ps, depth))
02540                 return False;
02541 
02542         if(!smb_io_unistr2("uni_acct_name", &gr5->uni_acct_name,
02543                            gr5->hdr_acct_name.buffer, ps, depth))
02544                 return False;
02545 
02546         if(!smb_io_unistr2("uni_acct_desc", &gr5->uni_acct_desc,
02547                            gr5->hdr_acct_desc.buffer, ps, depth))
02548                 return False;
02549 
02550         return True;
02551 }

static BOOL samr_group_info_ctr ( const char *  desc,
GROUP_INFO_CTR **  ctr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c2558 行で定義されています。

参照先 prs_debug()samr_io_group_info1()samr_io_group_info2()samr_io_group_info3()samr_io_group_info4()samr_io_group_info5().

参照元 samr_io_q_set_groupinfo()samr_io_r_query_groupinfo().

02560 {
02561         if (UNMARSHALLING(ps))
02562                 *ctr = PRS_ALLOC_MEM(ps,GROUP_INFO_CTR,1);
02563 
02564         if (*ctr == NULL)
02565                 return False;
02566 
02567         prs_debug(ps, depth, desc, "samr_group_info_ctr");
02568         depth++;
02569 
02570         if(!prs_uint16("switch_value1", ps, depth, &(*ctr)->switch_value1))
02571                 return False;
02572 
02573         switch ((*ctr)->switch_value1) {
02574         case 1:
02575                 if(!samr_io_group_info1("group_info1", &(*ctr)->group.info1, ps, depth))
02576                         return False;
02577                 break;
02578         case 2:
02579                 if(!samr_io_group_info2("group_info2", &(*ctr)->group.info2, ps, depth))
02580                         return False;
02581                 break;
02582         case 3:
02583                 if(!samr_io_group_info3("group_info3", &(*ctr)->group.info3, ps, depth))
02584                         return False;
02585                 break;
02586         case 4:
02587                 if(!samr_io_group_info4("group_info4", &(*ctr)->group.info4, ps, depth))
02588                         return False;
02589                 break;
02590         case 5:
02591                 if(!samr_io_group_info5("group_info5", &(*ctr)->group.info5, ps, depth))
02592                         return False;
02593                 break;
02594         default:
02595                 DEBUG(0,("samr_group_info_ctr: unsupported switch level\n"));
02596                 break;
02597         }
02598 
02599         return True;
02600 }

void init_samr_q_create_dom_group ( SAMR_Q_CREATE_DOM_GROUP q_e,
POLICY_HND pol,
const char *  acct_desc,
uint32  access_mask 
)

parse_samr.c2606 行で定義されています。

参照先 q_samr_create_dom_group_info::access_maskq_samr_create_dom_group_info::hdr_acct_descinit_uni_hdr()init_unistr2()polq_samr_create_dom_group_info::polq_samr_create_dom_group_info::uni_acct_descUNI_FLAGS_NONE.

参照元 rpccli_samr_create_dom_group().

02609 {
02610         DEBUG(5, ("init_samr_q_create_dom_group\n"));
02611 
02612         q_e->pol = *pol;
02613 
02614         init_unistr2(&q_e->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
02615         init_uni_hdr(&q_e->hdr_acct_desc, &q_e->uni_acct_desc);
02616 
02617         q_e->access_mask = access_mask;
02618 }

BOOL samr_io_q_create_dom_group ( const char *  desc,
SAMR_Q_CREATE_DOM_GROUP q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2624 行で定義されています。

参照先 q_samr_create_dom_group_info::access_maskUNIHDR::bufferq_samr_create_dom_group_info::hdr_acct_descq_samr_create_dom_group_info::polprs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()q_samr_create_dom_group_info::uni_acct_desc.

参照元 api_samr_create_dom_group()rpccli_samr_create_dom_group().

02626 {
02627         if (q_e == NULL)
02628                 return False;
02629 
02630         prs_debug(ps, depth, desc, "samr_io_q_create_dom_group");
02631         depth++;
02632 
02633         if(!prs_align(ps))
02634                 return False;
02635 
02636         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
02637                 return False;
02638 
02639         if(!smb_io_unihdr("hdr_acct_desc", &q_e->hdr_acct_desc, ps, depth))
02640                 return False;
02641         if(!smb_io_unistr2("uni_acct_desc", &q_e->uni_acct_desc,
02642                        q_e->hdr_acct_desc.buffer, ps, depth))
02643                 return False;
02644 
02645         if(!prs_align(ps))
02646                 return False;
02647         if(!prs_uint32("access", ps, depth, &q_e->access_mask))
02648                 return False;
02649 
02650         return True;
02651 }

BOOL samr_io_r_create_dom_group ( const char *  desc,
SAMR_R_CREATE_DOM_GROUP r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2657 行で定義されています。

参照先 r_samr_create_dom_group_info::polprs_debug()r_samr_create_dom_group_info::ridsmb_io_pol_hnd()r_samr_create_dom_group_info::status.

参照元 api_samr_create_dom_group()rpccli_samr_create_dom_group().

02659 {
02660         if (r_u == NULL)
02661                 return False;
02662 
02663         prs_debug(ps, depth, desc, "samr_io_r_create_dom_group");
02664         depth++;
02665 
02666         if(!prs_align(ps))
02667                 return False;
02668 
02669         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
02670                 return False;
02671 
02672         if(!prs_uint32("rid   ", ps, depth, &r_u->rid))
02673                 return False;
02674         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02675                 return False;
02676 
02677         return True;
02678 }

void init_samr_q_delete_dom_group ( SAMR_Q_DELETE_DOM_GROUP q_c,
POLICY_HND hnd 
)

parse_samr.c2684 行で定義されています。

参照先 q_samr_delete_dom_group_info::group_pol.

参照元 rpccli_samr_delete_dom_group().

02686 {
02687         DEBUG(5, ("init_samr_q_delete_dom_group\n"));
02688 
02689         q_c->group_pol = *hnd;
02690 }

BOOL samr_io_q_delete_dom_group ( const char *  desc,
SAMR_Q_DELETE_DOM_GROUP q_u,
prs_struct ps,
int  depth 
)

parse_samr.c2696 行で定義されています。

参照先 q_samr_delete_dom_group_info::group_polprs_debug()smb_io_pol_hnd().

参照元 api_samr_delete_dom_group()rpccli_samr_delete_dom_group().

02698 {
02699         if (q_u == NULL)
02700                 return False;
02701 
02702         prs_debug(ps, depth, desc, "samr_io_q_delete_dom_group");
02703         depth++;
02704 
02705         if(!prs_align(ps))
02706                 return False;
02707 
02708         if(!smb_io_pol_hnd("group_pol", &q_u->group_pol, ps, depth))
02709                 return False;
02710 
02711         return True;
02712 }

BOOL samr_io_r_delete_dom_group ( const char *  desc,
SAMR_R_DELETE_DOM_GROUP r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2718 行で定義されています。

参照先 r_samr_delete_dom_group_info::polprs_debug()smb_io_pol_hnd()r_samr_delete_dom_group_info::status.

参照元 api_samr_delete_dom_group()rpccli_samr_delete_dom_group().

02720 {
02721         if (r_u == NULL)
02722                 return False;
02723 
02724         prs_debug(ps, depth, desc, "samr_io_r_delete_dom_group");
02725         depth++;
02726 
02727         if(!prs_align(ps))
02728                 return False;
02729 
02730         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
02731                 return False;
02732 
02733         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02734                 return False;
02735 
02736         return True;
02737 }

void init_samr_q_del_groupmem ( SAMR_Q_DEL_GROUPMEM q_e,
POLICY_HND pol,
uint32  rid 
)

parse_samr.c2743 行で定義されています。

参照先 polq_samr_del_group_mem_info::polq_samr_del_group_mem_info::rid.

参照元 rpccli_samr_del_groupmem().

02745 {
02746         DEBUG(5, ("init_samr_q_del_groupmem\n"));
02747 
02748         q_e->pol = *pol;
02749         q_e->rid = rid;
02750 }

BOOL samr_io_q_del_groupmem ( const char *  desc,
SAMR_Q_DEL_GROUPMEM q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2756 行で定義されています。

参照先 q_samr_del_group_mem_info::polprs_debug()q_samr_del_group_mem_info::ridsmb_io_pol_hnd().

参照元 api_samr_del_groupmem()rpccli_samr_del_groupmem().

02758 {
02759         if (q_e == NULL)
02760                 return False;
02761 
02762         prs_debug(ps, depth, desc, "samr_io_q_del_groupmem");
02763         depth++;
02764 
02765         if(!prs_align(ps))
02766                 return False;
02767 
02768         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
02769                 return False;
02770 
02771         if(!prs_uint32("rid", ps, depth, &q_e->rid))
02772                 return False;
02773 
02774         return True;
02775 }

void init_samr_r_del_groupmem ( SAMR_R_DEL_GROUPMEM r_u,
POLICY_HND pol,
NTSTATUS  status 
)

parse_samr.c2781 行で定義されています。

参照先 statusr_samr_del_group_mem_info::status.

02783 {
02784         DEBUG(5, ("init_samr_r_del_groupmem\n"));
02785 
02786         r_u->status = status;
02787 }

BOOL samr_io_r_del_groupmem ( const char *  desc,
SAMR_R_DEL_GROUPMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2793 行で定義されています。

参照先 prs_debug()r_samr_del_group_mem_info::status.

参照元 api_samr_del_groupmem()rpccli_samr_del_groupmem().

02795 {
02796         if (r_u == NULL)
02797                 return False;
02798 
02799         prs_debug(ps, depth, desc, "samr_io_r_del_groupmem");
02800         depth++;
02801 
02802         if(!prs_align(ps))
02803                 return False;
02804 
02805         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02806                 return False;
02807 
02808         return True;
02809 }

void init_samr_q_add_groupmem ( SAMR_Q_ADD_GROUPMEM q_e,
POLICY_HND pol,
uint32  rid 
)

parse_samr.c2815 行で定義されています。

参照先 polq_samr_add_group_mem_info::polq_samr_add_group_mem_info::ridq_samr_add_group_mem_info::unknown.

参照元 rpccli_samr_add_groupmem().

02817 {
02818         DEBUG(5, ("init_samr_q_add_groupmem\n"));
02819 
02820         q_e->pol = *pol;
02821         q_e->rid = rid;
02822         q_e->unknown = 0x0005;
02823 }

BOOL samr_io_q_add_groupmem ( const char *  desc,
SAMR_Q_ADD_GROUPMEM q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2829 行で定義されています。

参照先 q_samr_add_group_mem_info::polprs_debug()q_samr_add_group_mem_info::ridsmb_io_pol_hnd()q_samr_add_group_mem_info::unknown.

参照元 api_samr_add_groupmem()rpccli_samr_add_groupmem().

02831 {
02832         if (q_e == NULL)
02833                 return False;
02834 
02835         prs_debug(ps, depth, desc, "samr_io_q_add_groupmem");
02836         depth++;
02837 
02838         if(!prs_align(ps))
02839                 return False;
02840 
02841         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
02842                 return False;
02843 
02844         if(!prs_uint32("rid    ", ps, depth, &q_e->rid))
02845                 return False;
02846         if(!prs_uint32("unknown", ps, depth, &q_e->unknown))
02847                 return False;
02848 
02849         return True;
02850 }

void init_samr_r_add_groupmem ( SAMR_R_ADD_GROUPMEM r_u,
POLICY_HND pol,
NTSTATUS  status 
)

parse_samr.c2856 行で定義されています。

参照先 statusr_samr_add_group_mem_info::status.

02858 {
02859         DEBUG(5, ("init_samr_r_add_groupmem\n"));
02860 
02861         r_u->status = status;
02862 }

BOOL samr_io_r_add_groupmem ( const char *  desc,
SAMR_R_ADD_GROUPMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2868 行で定義されています。

参照先 prs_debug()r_samr_add_group_mem_info::status.

参照元 api_samr_add_groupmem()rpccli_samr_add_groupmem().

02870 {
02871         if (r_u == NULL)
02872                 return False;
02873 
02874         prs_debug(ps, depth, desc, "samr_io_r_add_groupmem");
02875         depth++;
02876 
02877         if(!prs_align(ps))
02878                 return False;
02879 
02880         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02881                 return False;
02882 
02883         return True;
02884 }

void init_samr_q_set_groupinfo ( SAMR_Q_SET_GROUPINFO q_e,
POLICY_HND pol,
GROUP_INFO_CTR ctr 
)

parse_samr.c2890 行で定義されています。

参照先 q_samr_set_group_info::ctrpolq_samr_set_group_info::pol.

参照元 rpccli_samr_set_groupinfo().

02892 {
02893         DEBUG(5, ("init_samr_q_set_groupinfo\n"));
02894 
02895         q_e->pol = *pol;
02896         q_e->ctr = ctr;
02897 }

BOOL samr_io_q_set_groupinfo ( const char *  desc,
SAMR_Q_SET_GROUPINFO q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2903 行で定義されています。

参照先 q_samr_set_group_info::ctrq_samr_set_group_info::polprs_debug()samr_group_info_ctr()smb_io_pol_hnd().

参照元 api_samr_set_groupinfo()rpccli_samr_set_groupinfo().

02905 {
02906         if (q_e == NULL)
02907                 return False;
02908 
02909         prs_debug(ps, depth, desc, "samr_io_q_set_groupinfo");
02910         depth++;
02911 
02912         if(!prs_align(ps))
02913                 return False;
02914 
02915         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
02916                 return False;
02917         
02918         if(!samr_group_info_ctr("ctr", &q_e->ctr, ps, depth))
02919                 return False;
02920 
02921         return True;
02922 }

void init_samr_r_set_groupinfo ( SAMR_R_SET_GROUPINFO r_u,
NTSTATUS  status 
)

parse_samr.c2928 行で定義されています。

参照先 statusr_samr_set_group_info::status.

02929 {
02930         DEBUG(5, ("init_samr_r_set_groupinfo\n"));
02931 
02932         r_u->status = status;
02933 }

BOOL samr_io_r_set_groupinfo ( const char *  desc,
SAMR_R_SET_GROUPINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c2939 行で定義されています。

参照先 prs_debug()r_samr_set_group_info::status.

参照元 api_samr_set_groupinfo()rpccli_samr_set_groupinfo().

02941 {
02942         if (r_u == NULL)
02943                 return False;
02944 
02945         prs_debug(ps, depth, desc, "samr_io_r_set_groupinfo");
02946         depth++;
02947 
02948         if(!prs_align(ps))
02949                 return False;
02950 
02951         if(!prs_ntstatus("status", ps, depth, &r_u->status))
02952                 return False;
02953 
02954         return True;
02955 }

void init_samr_q_query_groupinfo ( SAMR_Q_QUERY_GROUPINFO q_e,
POLICY_HND pol,
uint16  switch_level 
)

parse_samr.c2961 行で定義されています。

参照先 polq_samr_query_group_info::polq_samr_query_group_info::switch_level.

参照元 rpccli_samr_query_groupinfo().

02963 {
02964         DEBUG(5, ("init_samr_q_query_groupinfo\n"));
02965 
02966         q_e->pol = *pol;
02967 
02968         q_e->switch_level = switch_level;
02969 }

BOOL samr_io_q_query_groupinfo ( const char *  desc,
SAMR_Q_QUERY_GROUPINFO q_e,
prs_struct ps,
int  depth 
)

parse_samr.c2975 行で定義されています。

参照先 q_samr_query_group_info::polprs_debug()smb_io_pol_hnd()q_samr_query_group_info::switch_level.

参照元 api_samr_query_groupinfo()rpccli_samr_query_groupinfo().

02977 {
02978         if (q_e == NULL)
02979                 return False;
02980 
02981         prs_debug(ps, depth, desc, "samr_io_q_query_groupinfo");
02982         depth++;
02983 
02984         if(!prs_align(ps))
02985                 return False;
02986 
02987         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
02988                 return False;
02989 
02990         if(!prs_uint16("switch_level", ps, depth, &q_e->switch_level))
02991                 return False;
02992 
02993         return True;
02994 }

void init_samr_r_query_groupinfo ( SAMR_R_QUERY_GROUPINFO r_u,
GROUP_INFO_CTR ctr,
NTSTATUS  status 
)

parse_samr.c3000 行で定義されています。

参照先 r_samr_query_groupinfo_info::ctrr_samr_query_groupinfo_info::ptrr_samr_query_groupinfo_info::statusstatus.

参照元 _samr_query_groupinfo().

03002 {
03003         DEBUG(5, ("init_samr_r_query_groupinfo\n"));
03004 
03005         r_u->ptr = (NT_STATUS_IS_OK(status) && ctr != NULL) ? 1 : 0;
03006         r_u->ctr = ctr;
03007         r_u->status = status;
03008 }

BOOL samr_io_r_query_groupinfo ( const char *  desc,
SAMR_R_QUERY_GROUPINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3014 行で定義されています。

参照先 r_samr_query_groupinfo_info::ctrprs_debug()r_samr_query_groupinfo_info::ptrsamr_group_info_ctr()r_samr_query_groupinfo_info::status.

参照元 api_samr_query_groupinfo()rpccli_samr_query_groupinfo().

03016 {
03017         if (r_u == NULL)
03018                 return False;
03019 
03020         prs_debug(ps, depth, desc, "samr_io_r_query_groupinfo");
03021         depth++;
03022 
03023         if(!prs_align(ps))
03024                 return False;
03025 
03026         if(!prs_uint32("ptr", ps, depth, &r_u->ptr))
03027                 return False;
03028 
03029         if (r_u->ptr != 0) {
03030                 if(!samr_group_info_ctr("ctr", &r_u->ctr, ps, depth))
03031                         return False;
03032         }
03033 
03034         if(!prs_align(ps))
03035                 return False;
03036         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03037                 return False;
03038 
03039         return True;
03040 }

void init_samr_q_query_groupmem ( SAMR_Q_QUERY_GROUPMEM q_c,
POLICY_HND hnd 
)

parse_samr.c3046 行で定義されています。

参照先 q_samr_query_groupmem_info::group_pol.

参照元 rpccli_samr_query_groupmem().

03047 {
03048         DEBUG(5, ("init_samr_q_query_groupmem\n"));
03049 
03050         q_c->group_pol = *hnd;
03051 }

BOOL samr_io_q_query_groupmem ( const char *  desc,
SAMR_Q_QUERY_GROUPMEM q_u,
prs_struct ps,
int  depth 
)

parse_samr.c3057 行で定義されています。

参照先 q_samr_query_groupmem_info::group_polprs_debug()smb_io_pol_hnd().

参照元 api_samr_query_groupmem()rpccli_samr_query_groupmem().

03059 {
03060         if (q_u == NULL)
03061                 return False;
03062 
03063         prs_debug(ps, depth, desc, "samr_io_q_query_groupmem");
03064         depth++;
03065 
03066         if(!prs_align(ps))
03067                 return False;
03068 
03069         if(!smb_io_pol_hnd("group_pol", &q_u->group_pol, ps, depth))
03070                 return False;
03071 
03072         return True;
03073 }

void init_samr_r_query_groupmem ( SAMR_R_QUERY_GROUPMEM r_u,
uint32  num_entries,
uint32 *  rid,
uint32 *  attr,
NTSTATUS  status 
)

parse_samr.c3079 行で定義されています。

参照先 r_samr_query_groupmem_info::attrr_samr_query_groupmem_info::num_attrsr_samr_query_groupmem_info::num_entriesr_samr_query_groupmem_info::num_ridsr_samr_query_groupmem_info::ptrr_samr_query_groupmem_info::ptr_attrsr_samr_query_groupmem_info::ptr_ridsr_samr_query_groupmem_info::ridr_samr_query_groupmem_info::statusstatus.

参照元 _samr_query_groupmem().

03082 {
03083         DEBUG(5, ("init_samr_r_query_groupmem\n"));
03084 
03085         if (NT_STATUS_IS_OK(status)) {
03086                 r_u->ptr = 1;
03087                 r_u->num_entries = num_entries;
03088 
03089                 r_u->ptr_attrs = attr != NULL ? 1 : 0;
03090                 r_u->ptr_rids = rid != NULL ? 1 : 0;
03091 
03092                 r_u->num_rids = num_entries;
03093                 r_u->rid = rid;
03094 
03095                 r_u->num_attrs = num_entries;
03096                 r_u->attr = attr;
03097         } else {
03098                 r_u->ptr = 0;
03099                 r_u->num_entries = 0;
03100         }
03101 
03102         r_u->status = status;
03103 }

BOOL samr_io_r_query_groupmem ( const char *  desc,
SAMR_R_QUERY_GROUPMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3109 行で定義されています。

参照先 prs_debug().

参照元 api_samr_query_groupmem()rpccli_samr_query_groupmem().

03111 {
03112         uint32 i;
03113 
03114         if (r_u == NULL)
03115                 return False;
03116 
03117         if (UNMARSHALLING(ps))
03118                 ZERO_STRUCTP(r_u);
03119 
03120         prs_debug(ps, depth, desc, "samr_io_r_query_groupmem");
03121         depth++;
03122 
03123         if(!prs_align(ps))
03124                 return False;
03125 
03126         if(!prs_uint32("ptr", ps, depth, &r_u->ptr))
03127                 return False;
03128         if(!prs_uint32("num_entries ", ps, depth, &r_u->num_entries))
03129                 return False;
03130 
03131         if (r_u->ptr != 0) {
03132                 if(!prs_uint32("ptr_rids ", ps, depth, &r_u->ptr_rids))
03133                         return False;
03134                 if(!prs_uint32("ptr_attrs", ps, depth, &r_u->ptr_attrs))
03135                         return False;
03136 
03137                 if (r_u->ptr_rids != 0) {
03138                         if(!prs_uint32("num_rids", ps, depth, &r_u->num_rids))
03139                                 return False;
03140                         if (UNMARSHALLING(ps) && r_u->num_rids != 0) {
03141                                 r_u->rid = PRS_ALLOC_MEM(ps,uint32,r_u->num_rids);
03142                                 if (r_u->rid == NULL)
03143                                         return False;
03144                         }
03145 
03146                         for (i = 0; i < r_u->num_rids; i++) {
03147                                 if(!prs_uint32("", ps, depth, &r_u->rid[i]))
03148                                         return False;
03149                         }
03150                 }
03151 
03152                 if (r_u->ptr_attrs != 0) {
03153                         if(!prs_uint32("num_attrs", ps, depth, &r_u->num_attrs))
03154                                 return False;
03155 
03156                         if (UNMARSHALLING(ps) && r_u->num_attrs != 0) {
03157                                 r_u->attr = PRS_ALLOC_MEM(ps,uint32,r_u->num_attrs);
03158                                 if (r_u->attr == NULL)
03159                                         return False;
03160                         }
03161 
03162                         for (i = 0; i < r_u->num_attrs; i++) {
03163                                 if(!prs_uint32("", ps, depth, &r_u->attr[i]))
03164                                         return False;
03165                         }
03166                 }
03167         }
03168 
03169         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03170                 return False;
03171 
03172         return True;
03173 }

void init_samr_q_query_usergroups ( SAMR_Q_QUERY_USERGROUPS q_u,
POLICY_HND hnd 
)

parse_samr.c3179 行で定義されています。

参照先 q_samr_query_usergroup_info::pol.

参照元 rpccli_samr_query_usergroups().

03181 {
03182         DEBUG(5, ("init_samr_q_query_usergroups\n"));
03183 
03184         q_u->pol = *hnd;
03185 }

BOOL samr_io_q_query_usergroups ( const char *  desc,
SAMR_Q_QUERY_USERGROUPS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c3191 行で定義されています。

参照先 q_samr_query_usergroup_info::polprs_debug()smb_io_pol_hnd().

参照元 api_samr_query_usergroups()rpccli_samr_query_usergroups().

03193 {
03194         if (q_u == NULL)
03195                 return False;
03196 
03197         prs_debug(ps, depth, desc, "samr_io_q_query_usergroups");
03198         depth++;
03199 
03200         if(!prs_align(ps))
03201                 return False;
03202 
03203         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
03204                 return False;
03205 
03206         return True;
03207 }

void init_samr_r_query_usergroups ( SAMR_R_QUERY_USERGROUPS r_u,
uint32  num_gids,
DOM_GID gid,
NTSTATUS  status 
)

parse_samr.c3213 行で定義されています。

参照先 r_samr_query_usergroup_info::gidr_samr_query_usergroup_info::num_entriesr_samr_query_usergroup_info::num_entries2r_samr_query_usergroup_info::ptr_0r_samr_query_usergroup_info::ptr_1r_samr_query_usergroup_info::statusstatus.

03216 {
03217         DEBUG(5, ("init_samr_r_query_usergroups\n"));
03218 
03219         if (NT_STATUS_IS_OK(status)) {
03220                 r_u->ptr_0 = 1;
03221                 r_u->num_entries = num_gids;
03222                 r_u->ptr_1 = (num_gids != 0) ? 1 : 0;
03223                 r_u->num_entries2 = num_gids;
03224 
03225                 r_u->gid = gid;
03226         } else {
03227                 r_u->ptr_0 = 0;
03228                 r_u->num_entries = 0;
03229                 r_u->ptr_1 = 0;
03230                 r_u->gid = NULL;
03231         }
03232 
03233         r_u->status = status;
03234 }

BOOL samr_io_gids ( const char *  desc,
uint32 *  num_gids,
DOM_GID **  gid,
prs_struct ps,
int  depth 
)

parse_samr.c3240 行で定義されています。

参照先 prs_debug()smb_io_gid().

参照元 samr_io_r_query_usergroups().

03242 {
03243         uint32 i;
03244         if (gid == NULL)
03245                 return False;
03246 
03247         prs_debug(ps, depth, desc, "samr_io_gids");
03248         depth++;
03249 
03250         if(!prs_align(ps))
03251                 return False;
03252 
03253         if(!prs_uint32("num_gids", ps, depth, num_gids))
03254                 return False;
03255 
03256         if ((*num_gids) != 0) {
03257                 if (UNMARSHALLING(ps)) {
03258                         (*gid) = PRS_ALLOC_MEM(ps,DOM_GID,*num_gids);
03259                 }
03260 
03261                 if ((*gid) == NULL) {
03262                         return False;
03263                 }
03264 
03265                 for (i = 0; i < (*num_gids); i++) {
03266                         if(!smb_io_gid("gids", &(*gid)[i], ps, depth))
03267                                 return False;
03268                 }
03269         }
03270 
03271         return True;
03272 }

BOOL samr_io_r_query_usergroups ( const char *  desc,
SAMR_R_QUERY_USERGROUPS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3278 行で定義されています。

参照先 r_samr_query_usergroup_info::gidr_samr_query_usergroup_info::num_entriesr_samr_query_usergroup_info::num_entries2prs_debug()r_samr_query_usergroup_info::ptr_0r_samr_query_usergroup_info::ptr_1samr_io_gids()r_samr_query_usergroup_info::status.

参照元 api_samr_query_usergroups()rpccli_samr_query_usergroups().

03280 {
03281         if (r_u == NULL)
03282                 return False;
03283 
03284         prs_debug(ps, depth, desc, "samr_io_r_query_usergroups");
03285         depth++;
03286 
03287         if(!prs_align(ps))
03288                 return False;
03289 
03290         if(!prs_uint32("ptr_0       ", ps, depth, &r_u->ptr_0))
03291                 return False;
03292 
03293         if (r_u->ptr_0 != 0) {
03294                 if(!prs_uint32("num_entries ", ps, depth, &r_u->num_entries))
03295                         return False;
03296                 if(!prs_uint32("ptr_1       ", ps, depth, &r_u->ptr_1))
03297                         return False;
03298 
03299                 if (r_u->num_entries != 0 && r_u->ptr_1 != 0) {
03300                         if(!samr_io_gids("gids", &r_u->num_entries2, &r_u->gid, ps, depth))
03301                                 return False;
03302                 }
03303         }
03304 
03305         if(!prs_align(ps))
03306                 return False;
03307         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03308           return False;
03309 
03310         return True;
03311 }

void init_samr_q_enum_domains ( SAMR_Q_ENUM_DOMAINS q_e,
POLICY_HND pol,
uint32  start_idx,
uint32  size 
)

parse_samr.c3317 行で定義されています。

参照先 q_samr_enum_domains_info::max_sizepolq_samr_enum_domains_info::polq_samr_enum_domains_info::start_idx.

03320 {
03321         DEBUG(5, ("init_samr_q_enum_domains\n"));
03322 
03323         q_e->pol = *pol;
03324 
03325         q_e->start_idx = start_idx;
03326         q_e->max_size = size;
03327 }

BOOL samr_io_q_enum_domains ( const char *  desc,
SAMR_Q_ENUM_DOMAINS q_e,
prs_struct ps,
int  depth 
)

parse_samr.c3333 行で定義されています。

参照先 q_samr_enum_domains_info::max_sizeq_samr_enum_domains_info::polprs_debug()smb_io_pol_hnd()q_samr_enum_domains_info::start_idx.

参照元 api_samr_enum_domains().

03335 {
03336         if (q_e == NULL)
03337                 return False;
03338 
03339         prs_debug(ps, depth, desc, "samr_io_q_enum_domains");
03340         depth++;
03341 
03342         if(!prs_align(ps))
03343                 return False;
03344 
03345         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
03346                 return False;
03347 
03348         if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx))
03349                 return False;
03350         if(!prs_uint32("max_size ", ps, depth, &q_e->max_size))
03351                 return False;
03352 
03353         return True;
03354 }

void init_samr_r_enum_domains ( SAMR_R_ENUM_DOMAINS r_u,
uint32  next_idx,
uint32  num_sam_entries 
)

parse_samr.c3360 行で定義されています。

参照先 r_samr_enum_domains_info::next_idxr_samr_enum_domains_info::num_entries2r_samr_enum_domains_info::num_entries3r_samr_enum_domains_info::num_entries4r_samr_enum_domains_info::ptr_entries1r_samr_enum_domains_info::ptr_entries2.

参照元 _samr_enum_domains().

03362 {
03363         DEBUG(5, ("init_samr_r_enum_domains\n"));
03364 
03365         r_u->next_idx = next_idx;
03366 
03367         if (num_sam_entries != 0) {
03368                 r_u->ptr_entries1 = 1;
03369                 r_u->ptr_entries2 = 1;
03370                 r_u->num_entries2 = num_sam_entries;
03371                 r_u->num_entries3 = num_sam_entries;
03372 
03373                 r_u->num_entries4 = num_sam_entries;
03374         } else {
03375                 r_u->ptr_entries1 = 0;
03376                 r_u->num_entries2 = num_sam_entries;
03377                 r_u->ptr_entries2 = 1;
03378         }
03379 }

BOOL samr_io_r_enum_domains ( const char *  desc,
SAMR_R_ENUM_DOMAINS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3385 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info::hdr_namer_samr_enum_domains_info::next_idxr_samr_enum_domains_info::num_entries2r_samr_enum_domains_info::num_entries3r_samr_enum_domains_info::num_entries4prs_debug()r_samr_enum_domains_info::ptr_entries1r_samr_enum_domains_info::ptr_entries2r_samr_enum_domains_info::samsam_io_sam_entry()smb_io_unistr2()r_samr_enum_domains_info::statusr_samr_enum_domains_info::uni_dom_name.

参照元 api_samr_enum_domains().

03387 {
03388         uint32 i;
03389 
03390         if (r_u == NULL)
03391                 return False;
03392 
03393         prs_debug(ps, depth, desc, "samr_io_r_enum_domains");
03394         depth++;
03395 
03396         if(!prs_align(ps))
03397                 return False;
03398 
03399         if(!prs_uint32("next_idx    ", ps, depth, &r_u->next_idx))
03400                 return False;
03401         if(!prs_uint32("ptr_entries1", ps, depth, &r_u->ptr_entries1))
03402                 return False;
03403 
03404         if (r_u->ptr_entries1 != 0) {
03405                 if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2))
03406                         return False;
03407                 if(!prs_uint32("ptr_entries2", ps, depth, &r_u->ptr_entries2))
03408                         return False;
03409                 if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3))
03410                         return False;
03411 
03412                 if (UNMARSHALLING(ps) && r_u->num_entries2) {
03413                         r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
03414                         r_u->uni_dom_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
03415                 }
03416 
03417                 if ((r_u->sam == NULL || r_u->uni_dom_name == NULL) && r_u->num_entries2 != 0) {
03418                         DEBUG(0, ("NULL pointers in SAMR_R_ENUM_DOMAINS\n"));
03419                         r_u->num_entries4 = 0;
03420                         r_u->status = NT_STATUS_MEMORY_NOT_ALLOCATED;
03421                         return False;
03422                 }
03423 
03424                 for (i = 0; i < r_u->num_entries2; i++) {
03425                         fstring tmp;
03426                         slprintf(tmp, sizeof(tmp) - 1, "dom[%d]", i);
03427                         if(!sam_io_sam_entry(tmp, &r_u->sam[i], ps, depth))
03428                                 return False;
03429                 }
03430 
03431                 for (i = 0; i < r_u->num_entries2; i++) {
03432                         fstring tmp;
03433                         slprintf(tmp, sizeof(tmp) - 1, "dom[%d]", i);
03434                         if(!smb_io_unistr2(tmp, &r_u->uni_dom_name[i],
03435                                        r_u->sam[i].hdr_name.buffer, ps,
03436                                        depth))
03437                                 return False;
03438                 }
03439 
03440         }
03441 
03442         if(!prs_align(ps))
03443                 return False;
03444         if(!prs_uint32("num_entries4", ps, depth, &r_u->num_entries4))
03445                 return False;
03446         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03447                 return False;
03448 
03449         return True;
03450 }

void init_samr_q_enum_dom_groups ( SAMR_Q_ENUM_DOM_GROUPS q_e,
POLICY_HND pol,
uint32  start_idx,
uint32  size 
)

parse_samr.c3456 行で定義されています。

参照先 q_samr_enum_dom_groups_info::max_sizepolq_samr_enum_dom_groups_info::polq_samr_enum_dom_groups_info::start_idx.

参照元 rpccli_samr_enum_dom_groups().

03459 {
03460         DEBUG(5, ("init_samr_q_enum_dom_groups\n"));
03461 
03462         q_e->pol = *pol;
03463 
03464         q_e->start_idx = start_idx;
03465         q_e->max_size = size;
03466 }

BOOL samr_io_q_enum_dom_groups ( const char *  desc,
SAMR_Q_ENUM_DOM_GROUPS q_e,
prs_struct ps,
int  depth 
)

parse_samr.c3472 行で定義されています。

参照先 q_samr_enum_dom_groups_info::max_sizeq_samr_enum_dom_groups_info::polprs_debug()smb_io_pol_hnd()q_samr_enum_dom_groups_info::start_idx.

参照元 api_samr_enum_dom_groups()rpccli_samr_enum_dom_groups().

03474 {
03475         if (q_e == NULL)
03476                 return False;
03477 
03478         prs_debug(ps, depth, desc, "samr_io_q_enum_dom_groups");
03479         depth++;
03480 
03481         if(!prs_align(ps))
03482                 return False;
03483 
03484         if(!smb_io_pol_hnd("pol", &(q_e->pol), ps, depth))
03485                 return False;
03486 
03487         if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx))
03488                 return False;
03489         if(!prs_uint32("max_size ", ps, depth, &q_e->max_size))
03490                 return False;
03491 
03492         return True;
03493 }

void init_samr_r_enum_dom_groups ( SAMR_R_ENUM_DOM_GROUPS r_u,
uint32  next_idx,
uint32  num_sam_entries 
)

parse_samr.c3499 行で定義されています。

参照先 r_samr_enum_dom_groups_info::next_idxr_samr_enum_dom_groups_info::num_entries2r_samr_enum_dom_groups_info::num_entries3r_samr_enum_dom_groups_info::num_entries4r_samr_enum_dom_groups_info::ptr_entries1r_samr_enum_dom_groups_info::ptr_entries2.

参照元 _samr_enum_dom_groups().

03501 {
03502         DEBUG(5, ("init_samr_r_enum_dom_groups\n"));
03503 
03504         r_u->next_idx = next_idx;
03505 
03506         if (num_sam_entries != 0) {
03507                 r_u->ptr_entries1 = 1;
03508                 r_u->ptr_entries2 = 1;
03509                 r_u->num_entries2 = num_sam_entries;
03510                 r_u->num_entries3 = num_sam_entries;
03511 
03512                 r_u->num_entries4 = num_sam_entries;
03513         } else {
03514                 r_u->ptr_entries1 = 0;
03515                 r_u->num_entries2 = num_sam_entries;
03516                 r_u->ptr_entries2 = 1;
03517         }
03518 }

BOOL samr_io_r_enum_dom_groups ( const char *  desc,
SAMR_R_ENUM_DOM_GROUPS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3524 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info::hdr_namer_samr_enum_dom_groups_info::next_idxr_samr_enum_dom_groups_info::num_entries2r_samr_enum_dom_groups_info::num_entries3r_samr_enum_dom_groups_info::num_entries4prs_debug()r_samr_enum_dom_groups_info::ptr_entries1r_samr_enum_dom_groups_info::ptr_entries2r_samr_enum_dom_groups_info::samsam_io_sam_entry()smb_io_unistr2()r_samr_enum_dom_groups_info::statusr_samr_enum_dom_groups_info::uni_grp_name.

参照元 api_samr_enum_dom_groups()rpccli_samr_enum_dom_groups().

03526 {
03527         uint32 i;
03528 
03529         if (r_u == NULL)
03530                 return False;
03531 
03532         prs_debug(ps, depth, desc, "samr_io_r_enum_dom_groups");
03533         depth++;
03534 
03535         if(!prs_align(ps))
03536                 return False;
03537 
03538         if(!prs_uint32("next_idx    ", ps, depth, &r_u->next_idx))
03539                 return False;
03540         if(!prs_uint32("ptr_entries1", ps, depth, &r_u->ptr_entries1))
03541                 return False;
03542 
03543         if (r_u->ptr_entries1 != 0) {
03544                 if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2))
03545                         return False;
03546                 if(!prs_uint32("ptr_entries2", ps, depth, &r_u->ptr_entries2))
03547                         return False;
03548                 if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3))
03549                         return False;
03550 
03551                 if (UNMARSHALLING(ps) && r_u->num_entries2) {
03552                         r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
03553                         r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
03554                 }
03555 
03556                 if ((r_u->sam == NULL || r_u->uni_grp_name == NULL) && r_u->num_entries2 != 0) {
03557                         DEBUG(0,
03558                               ("NULL pointers in SAMR_R_ENUM_DOM_GROUPS\n"));
03559                         r_u->num_entries4 = 0;
03560                         r_u->status = NT_STATUS_MEMORY_NOT_ALLOCATED;
03561                         return False;
03562                 }
03563 
03564                 for (i = 0; i < r_u->num_entries2; i++) {
03565                         if(!sam_io_sam_entry("", &r_u->sam[i], ps, depth))
03566                                 return False;
03567                 }
03568 
03569                 for (i = 0; i < r_u->num_entries2; i++) {
03570                         if(!smb_io_unistr2("", &r_u->uni_grp_name[i],
03571                                        r_u->sam[i].hdr_name.buffer, ps, depth))
03572                                 return False;
03573                 }
03574         }
03575 
03576         if(!prs_align(ps))
03577                 return False;
03578         if(!prs_uint32("num_entries4", ps, depth, &r_u->num_entries4))
03579                 return False;
03580         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03581                 return False;
03582 
03583         return True;
03584 }

void init_samr_q_enum_dom_aliases ( SAMR_Q_ENUM_DOM_ALIASES q_e,
POLICY_HND pol,
uint32  start_idx,
uint32  size 
)

parse_samr.c3590 行で定義されています。

参照先 q_samr_enum_dom_aliases_info::max_sizepolq_samr_enum_dom_aliases_info::polq_samr_enum_dom_aliases_info::start_idx.

参照元 rpccli_samr_enum_als_groups().

03593 {
03594         DEBUG(5, ("init_samr_q_enum_dom_aliases\n"));
03595 
03596         q_e->pol = *pol;
03597 
03598         q_e->start_idx = start_idx;
03599         q_e->max_size = size;
03600 }

BOOL samr_io_q_enum_dom_aliases ( const char *  desc,
SAMR_Q_ENUM_DOM_ALIASES q_e,
prs_struct ps,
int  depth 
)

parse_samr.c3607 行で定義されています。

参照先 q_samr_enum_dom_aliases_info::max_sizeq_samr_enum_dom_aliases_info::polprs_debug()smb_io_pol_hnd()q_samr_enum_dom_aliases_info::start_idx.

参照元 api_samr_enum_dom_aliases()rpccli_samr_enum_als_groups().

03609 {
03610         if (q_e == NULL)
03611                 return False;
03612 
03613         prs_debug(ps, depth, desc, "samr_io_q_enum_dom_aliases");
03614         depth++;
03615 
03616         if(!prs_align(ps))
03617                 return False;
03618 
03619         if(!smb_io_pol_hnd("pol", &q_e->pol, ps, depth))
03620                 return False;
03621 
03622         if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx))
03623                 return False;
03624         if(!prs_uint32("max_size ", ps, depth, &q_e->max_size))
03625                 return False;
03626 
03627         return True;
03628 }

void init_samr_r_enum_dom_aliases ( SAMR_R_ENUM_DOM_ALIASES r_u,
uint32  next_idx,
uint32  num_sam_entries 
)

parse_samr.c3634 行で定義されています。

参照先 r_samr_enum_dom_aliases_info::next_idxr_samr_enum_dom_aliases_info::num_entries2r_samr_enum_dom_aliases_info::num_entries3r_samr_enum_dom_aliases_info::num_entries4r_samr_enum_dom_aliases_info::ptr_entries1r_samr_enum_dom_aliases_info::ptr_entries2.

参照元 _samr_enum_dom_aliases().

03635 {
03636         DEBUG(5, ("init_samr_r_enum_dom_aliases\n"));
03637 
03638         r_u->next_idx = next_idx;
03639 
03640         if (num_sam_entries != 0) {
03641                 r_u->ptr_entries1 = 1;
03642                 r_u->ptr_entries2 = 1;
03643                 r_u->num_entries2 = num_sam_entries;
03644                 r_u->num_entries3 = num_sam_entries;
03645 
03646                 r_u->num_entries4 = num_sam_entries;
03647         } else {
03648                 r_u->ptr_entries1 = 0;
03649                 r_u->num_entries2 = num_sam_entries;
03650                 r_u->ptr_entries2 = 1;
03651         }
03652 }

BOOL samr_io_r_enum_dom_aliases ( const char *  desc,
SAMR_R_ENUM_DOM_ALIASES r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3658 行で定義されています。

参照先 UNIHDR::buffersamr_entry_info::hdr_namer_samr_enum_dom_aliases_info::next_idxr_samr_enum_dom_aliases_info::num_entries2r_samr_enum_dom_aliases_info::num_entries3r_samr_enum_dom_aliases_info::num_entries4prs_debug()r_samr_enum_dom_aliases_info::ptr_entries1r_samr_enum_dom_aliases_info::ptr_entries2r_samr_enum_dom_aliases_info::samsam_io_sam_entry()smb_io_unistr2()r_samr_enum_dom_aliases_info::statusr_samr_enum_dom_aliases_info::uni_grp_name.

参照元 api_samr_enum_dom_aliases()rpccli_samr_enum_als_groups().

03660 {
03661         uint32 i;
03662 
03663         if (r_u == NULL)
03664                 return False;
03665 
03666         prs_debug(ps, depth, desc, "samr_io_r_enum_dom_aliases");
03667         depth++;
03668 
03669         if(!prs_align(ps))
03670                 return False;
03671 
03672         if(!prs_uint32("next_idx    ", ps, depth, &r_u->next_idx))
03673                 return False;
03674         if(!prs_uint32("ptr_entries1", ps, depth, &r_u->ptr_entries1))
03675                 return False;
03676 
03677         if (r_u->ptr_entries1 != 0) {
03678                 if(!prs_uint32("num_entries2", ps, depth, &r_u->num_entries2))
03679                         return False;
03680                 if(!prs_uint32("ptr_entries2", ps, depth, &r_u->ptr_entries2))
03681                         return False;
03682                 if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3))
03683                         return False;
03684 
03685                 if (UNMARSHALLING(ps) && (r_u->num_entries2 > 0)) {
03686                         r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2);
03687                         r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2);
03688                 }
03689 
03690                 if (r_u->num_entries2 != 0 && 
03691                     (r_u->sam == NULL || r_u->uni_grp_name == NULL)) {
03692                         DEBUG(0,("NULL pointers in SAMR_R_ENUM_DOM_ALIASES\n"));
03693                         r_u->num_entries4 = 0;
03694                         r_u->status = NT_STATUS_MEMORY_NOT_ALLOCATED;
03695                         return False;
03696                 }
03697 
03698                 for (i = 0; i < r_u->num_entries2; i++) {
03699                         if(!sam_io_sam_entry("", &r_u->sam[i], ps, depth))
03700                                 return False;
03701                 }
03702 
03703                 for (i = 0; i < r_u->num_entries2; i++) {
03704                         if(!smb_io_unistr2("", &r_u->uni_grp_name[i],
03705                                        r_u->sam[i].hdr_name.buffer, ps,
03706                                        depth))
03707                                 return False;
03708                 }
03709         }
03710 
03711         if(!prs_align(ps))
03712                 return False;
03713         if(!prs_uint32("num_entries4", ps, depth, &r_u->num_entries4))
03714                 return False;
03715         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03716                 return False;
03717 
03718         return True;
03719 }

void init_samr_alias_info1 ( ALIAS_INFO1 al1,
char *  acct_name,
uint32  num_member,
char *  acct_desc 
)

parse_samr.c3725 行で定義されています。

参照先 ALIAS_INFO1::descriptioninit_unistr4()ALIAS_INFO1::nameALIAS_INFO1::num_memberUNI_FLAGS_NONE.

参照元 _samr_query_aliasinfo()cac_MakeAliasInfoCtr().

03726 {
03727         DEBUG(5, ("init_samr_alias_info1\n"));
03728 
03729         init_unistr4(&al1->name, acct_name, UNI_FLAGS_NONE);
03730         al1->num_member = num_member;
03731         init_unistr4(&al1->description, acct_desc, UNI_FLAGS_NONE);
03732 }

BOOL samr_io_alias_info1 ( const char *  desc,
ALIAS_INFO1 al1,
prs_struct ps,
int  depth 
)

parse_samr.c3738 行で定義されています。

参照先 ALIAS_INFO1::descriptionALIAS_INFO1::nameALIAS_INFO1::num_memberprs_debug()prs_unistr4_hdr()prs_unistr4_str().

参照元 samr_alias_info_ctr().

03740 {
03741         if (al1 == NULL)
03742                 return False;
03743 
03744         prs_debug(ps, depth, desc, "samr_io_alias_info1");
03745         depth++;
03746 
03747         if(!prs_align(ps))
03748                 return False;
03749 
03750         if ( !prs_unistr4_hdr("name", ps, depth, &al1->name) )
03751                 return False;
03752         if ( !prs_uint32("num_member", ps, depth, &al1->num_member) )
03753                 return False;
03754         if ( !prs_unistr4_hdr("description", ps, depth, &al1->description) )
03755                 return False;
03756 
03757         if ( !prs_unistr4_str("name", ps, depth, &al1->name) )
03758                 return False;
03759         if ( !prs_align(ps) )
03760                 return False;
03761         if ( !prs_unistr4_str("description", ps, depth, &al1->description) )
03762                 return False;
03763         if ( !prs_align(ps) )
03764                 return False;
03765 
03766         return True;
03767 }

void init_samr_alias_info3 ( ALIAS_INFO3 al3,
const char *  acct_desc 
)

parse_samr.c3773 行で定義されています。

参照先 ALIAS_INFO3::descriptioninit_unistr4()UNI_FLAGS_NONE.

参照元 _samr_query_aliasinfo()rpc_alias_add_internals().

03774 {
03775         DEBUG(5, ("init_samr_alias_info3\n"));
03776 
03777         init_unistr4(&al3->description, acct_desc, UNI_FLAGS_NONE);
03778 }

BOOL samr_io_alias_info3 ( const char *  desc,
ALIAS_INFO3 al3,
prs_struct ps,
int  depth 
)

parse_samr.c3784 行で定義されています。

参照先 ALIAS_INFO3::descriptionprs_debug()prs_unistr4().

参照元 samr_alias_info_ctr().

03786 {
03787         if (al3 == NULL)
03788                 return False;
03789 
03790         prs_debug(ps, depth, desc, "samr_io_alias_info3");
03791         depth++;
03792 
03793         if(!prs_align(ps))
03794                 return False;
03795 
03796         if (!prs_unistr4("description", ps, depth, &al3->description))
03797                 return False;
03798 
03799         return True;
03800 }

BOOL samr_io_alias_info2 ( const char *  desc,
ALIAS_INFO2 al2,
prs_struct ps,
int  depth 
)

parse_samr.c3806 行で定義されています。

参照先 ALIAS_INFO2::nameprs_debug()prs_unistr4().

参照元 samr_alias_info_ctr().

03808 {
03809         if (al2 == NULL)
03810                 return False;
03811 
03812         prs_debug(ps, depth, desc, "samr_io_alias_info2");
03813         depth++;
03814 
03815         if(!prs_align(ps))
03816                 return False;
03817 
03818         if (!prs_unistr4("name", ps, depth, &al2->name))
03819                 return False;
03820 
03821         return True;
03822 }

BOOL samr_alias_info_ctr ( const char *  desc,
prs_struct ps,
int  depth,
ALIAS_INFO_CTR ctr 
)

parse_samr.c3828 行で定義されています。

参照先 ALIAS_INFO_CTR::aliasALIAS_INFO_CTR::info1ALIAS_INFO_CTR::info2ALIAS_INFO_CTR::info3ALIAS_INFO_CTR::levelprs_debug()samr_io_alias_info1()samr_io_alias_info2()samr_io_alias_info3().

参照元 samr_io_q_set_aliasinfo()samr_io_r_query_aliasinfo().

03829 {
03830         if ( !ctr )
03831                 return False;
03832 
03833         prs_debug(ps, depth, desc, "samr_alias_info_ctr");
03834         depth++;
03835 
03836         if ( !prs_uint16("level", ps, depth, &ctr->level) )
03837                 return False;
03838 
03839         if(!prs_align(ps))
03840                 return False;
03841         switch (ctr->level) {
03842         case 1: 
03843                 if(!samr_io_alias_info1("alias_info1", &ctr->alias.info1, ps, depth))
03844                         return False;
03845                 break;
03846         case 2: 
03847                 if(!samr_io_alias_info2("alias_info2", &ctr->alias.info2, ps, depth))
03848                         return False;
03849                 break;
03850         case 3: 
03851                 if(!samr_io_alias_info3("alias_info3", &ctr->alias.info3, ps, depth))
03852                         return False;
03853                 break;
03854         default:
03855                 DEBUG(0,("samr_alias_info_ctr: unsupported switch level\n"));
03856                 break;
03857         }
03858 
03859         return True;
03860 }

void init_samr_q_query_aliasinfo ( SAMR_Q_QUERY_ALIASINFO q_e,
POLICY_HND pol,
uint32  switch_level 
)

parse_samr.c3866 行で定義されています。

参照先 SAMR_Q_QUERY_ALIASINFO::levelpolSAMR_Q_QUERY_ALIASINFO::pol.

参照元 rpccli_samr_query_alias_info().

03868 {
03869         DEBUG(5, ("init_samr_q_query_aliasinfo\n"));
03870 
03871         q_e->pol = *pol;
03872         q_e->level = switch_level;
03873 }

BOOL samr_io_q_query_aliasinfo ( const char *  desc,
SAMR_Q_QUERY_ALIASINFO in,
prs_struct ps,
int  depth 
)

parse_samr.c3879 行で定義されています。

参照先 SAMR_Q_QUERY_ALIASINFO::levelSAMR_Q_QUERY_ALIASINFO::polprs_debug()smb_io_pol_hnd().

参照元 api_samr_query_aliasinfo()rpccli_samr_query_alias_info().

03881 {
03882         if ( !in )
03883                 return False;
03884 
03885         prs_debug(ps, depth, desc, "samr_io_q_query_aliasinfo");
03886         depth++;
03887 
03888         if(!prs_align(ps))
03889                 return False;
03890 
03891         if ( !smb_io_pol_hnd("pol", &(in->pol), ps, depth) )
03892                 return False;
03893 
03894         if ( !prs_uint16("level", ps, depth, &in->level) )
03895                 return False;
03896 
03897         return True;
03898 }

void init_samr_r_query_aliasinfo ( SAMR_R_QUERY_ALIASINFO out,
ALIAS_INFO_CTR ctr,
NTSTATUS  status 
)

parse_samr.c3904 行で定義されています。

参照先 SAMR_R_QUERY_ALIASINFO::ctrstatusSAMR_R_QUERY_ALIASINFO::status.

03906 {
03907         DEBUG(5, ("init_samr_r_query_aliasinfo\n"));
03908 
03909         out->ctr = ctr;
03910         out->status = status;
03911 }

BOOL samr_io_r_query_aliasinfo ( const char *  desc,
SAMR_R_QUERY_ALIASINFO out,
prs_struct ps,
int  depth 
)

parse_samr.c3917 行で定義されています。

参照先 SAMR_R_QUERY_ALIASINFO::ctrprs_debug()samr_alias_info_ctr()SAMR_R_QUERY_ALIASINFO::status.

参照元 api_samr_query_aliasinfo()rpccli_samr_query_alias_info().

03919 {
03920         if ( !out )
03921                 return False;
03922 
03923         prs_debug(ps, depth, desc, "samr_io_r_query_aliasinfo");
03924         depth++;
03925 
03926         if(!prs_align(ps))
03927                 return False;
03928 
03929         if ( !prs_pointer("alias", ps, depth, (void*)&out->ctr, sizeof(ALIAS_INFO_CTR), (PRS_POINTER_CAST)samr_alias_info_ctr))
03930                 return False;
03931         if(!prs_align(ps))
03932                 return False;
03933 
03934         if(!prs_ntstatus("status", ps, depth, &out->status))
03935                 return False;
03936 
03937         return True;
03938 }

void init_samr_q_set_aliasinfo ( SAMR_Q_SET_ALIASINFO q_u,
POLICY_HND hnd,
ALIAS_INFO_CTR ctr 
)

parse_samr.c3944 行で定義されています。

参照先 SAMR_Q_SET_ALIASINFO::alias_polSAMR_Q_SET_ALIASINFO::ctr.

参照元 rpccli_samr_set_aliasinfo().

03946 {
03947         DEBUG(5, ("init_samr_q_set_aliasinfo\n"));
03948 
03949         q_u->alias_pol = *hnd;
03950         q_u->ctr = *ctr;
03951 }

BOOL samr_io_q_set_aliasinfo ( const char *  desc,
SAMR_Q_SET_ALIASINFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c3957 行で定義されています。

参照先 SAMR_Q_SET_ALIASINFO::alias_polSAMR_Q_SET_ALIASINFO::ctrprs_debug()samr_alias_info_ctr()smb_io_pol_hnd().

参照元 api_samr_set_aliasinfo()rpccli_samr_set_aliasinfo().

03959 {
03960         if (q_u == NULL)
03961                 return False;
03962 
03963         prs_debug(ps, depth, desc, "samr_io_q_set_aliasinfo");
03964         depth++;
03965 
03966         if(!prs_align(ps))
03967                 return False;
03968 
03969         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
03970                 return False;
03971         if(!samr_alias_info_ctr("ctr", ps, depth, &q_u->ctr))
03972                 return False;
03973 
03974         return True;
03975 }

BOOL samr_io_r_set_aliasinfo ( const char *  desc,
SAMR_R_SET_ALIASINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c3981 行で定義されています。

参照先 prs_debug()SAMR_R_SET_ALIASINFO::status.

参照元 api_samr_set_aliasinfo()rpccli_samr_set_aliasinfo().

03983 {
03984         if (r_u == NULL)
03985                 return False;
03986 
03987         prs_debug(ps, depth, desc, "samr_io_r_set_aliasinfo");
03988         depth++;
03989 
03990         if(!prs_align(ps))
03991                 return False;
03992         if(!prs_ntstatus("status", ps, depth, &r_u->status))
03993                 return False;
03994 
03995         return True;
03996 }

void init_samr_q_query_useraliases ( SAMR_Q_QUERY_USERALIASES q_u,
POLICY_HND hnd,
uint32  num_sids,
uint32 *  ptr_sid,
DOM_SID2 sid 
)

parse_samr.c4002 行で定義されています。

参照先 q_samr_query_useraliases_info::num_sids1q_samr_query_useraliases_info::num_sids2q_samr_query_useraliases_info::polq_samr_query_useraliases_info::ptrq_samr_query_useraliases_info::ptr_sidq_samr_query_useraliases_info::sid.

参照元 rpccli_samr_query_useraliases().

04006 {
04007         DEBUG(5, ("init_samr_q_query_useraliases\n"));
04008 
04009         q_u->pol = *hnd;
04010 
04011         q_u->num_sids1 = num_sids;
04012         q_u->ptr = 1;
04013         q_u->num_sids2 = num_sids;
04014 
04015         q_u->ptr_sid = ptr_sid;
04016         q_u->sid = sid;
04017 }

BOOL samr_io_q_query_useraliases ( const char *  desc,
SAMR_Q_QUERY_USERALIASES q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4023 行で定義されています。

参照先 q_samr_query_useraliases_info::num_sids1q_samr_query_useraliases_info::num_sids2q_samr_query_useraliases_info::polprs_debug()q_samr_query_useraliases_info::ptrq_samr_query_useraliases_info::ptr_sidq_samr_query_useraliases_info::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_samr_query_useraliases()rpccli_samr_query_useraliases().

04025 {
04026         fstring tmp;
04027         uint32 i;
04028 
04029         if (q_u == NULL)
04030                 return False;
04031 
04032         prs_debug(ps, depth, desc, "samr_io_q_query_useraliases");
04033         depth++;
04034 
04035         if(!prs_align(ps))
04036                 return False;
04037 
04038         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
04039                 return False;
04040 
04041         if(!prs_uint32("num_sids1", ps, depth, &q_u->num_sids1))
04042                 return False;
04043         if(!prs_uint32("ptr      ", ps, depth, &q_u->ptr))
04044                 return False;
04045 
04046         if (q_u->ptr==0)
04047                 return True;
04048 
04049         if(!prs_uint32("num_sids2", ps, depth, &q_u->num_sids2))
04050                 return False;
04051 
04052         if (UNMARSHALLING(ps) && (q_u->num_sids2 != 0)) {
04053                 q_u->ptr_sid = PRS_ALLOC_MEM(ps,uint32,q_u->num_sids2);
04054                 if (q_u->ptr_sid == NULL)
04055                         return False;
04056 
04057                 q_u->sid = PRS_ALLOC_MEM(ps, DOM_SID2, q_u->num_sids2);
04058                 if (q_u->sid == NULL)
04059                         return False;
04060         }
04061 
04062         for (i = 0; i < q_u->num_sids2; i++) {
04063                 slprintf(tmp, sizeof(tmp) - 1, "ptr[%02d]", i);
04064                 if(!prs_uint32(tmp, ps, depth, &q_u->ptr_sid[i]))
04065                         return False;
04066         }
04067 
04068         for (i = 0; i < q_u->num_sids2; i++) {
04069                 if (q_u->ptr_sid[i] != 0) {
04070                         slprintf(tmp, sizeof(tmp) - 1, "sid[%02d]", i);
04071                         if(!smb_io_dom_sid2(tmp, &q_u->sid[i], ps, depth))
04072                                 return False;
04073                 }
04074         }
04075 
04076         return True;
04077 }

void init_samr_r_query_useraliases ( SAMR_R_QUERY_USERALIASES r_u,
uint32  num_rids,
uint32 *  rid,
NTSTATUS  status 
)

parse_samr.c4083 行で定義されています。

参照先 r_samr_query_useraliases_info::num_entriesr_samr_query_useraliases_info::num_entries2r_samr_query_useraliases_info::ptrr_samr_query_useraliases_info::ridr_samr_query_useraliases_info::statusstatus.

参照元 _samr_query_useraliases().

04086 {
04087         DEBUG(5, ("init_samr_r_query_useraliases\n"));
04088 
04089         if (NT_STATUS_IS_OK(status)) {
04090                 r_u->num_entries = num_rids;
04091                 r_u->ptr = 1;
04092                 r_u->num_entries2 = num_rids;
04093 
04094                 r_u->rid = rid;
04095         } else {
04096                 r_u->num_entries = 0;
04097                 r_u->ptr = 0;
04098                 r_u->num_entries2 = 0;
04099         }
04100 
04101         r_u->status = status;
04102 }

BOOL samr_io_rids ( const char *  desc,
uint32 *  num_rids,
uint32 **  rid,
prs_struct ps,
int  depth 
)

parse_samr.c4108 行で定義されています。

参照先 prs_debug().

参照元 samr_io_r_query_useraliases().

04110 {
04111         fstring tmp;
04112         uint32 i;
04113         if (rid == NULL)
04114                 return False;
04115 
04116         prs_debug(ps, depth, desc, "samr_io_rids");
04117         depth++;
04118 
04119         if(!prs_align(ps))
04120                 return False;
04121 
04122         if(!prs_uint32("num_rids", ps, depth, num_rids))
04123                 return False;
04124 
04125         if ((*num_rids) != 0) {
04126                 if (UNMARSHALLING(ps)) {
04127                         /* reading */
04128                         (*rid) = PRS_ALLOC_MEM(ps,uint32, *num_rids);
04129                 }
04130                 if ((*rid) == NULL)
04131                         return False;
04132 
04133                 for (i = 0; i < (*num_rids); i++) {
04134                         slprintf(tmp, sizeof(tmp) - 1, "rid[%02d]", i);
04135                         if(!prs_uint32(tmp, ps, depth, &((*rid)[i])))
04136                                 return False;
04137                 }
04138         }
04139 
04140         return True;
04141 }

BOOL samr_io_r_query_useraliases ( const char *  desc,
SAMR_R_QUERY_USERALIASES r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4147 行で定義されています。

参照先 r_samr_query_useraliases_info::num_entriesr_samr_query_useraliases_info::num_entries2prs_debug()r_samr_query_useraliases_info::ptrr_samr_query_useraliases_info::ridsamr_io_rids()r_samr_query_useraliases_info::status.

参照元 api_samr_query_useraliases()rpccli_samr_query_useraliases().

04149 {
04150         if (r_u == NULL)
04151                 return False;
04152 
04153         prs_debug(ps, depth, desc, "samr_io_r_query_useraliases");
04154         depth++;
04155 
04156         if(!prs_align(ps))
04157                 return False;
04158 
04159         if(!prs_uint32("num_entries", ps, depth, &r_u->num_entries))
04160                 return False;
04161         if(!prs_uint32("ptr        ", ps, depth, &r_u->ptr))
04162                 return False;
04163 
04164         if (r_u->ptr != 0) {
04165                 if(!samr_io_rids("rids", &r_u->num_entries2, &r_u->rid, ps, depth))
04166                         return False;
04167         }
04168 
04169         if(!prs_align(ps))
04170                 return False;
04171         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04172                 return False;
04173 
04174         return True;
04175 }

void init_samr_q_open_alias ( SAMR_Q_OPEN_ALIAS q_u,
POLICY_HND pol,
uint32  access_mask,
uint32  rid 
)

parse_samr.c4181 行で定義されています。

参照先 q_samr_open_alias_info::access_maskq_samr_open_alias_info::dom_polpolq_samr_open_alias_info::rid_alias.

参照元 rpccli_samr_open_alias().

04183 {
04184         DEBUG(5, ("init_samr_q_open_alias\n"));
04185 
04186         q_u->dom_pol = *pol;
04187         q_u->access_mask = access_mask;
04188         q_u->rid_alias = rid;
04189 }

BOOL samr_io_q_open_alias ( const char *  desc,
SAMR_Q_OPEN_ALIAS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4195 行で定義されています。

参照先 q_samr_open_alias_info::access_maskq_samr_open_alias_info::dom_polprs_debug()q_samr_open_alias_info::rid_aliassmb_io_pol_hnd().

参照元 api_samr_open_alias()rpccli_samr_open_alias().

04197 {
04198         if (q_u == NULL)
04199                 return False;
04200 
04201         prs_debug(ps, depth, desc, "samr_io_q_open_alias");
04202         depth++;
04203 
04204         if(!prs_align(ps))
04205                 return False;
04206 
04207         if(!smb_io_pol_hnd("domain_pol", &q_u->dom_pol, ps, depth))
04208                 return False;
04209 
04210         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
04211                 return False;
04212         if(!prs_uint32("rid_alias", ps, depth, &q_u->rid_alias))
04213                 return False;
04214 
04215         return True;
04216 }

BOOL samr_io_r_open_alias ( const char *  desc,
SAMR_R_OPEN_ALIAS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4222 行で定義されています。

参照先 r_samr_open_alias_info::polprs_debug()smb_io_pol_hnd()r_samr_open_alias_info::status.

参照元 api_samr_open_alias()rpccli_samr_open_alias().

04224 {
04225         if (r_u == NULL)
04226                 return False;
04227 
04228         prs_debug(ps, depth, desc, "samr_io_r_open_alias");
04229         depth++;
04230 
04231         if(!prs_align(ps))
04232                 return False;
04233 
04234         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
04235                 return False;
04236 
04237         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04238                 return False;
04239 
04240         return True;
04241 }

void init_samr_q_lookup_rids ( TALLOC_CTX ctx,
SAMR_Q_LOOKUP_RIDS q_u,
POLICY_HND pol,
uint32  flags,
uint32  num_rids,
uint32 *  rid 
)

parse_samr.c4247 行で定義されています。

参照先 q_samr_lookup_rids_info::flagsq_samr_lookup_rids_info::num_rids1q_samr_lookup_rids_info::num_rids2polq_samr_lookup_rids_info::polq_samr_lookup_rids_info::ptrq_samr_lookup_rids_info::rid.

参照元 rpccli_samr_lookup_rids().

04250 {
04251         DEBUG(5, ("init_samr_q_lookup_rids\n"));
04252 
04253         q_u->pol = *pol;
04254 
04255         q_u->num_rids1 = num_rids;
04256         q_u->flags = flags;
04257         q_u->ptr = 0;
04258         q_u->num_rids2 = num_rids;
04259         if (num_rids) {
04260                 q_u->rid = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids );
04261         } else {
04262                 q_u->rid = NULL;
04263         }
04264         if (q_u->rid == NULL) {
04265                 q_u->num_rids1 = 0;
04266                 q_u->num_rids2 = 0;
04267         } else {
04268                 memcpy(q_u->rid, rid, num_rids * sizeof(q_u->rid[0]));
04269         }
04270 }

BOOL samr_io_q_lookup_rids ( const char *  desc,
SAMR_Q_LOOKUP_RIDS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4276 行で定義されています。

参照先 prs_debug()smb_io_pol_hnd().

参照元 api_samr_lookup_rids()rpccli_samr_lookup_rids().

04278 {
04279         uint32 i;
04280         fstring tmp;
04281 
04282         if (q_u == NULL)
04283                 return False;
04284 
04285         prs_debug(ps, depth, desc, "samr_io_q_lookup_rids");
04286         depth++;
04287 
04288         if (UNMARSHALLING(ps))
04289                 ZERO_STRUCTP(q_u);
04290 
04291         if(!prs_align(ps))
04292                 return False;
04293 
04294         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
04295                 return False;
04296 
04297         if(!prs_uint32("num_rids1", ps, depth, &q_u->num_rids1))
04298                 return False;
04299         if(!prs_uint32("flags    ", ps, depth, &q_u->flags))
04300                 return False;
04301         if(!prs_uint32("ptr      ", ps, depth, &q_u->ptr))
04302                 return False;
04303         if(!prs_uint32("num_rids2", ps, depth, &q_u->num_rids2))
04304                 return False;
04305 
04306         if (UNMARSHALLING(ps) && (q_u->num_rids2 != 0)) {
04307                 q_u->rid = PRS_ALLOC_MEM(ps, uint32, q_u->num_rids2);
04308                 if (q_u->rid == NULL)
04309                         return False;
04310         }
04311 
04312         for (i = 0; i < q_u->num_rids2; i++) {
04313                 slprintf(tmp, sizeof(tmp) - 1, "rid[%02d]  ", i);
04314                 if(!prs_uint32(tmp, ps, depth, &q_u->rid[i]))
04315                         return False;
04316         }
04317 
04318         return True;
04319 }

void init_samr_r_lookup_rids ( SAMR_R_LOOKUP_RIDS r_u,
uint32  num_names,
UNIHDR hdr_name,
UNISTR2 uni_name,
uint32 *  type 
)

parse_samr.c4325 行で定義されています。

参照先 r_samr_lookup_rids_info::hdr_namer_samr_lookup_rids_info::num_names1r_samr_lookup_rids_info::num_names2r_samr_lookup_rids_info::num_types1r_samr_lookup_rids_info::num_types2r_samr_lookup_rids_info::ptr_namesr_samr_lookup_rids_info::ptr_typesr_samr_lookup_rids_info::typer_samr_lookup_rids_info::uni_name.

参照元 _samr_lookup_rids().

04328 {
04329         DEBUG(5, ("init_samr_r_lookup_rids\n"));
04330 
04331         r_u->hdr_name = NULL;
04332         r_u->uni_name = NULL;
04333         r_u->type = NULL;
04334 
04335         if (num_names != 0) {
04336                 r_u->num_names1 = num_names;
04337                 r_u->ptr_names = 1;
04338                 r_u->num_names2 = num_names;
04339 
04340                 r_u->num_types1 = num_names;
04341                 r_u->ptr_types = 1;
04342                 r_u->num_types2 = num_names;
04343 
04344                 r_u->hdr_name = hdr_name;
04345                 r_u->uni_name = uni_name;
04346                 r_u->type = type;
04347         } else {
04348                 r_u->num_names1 = num_names;
04349                 r_u->ptr_names = 0;
04350                 r_u->num_names2 = num_names;
04351 
04352                 r_u->num_types1 = num_names;
04353                 r_u->ptr_types = 0;
04354                 r_u->num_types2 = num_names;
04355         }
04356 }

BOOL samr_io_r_lookup_rids ( const char *  desc,
SAMR_R_LOOKUP_RIDS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4362 行で定義されています。

参照先 UNIHDR::bufferr_samr_lookup_rids_info::hdr_namer_samr_lookup_rids_info::num_names1r_samr_lookup_rids_info::num_names2r_samr_lookup_rids_info::num_types1r_samr_lookup_rids_info::num_types2prs_debug()r_samr_lookup_rids_info::ptr_namesr_samr_lookup_rids_info::ptr_typessmb_io_unihdr()smb_io_unistr2()r_samr_lookup_rids_info::typer_samr_lookup_rids_info::uni_name.

参照元 api_samr_lookup_rids()rpccli_samr_lookup_rids().

04364 {
04365         uint32 i;
04366         fstring tmp;
04367         if (r_u == NULL)
04368                 return False;
04369 
04370         prs_debug(ps, depth, desc, "samr_io_r_lookup_rids");
04371         depth++;
04372 
04373         if(!prs_align(ps))
04374                 return False;
04375 
04376         if(!prs_uint32("num_names1", ps, depth, &r_u->num_names1))
04377                 return False;
04378         if(!prs_uint32("ptr_names ", ps, depth, &r_u->ptr_names))
04379                 return False;
04380 
04381         if (r_u->ptr_names != 0) {
04382 
04383                 if(!prs_uint32("num_names2", ps, depth, &r_u->num_names2))
04384                         return False;
04385 
04386 
04387                 if (UNMARSHALLING(ps) && (r_u->num_names2 != 0)) {
04388                         r_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, r_u->num_names2);
04389                         if (r_u->hdr_name == NULL)
04390                                 return False;
04391 
04392                         r_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, r_u->num_names2);
04393                         if (r_u->uni_name == NULL)
04394                                 return False;
04395                 }
04396                 
04397                 for (i = 0; i < r_u->num_names2; i++) {
04398                         slprintf(tmp, sizeof(tmp) - 1, "hdr[%02d]  ", i);
04399                         if(!smb_io_unihdr("", &r_u->hdr_name[i], ps, depth))
04400                                 return False;
04401                 }
04402                 for (i = 0; i < r_u->num_names2; i++) {
04403                         slprintf(tmp, sizeof(tmp) - 1, "str[%02d]  ", i);
04404                         if(!smb_io_unistr2("", &r_u->uni_name[i], r_u->hdr_name[i].buffer, ps, depth))
04405                                 return False;
04406                 }
04407 
04408         }
04409         
04410         if(!prs_align(ps))
04411                 return False;
04412         if(!prs_uint32("num_types1", ps, depth, &r_u->num_types1))
04413                 return False;
04414         if(!prs_uint32("ptr_types ", ps, depth, &r_u->ptr_types))
04415                 return False;
04416 
04417         if (r_u->ptr_types != 0) {
04418 
04419                 if(!prs_uint32("num_types2", ps, depth, &r_u->num_types2))
04420                         return False;
04421 
04422                 if (UNMARSHALLING(ps) && (r_u->num_types2 != 0)) {
04423                         r_u->type = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2);
04424                         if (r_u->type == NULL)
04425                                 return False;
04426                 }
04427 
04428                 for (i = 0; i < r_u->num_types2; i++) {
04429                         slprintf(tmp, sizeof(tmp) - 1, "type[%02d]  ", i);
04430                         if(!prs_uint32(tmp, ps, depth, &r_u->type[i]))
04431                                 return False;
04432                 }
04433         }
04434 
04435         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04436                 return False;
04437 
04438         return True;
04439 }

void init_samr_q_delete_alias ( SAMR_Q_DELETE_DOM_ALIAS q_u,
POLICY_HND hnd 
)

parse_samr.c4445 行で定義されています。

参照先 q_samr_delete_dom_alias_info::alias_pol.

04446 {
04447         DEBUG(5, ("init_samr_q_delete_alias\n"));
04448 
04449         q_u->alias_pol = *hnd;
04450 }

BOOL samr_io_q_delete_alias ( const char *  desc,
SAMR_Q_DELETE_DOM_ALIAS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4456 行で定義されています。

参照先 q_samr_delete_dom_alias_info::alias_polprs_debug()smb_io_pol_hnd().

04458 {
04459         if (q_u == NULL)
04460                 return False;
04461 
04462         prs_debug(ps, depth, desc, "samr_io_q_delete_alias");
04463         depth++;
04464 
04465         if(!prs_align(ps))
04466                 return False;
04467 
04468         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
04469                 return False;
04470 
04471         return True;
04472 }

BOOL samr_io_r_delete_alias ( const char *  desc,
SAMR_R_DELETE_DOM_ALIAS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4478 行で定義されています。

参照先 r_samr_delete_dom_alias_info::polprs_debug()smb_io_pol_hnd()r_samr_delete_dom_alias_info::status.

04480 {
04481         if (r_u == NULL)
04482                 return False;
04483 
04484         prs_debug(ps, depth, desc, "samr_io_r_delete_alias");
04485         depth++;
04486 
04487         if(!prs_align(ps))
04488                 return False;
04489 
04490         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
04491                 return False;
04492         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04493                 return False;
04494 
04495         return True;
04496 }

void init_samr_q_create_dom_alias ( SAMR_Q_CREATE_DOM_ALIAS q_u,
POLICY_HND hnd,
const char *  acct_desc 
)

parse_samr.c4502 行で定義されています。

参照先 q_samr_create_dom_alias_info::access_maskq_samr_create_dom_alias_info::dom_polq_samr_create_dom_alias_info::hdr_acct_descinit_uni_hdr()init_unistr2()q_samr_create_dom_alias_info::uni_acct_descUNI_FLAGS_NONE.

参照元 rpccli_samr_create_dom_alias().

04504 {
04505         DEBUG(5, ("init_samr_q_create_dom_alias\n"));
04506 
04507         q_u->dom_pol = *hnd;
04508 
04509         init_unistr2(&q_u->uni_acct_desc, acct_desc, UNI_FLAGS_NONE);
04510         init_uni_hdr(&q_u->hdr_acct_desc, &q_u->uni_acct_desc);
04511 
04512         q_u->access_mask = MAXIMUM_ALLOWED_ACCESS;
04513 }

BOOL samr_io_q_create_dom_alias ( const char *  desc,
SAMR_Q_CREATE_DOM_ALIAS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4519 行で定義されています。

参照先 q_samr_create_dom_alias_info::access_maskUNIHDR::bufferq_samr_create_dom_alias_info::dom_polq_samr_create_dom_alias_info::hdr_acct_descprs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()q_samr_create_dom_alias_info::uni_acct_desc.

参照元 api_samr_create_dom_alias()rpccli_samr_create_dom_alias().

04521 {
04522         if (q_u == NULL)
04523                 return False;
04524 
04525         prs_debug(ps, depth, desc, "samr_io_q_create_dom_alias");
04526         depth++;
04527 
04528         if(!prs_align(ps))
04529                 return False;
04530 
04531         if(!smb_io_pol_hnd("dom_pol", &q_u->dom_pol, ps, depth))
04532                 return False;
04533 
04534         if(!smb_io_unihdr("hdr_acct_desc", &q_u->hdr_acct_desc, ps, depth))
04535                 return False;
04536         if(!smb_io_unistr2("uni_acct_desc", &q_u->uni_acct_desc,
04537                        q_u->hdr_acct_desc.buffer, ps, depth))
04538                 return False;
04539 
04540         if(!prs_align(ps))
04541                 return False;
04542         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
04543                 return False;
04544 
04545         return True;
04546 }

BOOL samr_io_r_create_dom_alias ( const char *  desc,
SAMR_R_CREATE_DOM_ALIAS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4552 行で定義されています。

参照先 r_samr_create_dom_alias_info::alias_polprs_debug()r_samr_create_dom_alias_info::ridsmb_io_pol_hnd()r_samr_create_dom_alias_info::status.

参照元 api_samr_create_dom_alias()rpccli_samr_create_dom_alias().

04554 {
04555         if (r_u == NULL)
04556                 return False;
04557 
04558         prs_debug(ps, depth, desc, "samr_io_r_create_dom_alias");
04559         depth++;
04560 
04561         if(!prs_align(ps))
04562                 return False;
04563 
04564         if(!smb_io_pol_hnd("alias_pol", &r_u->alias_pol, ps, depth))
04565                 return False;
04566 
04567         if(!prs_uint32("rid", ps, depth, &r_u->rid))
04568                 return False;
04569 
04570         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04571                 return False;
04572 
04573         return True;
04574 }

void init_samr_q_add_aliasmem ( SAMR_Q_ADD_ALIASMEM q_u,
POLICY_HND hnd,
DOM_SID sid 
)

parse_samr.c4580 行で定義されています。

参照先 q_samr_add_alias_mem_info::alias_polinit_dom_sid2()q_samr_add_alias_mem_info::sid.

参照元 rpccli_samr_add_aliasmem().

04582 {
04583         DEBUG(5, ("init_samr_q_add_aliasmem\n"));
04584 
04585         q_u->alias_pol = *hnd;
04586         init_dom_sid2(&q_u->sid, sid);
04587 }

BOOL samr_io_q_add_aliasmem ( const char *  desc,
SAMR_Q_ADD_ALIASMEM q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4593 行で定義されています。

参照先 q_samr_add_alias_mem_info::alias_polprs_debug()q_samr_add_alias_mem_info::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_samr_add_aliasmem()rpccli_samr_add_aliasmem().

04595 {
04596         if (q_u == NULL)
04597                 return False;
04598 
04599         prs_debug(ps, depth, desc, "samr_io_q_add_aliasmem");
04600         depth++;
04601 
04602         if(!prs_align(ps))
04603                 return False;
04604 
04605         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
04606                 return False;
04607         if(!smb_io_dom_sid2("sid      ", &q_u->sid, ps, depth))
04608                 return False;
04609 
04610         return True;
04611 }

BOOL samr_io_r_add_aliasmem ( const char *  desc,
SAMR_R_ADD_ALIASMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4617 行で定義されています。

参照先 prs_debug()r_samr_add_alias_mem_info::status.

参照元 api_samr_add_aliasmem()rpccli_samr_add_aliasmem().

04619 {
04620         if (r_u == NULL)
04621                 return False;
04622 
04623         prs_debug(ps, depth, desc, "samr_io_r_add_aliasmem");
04624         depth++;
04625 
04626         if(!prs_align(ps))
04627                 return False;
04628 
04629         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04630                 return False;
04631 
04632         return True;
04633 }

void init_samr_q_del_aliasmem ( SAMR_Q_DEL_ALIASMEM q_u,
POLICY_HND hnd,
DOM_SID sid 
)

parse_samr.c4639 行で定義されています。

参照先 q_samr_del_alias_mem_info::alias_polinit_dom_sid2()q_samr_del_alias_mem_info::sid.

参照元 rpccli_samr_del_aliasmem().

04641 {
04642         DEBUG(5, ("init_samr_q_del_aliasmem\n"));
04643 
04644         q_u->alias_pol = *hnd;
04645         init_dom_sid2(&q_u->sid, sid);
04646 }

BOOL samr_io_q_del_aliasmem ( const char *  desc,
SAMR_Q_DEL_ALIASMEM q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4652 行で定義されています。

参照先 q_samr_del_alias_mem_info::alias_polprs_debug()q_samr_del_alias_mem_info::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_samr_del_aliasmem()rpccli_samr_del_aliasmem().

04654 {
04655         if (q_u == NULL)
04656                 return False;
04657 
04658         prs_debug(ps, depth, desc, "samr_io_q_del_aliasmem");
04659         depth++;
04660 
04661         if(!prs_align(ps))
04662                 return False;
04663 
04664         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
04665                 return False;
04666         if(!smb_io_dom_sid2("sid      ", &q_u->sid, ps, depth))
04667                 return False;
04668 
04669         return True;
04670 }

BOOL samr_io_r_del_aliasmem ( const char *  desc,
SAMR_R_DEL_ALIASMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4676 行で定義されています。

参照先 prs_debug()r_samr_del_alias_mem_info::status.

参照元 api_samr_del_aliasmem()rpccli_samr_del_aliasmem().

04678 {
04679         if (r_u == NULL)
04680                 return False;
04681 
04682         prs_debug(ps, depth, desc, "samr_io_r_del_aliasmem");
04683         depth++;
04684 
04685         if(!prs_align(ps))
04686                 return False;
04687 
04688         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04689                 return False;
04690 
04691         return True;
04692 }

void init_samr_q_delete_dom_alias ( SAMR_Q_DELETE_DOM_ALIAS q_c,
POLICY_HND hnd 
)

parse_samr.c4698 行で定義されています。

参照先 q_samr_delete_dom_alias_info::alias_pol.

参照元 rpccli_samr_delete_dom_alias().

04700 {
04701         DEBUG(5, ("init_samr_q_delete_dom_alias\n"));
04702 
04703         q_c->alias_pol = *hnd;
04704 }

BOOL samr_io_q_delete_dom_alias ( const char *  desc,
SAMR_Q_DELETE_DOM_ALIAS q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4710 行で定義されています。

参照先 q_samr_delete_dom_alias_info::alias_polprs_debug()smb_io_pol_hnd().

参照元 api_samr_delete_dom_alias()rpccli_samr_delete_dom_alias().

04712 {
04713         if (q_u == NULL)
04714                 return False;
04715 
04716         prs_debug(ps, depth, desc, "samr_io_q_delete_dom_alias");
04717         depth++;
04718 
04719         if(!prs_align(ps))
04720                 return False;
04721 
04722         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
04723                 return False;
04724 
04725         return True;
04726 }

void init_samr_r_delete_dom_alias ( SAMR_R_DELETE_DOM_ALIAS r_u,
NTSTATUS  status 
)

parse_samr.c4732 行で定義されています。

参照先 statusr_samr_delete_dom_alias_info::status.

04734 {
04735         DEBUG(5, ("init_samr_r_delete_dom_alias\n"));
04736 
04737         r_u->status = status;
04738 }

BOOL samr_io_r_delete_dom_alias ( const char *  desc,
SAMR_R_DELETE_DOM_ALIAS r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4744 行で定義されています。

参照先 r_samr_delete_dom_alias_info::polprs_debug()smb_io_pol_hnd()r_samr_delete_dom_alias_info::status.

参照元 api_samr_delete_dom_alias()rpccli_samr_delete_dom_alias().

04746 {
04747         if (r_u == NULL)
04748                 return False;
04749 
04750         prs_debug(ps, depth, desc, "samr_io_r_delete_dom_alias");
04751         depth++;
04752 
04753         if(!prs_align(ps))
04754                 return False;
04755 
04756         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
04757                 return False;
04758 
04759         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04760                 return False;
04761 
04762         return True;
04763 }

void init_samr_q_query_aliasmem ( SAMR_Q_QUERY_ALIASMEM q_c,
POLICY_HND hnd 
)

parse_samr.c4769 行で定義されています。

参照先 q_samr_query_aliasmem_info::alias_pol.

参照元 rpccli_samr_query_aliasmem().

04771 {
04772         DEBUG(5, ("init_samr_q_query_aliasmem\n"));
04773 
04774         q_c->alias_pol = *hnd;
04775 }

BOOL samr_io_q_query_aliasmem ( const char *  desc,
SAMR_Q_QUERY_ALIASMEM q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4781 行で定義されています。

参照先 q_samr_query_aliasmem_info::alias_polprs_debug()smb_io_pol_hnd().

参照元 api_samr_query_aliasmem()rpccli_samr_query_aliasmem().

04783 {
04784         if (q_u == NULL)
04785                 return False;
04786 
04787         prs_debug(ps, depth, desc, "samr_io_q_query_aliasmem");
04788         depth++;
04789 
04790         if(!prs_align(ps))
04791                 return False;
04792 
04793         if(!smb_io_pol_hnd("alias_pol", &q_u->alias_pol, ps, depth))
04794                 return False;
04795 
04796         return True;
04797 }

void init_samr_r_query_aliasmem ( SAMR_R_QUERY_ALIASMEM r_u,
uint32  num_sids,
DOM_SID2 sid,
NTSTATUS  status 
)

parse_samr.c4803 行で定義されています。

参照先 r_samr_query_aliasmem_info::num_sidsr_samr_query_aliasmem_info::num_sids1r_samr_query_aliasmem_info::ptrr_samr_query_aliasmem_info::sidr_samr_query_aliasmem_info::statusstatus.

参照元 _samr_query_aliasmem().

04806 {
04807         DEBUG(5, ("init_samr_r_query_aliasmem\n"));
04808 
04809         if (NT_STATUS_IS_OK(status)) {
04810                 r_u->num_sids = num_sids;
04811                 r_u->ptr = (num_sids != 0) ? 1 : 0;
04812                 r_u->num_sids1 = num_sids;
04813 
04814                 r_u->sid = sid;
04815         } else {
04816                 r_u->ptr = 0;
04817                 r_u->num_sids = 0;
04818         }
04819 
04820         r_u->status = status;
04821 }

BOOL samr_io_r_query_aliasmem ( const char *  desc,
SAMR_R_QUERY_ALIASMEM r_u,
prs_struct ps,
int  depth 
)

parse_samr.c4827 行で定義されています。

参照先 _prs_struct::mem_ctxr_samr_query_aliasmem_info::num_sidsr_samr_query_aliasmem_info::num_sids1prs_debug()r_samr_query_aliasmem_info::ptrr_samr_query_aliasmem_info::sid.

参照元 api_samr_query_aliasmem()rpccli_samr_query_aliasmem().

04829 {
04830         uint32 i;
04831 
04832         if (r_u == NULL)
04833                 return False;
04834 
04835         prs_debug(ps, depth, desc, "samr_io_r_query_aliasmem");
04836         depth++;
04837 
04838         if(!prs_align(ps))
04839                 return False;
04840 
04841         if(!prs_uint32("num_sids ", ps, depth, &r_u->num_sids))
04842                 return False;
04843         if(!prs_uint32("ptr", ps, depth, &r_u->ptr))
04844                 return False;
04845 
04846         if (r_u->ptr != 0 && r_u->num_sids != 0) {
04847                 uint32 *ptr_sid = NULL;
04848 
04849                 if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
04850                         return False;
04851 
04852                 /* We must always use talloc here even when marshalling. */
04853                 if (r_u->num_sids1) {
04854                         ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
04855                         if (!ptr_sid) {
04856                                 return False;
04857                         }
04858                 } else {
04859                         ptr_sid = NULL;
04860                 }
04861                 
04862                 for (i = 0; i < r_u->num_sids1; i++) {
04863                         ptr_sid[i] = 1;
04864                         if(!prs_uint32("ptr_sid", ps, depth, &ptr_sid[i]))
04865                                 return False;
04866                 }
04867                 
04868                 if (UNMARSHALLING(ps)) {
04869                         if (r_u->num_sids1) {
04870                                 r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
04871                                 if (!r_u->sid) {
04872                                         return False;
04873                                 }
04874                         } else {
04875                                 r_u->sid = NULL;
04876                         }
04877                 }
04878                 
04879                 for (i = 0; i < r_u->num_sids1; i++) {
04880                         if (ptr_sid[i] != 0) {
04881                                 if(!smb_io_dom_sid2("sid", &r_u->sid[i], ps, depth))
04882                                         return False;
04883                         }
04884                 }
04885         }
04886 
04887         if(!prs_align(ps))
04888                 return False;
04889         if(!prs_ntstatus("status", ps, depth, &r_u->status))
04890                 return False;
04891 
04892         return True;
04893 }

NTSTATUS init_samr_q_lookup_names ( TALLOC_CTX ctx,
SAMR_Q_LOOKUP_NAMES q_u,
POLICY_HND pol,
uint32  flags,
uint32  num_names,
const char **  name 
)

parse_samr.c4899 行で定義されています。

参照先 q_samr_lookup_names_info::flagsq_samr_lookup_names_info::hdr_nameinit_uni_hdr()init_unistr2()q_samr_lookup_names_info::num_names1q_samr_lookup_names_info::num_names2polq_samr_lookup_names_info::polq_samr_lookup_names_info::ptrUNI_FLAGS_NONEq_samr_lookup_names_info::uni_name.

参照元 rpccli_samr_lookup_names().

04902 {
04903         uint32 i;
04904 
04905         DEBUG(5, ("init_samr_q_lookup_names\n"));
04906 
04907         q_u->pol = *pol;
04908 
04909         q_u->num_names1 = num_names;
04910         q_u->flags = flags;
04911         q_u->ptr = 0;
04912         q_u->num_names2 = num_names;
04913 
04914         if (num_names) {
04915                 if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names)))
04916                         return NT_STATUS_NO_MEMORY;
04917 
04918                 if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names)))
04919                         return NT_STATUS_NO_MEMORY;
04920         } else {
04921                 q_u->hdr_name = NULL;
04922                 q_u->uni_name = NULL;
04923         }
04924 
04925         for (i = 0; i < num_names; i++) {
04926                 init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE);       /* unicode string for machine account */
04927                 init_uni_hdr(&q_u->hdr_name[i], &q_u->uni_name[i]);     /* unicode header for user_name */
04928         }
04929 
04930         return NT_STATUS_OK;
04931 }

BOOL samr_io_q_lookup_names ( const char *  desc,
SAMR_Q_LOOKUP_NAMES q_u,
prs_struct ps,
int  depth 
)

parse_samr.c4937 行で定義されています。

参照先 prs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2().

参照元 api_samr_lookup_names()rpccli_samr_lookup_names().

04939 {
04940         uint32 i;
04941 
04942         if (q_u == NULL)
04943                 return False;
04944 
04945         prs_debug(ps, depth, desc, "samr_io_q_lookup_names");
04946         depth++;
04947 
04948         if (UNMARSHALLING(ps))
04949                 ZERO_STRUCTP(q_u);
04950 
04951         if(!prs_align(ps))
04952                 return False;
04953 
04954         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
04955                 return False;
04956 
04957         if(!prs_uint32("num_names1", ps, depth, &q_u->num_names1))
04958                 return False;
04959         if(!prs_uint32("flags     ", ps, depth, &q_u->flags))
04960                 return False;
04961         if(!prs_uint32("ptr       ", ps, depth, &q_u->ptr))
04962                 return False;
04963         if(!prs_uint32("num_names2", ps, depth, &q_u->num_names2))
04964                 return False;
04965 
04966         if (UNMARSHALLING(ps) && (q_u->num_names2 != 0)) {
04967                 q_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_u->num_names2);
04968                 q_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_u->num_names2);
04969                 if (!q_u->hdr_name || !q_u->uni_name)
04970                         return False;
04971         }
04972 
04973         for (i = 0; i < q_u->num_names2; i++) {
04974                 if(!smb_io_unihdr("", &q_u->hdr_name[i], ps, depth))
04975                         return False;
04976         }
04977 
04978         for (i = 0; i < q_u->num_names2; i++) {
04979                 if(!smb_io_unistr2("", &q_u->uni_name[i], q_u->hdr_name[i].buffer, ps, depth))
04980                         return False;
04981         }
04982 
04983         return True;
04984 }

NTSTATUS init_samr_r_lookup_names ( TALLOC_CTX ctx,
SAMR_R_LOOKUP_NAMES r_u,
uint32  num_rids,
uint32 *  rid,
enum lsa_SidType type,
NTSTATUS  status 
)

parse_samr.c4990 行で定義されています。

参照先 r_samr_lookup_names_info::num_rids1r_samr_lookup_names_info::num_rids2r_samr_lookup_names_info::num_types1r_samr_lookup_names_info::num_types2r_samr_lookup_names_info::ptr_ridsr_samr_lookup_names_info::ptr_typesr_samr_lookup_names_info::ridsr_samr_lookup_names_info::statusstatusr_samr_lookup_names_info::types.

参照元 _samr_lookup_names().

04994 {
04995         DEBUG(5, ("init_samr_r_lookup_names\n"));
04996 
04997         if (NT_STATUS_IS_OK(status) && (num_rids != 0)) {
04998                 uint32 i;
04999 
05000                 r_u->num_types1 = num_rids;
05001                 r_u->ptr_types = 1;
05002                 r_u->num_types2 = num_rids;
05003 
05004                 r_u->num_rids1 = num_rids;
05005                 r_u->ptr_rids = 1;
05006                 r_u->num_rids2 = num_rids;
05007 
05008                 if (num_rids) {
05009                         if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
05010                                 return NT_STATUS_NO_MEMORY;
05011                         if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
05012                                 return NT_STATUS_NO_MEMORY;
05013                 } else {
05014                         r_u->rids = NULL;
05015                         r_u->types = NULL;
05016                 }
05017 
05018                 if (!r_u->rids || !r_u->types)
05019                         goto empty;
05020 
05021                 for (i = 0; i < num_rids; i++) {
05022                         r_u->rids[i] = rid[i];
05023                         r_u->types[i] = type[i];
05024                 }
05025         } else {
05026 
05027   empty:
05028                 r_u->num_types1 = 0;
05029                 r_u->ptr_types = 0;
05030                 r_u->num_types2 = 0;
05031 
05032                 r_u->num_rids1 = 0;
05033                 r_u->ptr_rids = 0;
05034                 r_u->num_rids2 = 0;
05035 
05036                 r_u->rids = NULL;
05037                 r_u->types = NULL;
05038         }
05039 
05040         r_u->status = status;
05041 
05042         return NT_STATUS_OK;
05043 }

BOOL samr_io_r_lookup_names ( const char *  desc,
SAMR_R_LOOKUP_NAMES r_u,
prs_struct ps,
int  depth 
)

parse_samr.c5049 行で定義されています。

参照先 prs_debug().

参照元 api_samr_lookup_names()rpccli_samr_lookup_names().

05051 {
05052         uint32 i;
05053         fstring tmp;
05054 
05055         if (r_u == NULL)
05056                 return False;
05057 
05058         prs_debug(ps, depth, desc, "samr_io_r_lookup_names");
05059         depth++;
05060 
05061         if (UNMARSHALLING(ps))
05062                 ZERO_STRUCTP(r_u);
05063 
05064         if(!prs_align(ps))
05065                 return False;
05066 
05067         if(!prs_uint32("num_rids1", ps, depth, &r_u->num_rids1))
05068                 return False;
05069         if(!prs_uint32("ptr_rids ", ps, depth, &r_u->ptr_rids))
05070                 return False;
05071 
05072         if (r_u->ptr_rids != 0) {
05073                 if(!prs_uint32("num_rids2", ps, depth, &r_u->num_rids2))
05074                         return False;
05075 
05076                 if (r_u->num_rids2 != r_u->num_rids1) {
05077                         /* RPC fault */
05078                         return False;
05079                 }
05080 
05081                 if (UNMARSHALLING(ps) && r_u->num_rids2) {
05082                         r_u->rids = PRS_ALLOC_MEM(ps, uint32, r_u->num_rids2);
05083 
05084                         if (!r_u->rids) {
05085                                 DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n"));
05086                                 return False;
05087                         }
05088                 }
05089 
05090                 for (i = 0; i < r_u->num_rids2; i++) {
05091                         slprintf(tmp, sizeof(tmp) - 1, "rid[%02d]  ", i);
05092                         if(!prs_uint32(tmp, ps, depth, &r_u->rids[i]))
05093                                 return False;
05094                 }
05095         }
05096 
05097         if(!prs_uint32("num_types1", ps, depth, &r_u->num_types1))
05098                 return False;
05099         if(!prs_uint32("ptr_types ", ps, depth, &r_u->ptr_types))
05100                 return False;
05101 
05102         if (r_u->ptr_types != 0) {
05103                 if(!prs_uint32("num_types2", ps, depth, &r_u->num_types2))
05104                         return False;
05105 
05106                 if (r_u->num_types2 != r_u->num_types1) {
05107                         /* RPC fault */
05108                         return False;
05109                 }
05110 
05111                 if (UNMARSHALLING(ps) && r_u->num_types2) {
05112                         r_u->types = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2);
05113 
05114                         if (!r_u->types) {
05115                                 DEBUG(0, ("NULL types in samr_io_r_lookup_names\n"));
05116                                 return False;
05117                         }
05118                 }
05119 
05120                 for (i = 0; i < r_u->num_types2; i++) {
05121                         slprintf(tmp, sizeof(tmp) - 1, "type[%02d]  ", i);
05122                         if(!prs_uint32(tmp, ps, depth, &r_u->types[i]))
05123                                 return False;
05124                 }
05125         }
05126 
05127         if(!prs_ntstatus("status", ps, depth, &r_u->status))
05128                 return False;
05129 
05130         return True;
05131 }

void init_samr_q_delete_dom_user ( SAMR_Q_DELETE_DOM_USER q_c,
POLICY_HND hnd 
)

parse_samr.c5137 行で定義されています。

参照先 q_samr_delete_dom_user_info::user_pol.

参照元 rpccli_samr_delete_dom_user().

05139 {
05140         DEBUG(5, ("init_samr_q_delete_dom_user\n"));
05141 
05142         q_c->user_pol = *hnd;
05143 }

BOOL samr_io_q_delete_dom_user ( const char *  desc,
SAMR_Q_DELETE_DOM_USER q_u,
prs_struct ps,
int  depth 
)

parse_samr.c5149 行で定義されています。

参照先 prs_debug()smb_io_pol_hnd()q_samr_delete_dom_user_info::user_pol.

参照元 api_samr_delete_dom_user()rpccli_samr_delete_dom_user().

05151 {
05152         if (q_u == NULL)
05153                 return False;
05154 
05155         prs_debug(ps, depth, desc, "samr_io_q_delete_dom_user");
05156         depth++;
05157 
05158         if(!prs_align(ps))
05159                 return False;
05160 
05161         if(!smb_io_pol_hnd("user_pol", &q_u->user_pol, ps, depth))
05162                 return False;
05163 
05164         return True;
05165 }

BOOL samr_io_r_delete_dom_user ( const char *  desc,
SAMR_R_DELETE_DOM_USER r_u,
prs_struct ps,
int  depth 
)

parse_samr.c5171 行で定義されています。

参照先 r_samr_delete_dom_user_info::polprs_debug()smb_io_pol_hnd()r_samr_delete_dom_user_info::status.

参照元 api_samr_delete_dom_user()rpccli_samr_delete_dom_user().

05173 {
05174         if (r_u == NULL)
05175                 return False;
05176 
05177         prs_debug(ps, depth, desc, "samr_io_r_delete_dom_user");
05178         depth++;
05179 
05180         if(!prs_align(ps))
05181                 return False;
05182 
05183         if(!smb_io_pol_hnd("pol", &r_u->pol, ps, depth))
05184                 return False;
05185         if(!prs_ntstatus("status", ps, depth, &r_u->status))
05186                 return False;
05187 
05188         return True;
05189 }

void init_samr_q_open_user ( SAMR_Q_OPEN_USER q_u,
POLICY_HND pol,
uint32  access_mask,
uint32  rid 
)

parse_samr.c5195 行で定義されています。

参照先 q_samr_open_user_info::access_maskq_samr_open_user_info::domain_polpolq_samr_open_user_info::user_rid.

参照元 rpccli_samr_open_user().

05198 {
05199         DEBUG(5, ("samr_init_samr_q_open_user\n"));
05200 
05201         q_u->domain_pol = *pol;
05202         q_u->access_mask = access_mask;
05203         q_u->user_rid = rid;
05204 }

BOOL samr_io_q_open_user ( const char *  desc,
SAMR_Q_OPEN_USER q_u,
prs_struct ps,
int  depth 
)

parse_samr.c5210 行で定義されています。

参照先 q_samr_open_user_info::access_maskq_samr_open_user_info::domain_polprs_debug()smb_io_pol_hnd()q_samr_open_user_info::user_rid.

参照元 api_samr_open_user()rpccli_samr_open_user().

05212 {
05213         if (q_u == NULL)
05214                 return False;
05215 
05216         prs_debug(ps, depth, desc, "samr_io_q_open_user");
05217         depth++;
05218 
05219         if(!prs_align(ps))
05220                 return False;
05221 
05222         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
05223                 return False;
05224 
05225         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
05226                 return False;
05227         if(!prs_uint32("user_rid ", ps, depth, &q_u->user_rid))
05228                 return False;
05229 
05230         return True;
05231 }

BOOL samr_io_r_open_user ( const char *  desc,
SAMR_R_OPEN_USER r_u,
prs_struct ps,
int  depth 
)

parse_samr.c5237 行で定義されています。

参照先 prs_debug()smb_io_pol_hnd()r_samr_open_user_info::statusr_samr_open_user_info::user_pol.

参照元 api_samr_open_user()rpccli_samr_open_user().

05239 {
05240         if (r_u == NULL)
05241                 return False;
05242 
05243         prs_debug(ps, depth, desc, "samr_io_r_open_user");
05244         depth++;
05245 
05246         if(!prs_align(ps))
05247                 return False;
05248 
05249         if(!smb_io_pol_hnd("user_pol", &r_u->user_pol, ps, depth))
05250                 return False;
05251 
05252         if(!prs_ntstatus("status", ps, depth, &r_u->status))
05253                 return False;
05254 
05255         return True;
05256 }

void init_samr_q_create_user ( SAMR_Q_CREATE_USER q_u,
POLICY_HND pol,
const char *  name,
uint32  acb_info,
uint32  acct_flags 
)

parse_samr.c5263 行で定義されています。

参照先 q_samr_create_user_info::acb_infoq_samr_create_user_info::acct_flagsq_samr_create_user_info::domain_polq_samr_create_user_info::hdr_nameinit_uni_hdr()init_unistr2()polUNI_FLAGS_NONEq_samr_create_user_info::uni_name.

参照元 rpccli_samr_create_dom_user().

05267 {
05268         DEBUG(5, ("samr_init_samr_q_create_user\n"));
05269 
05270         q_u->domain_pol = *pol;
05271 
05272         init_unistr2(&q_u->uni_name, name, UNI_FLAGS_NONE);
05273         init_uni_hdr(&q_u->hdr_name, &q_u->uni_name);
05274 
05275         q_u->acb_info = acb_info;
05276         q_u->acct_flags = acct_flags;
05277 }

BOOL samr_io_q_create_user ( const char *  desc,
SAMR_Q_CREATE_USER q_u,
prs_struct ps,
int  depth 
)

parse_samr.c5283 行で定義されています。

参照先 q_samr_create_user_info::acb_infoq_samr_create_user_info::acct_flagsUNIHDR::bufferq_samr_create_user_info::domain_polq_samr_create_user_info::hdr_nameprs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()q_samr_create_user_info::uni_name.

参照元 api_samr_create_user()rpccli_samr_create_dom_user().

05285 {
05286         if (q_u == NULL)
05287                 return False;
05288 
05289         prs_debug(ps, depth, desc, "samr_io_q_create_user");
05290         depth++;
05291 
05292         if(!prs_align(ps))
05293                 return False;
05294 
05295         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
05296                 return False;
05297 
05298         if(!smb_io_unihdr("hdr_name", &q_u->hdr_name, ps, depth))
05299                 return False;
05300         if(!smb_io_unistr2("uni_name", &q_u->uni_name, q_u->hdr_name.buffer, ps, depth))
05301                 return False;
05302 
05303         if(!prs_align(ps))
05304                 return False;
05305         if(!prs_uint32("acb_info   ", ps, depth, &q_u->acb_info))
05306                 return False;
05307         if(!prs_uint32("acct_flags", ps, depth, &q_u->acct_flags))
05308                 return False;
05309 
05310         return True;
05311 }

BOOL samr_io_r_create_user ( const char *  desc,
SAMR_R_CREATE_USER r_u,
prs_struct ps,
int  depth 
)

parse_samr.c5317 行で定義されています。

参照先 r_samr_create_user_info::access_grantedprs_debug()smb_io_pol_hnd()r_samr_create_user_info::statusr_samr_create_user_info::user_polr_samr_create_user_info::user_rid.

参照元 api_samr_create_user()rpccli_samr_create_dom_user().

05319 {
05320         if (r_u == NULL)
05321                 return False;
05322 
05323         prs_debug(ps, depth, desc, "samr_io_r_create_user");
05324         depth++;
05325 
05326         if(!prs_align(ps))
05327                 return False;
05328 
05329         if(!smb_io_pol_hnd("user_pol", &r_u->user_pol, ps, depth))
05330                 return False;
05331 
05332         if(!prs_uint32("access_granted", ps, depth, &r_u->access_granted))
05333                 return False;
05334         if(!prs_uint32("user_rid ", ps, depth, &r_u->user_rid))
05335                 return False;
05336         if(!prs_ntstatus("status", ps, depth, &r_u->status))
05337                 return False;
05338 
05339         return True;
05340 }

void init_samr_q_query_userinfo ( SAMR_Q_QUERY_USERINFO q_u,
const POLICY_HND hnd,
uint16  switch_value 
)

parse_samr.c5346 行で定義されています。

参照先 q_samr_query_user_info::polq_samr_query_user_info::switch_value.

参照元 rpccli_samr_query_userinfo().

05348 {
05349         DEBUG(5, ("init_samr_q_query_userinfo\n"));
05350 
05351         q_u->pol = *hnd;
05352         q_u->switch_value = switch_value;
05353 }

BOOL samr_io_q_query_userinfo ( const char *  desc,
SAMR_Q_QUERY_USERINFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c5359 行で定義されています。

参照先 q_samr_query_user_info::polprs_debug()smb_io_pol_hnd()q_samr_query_user_info::switch_value.

参照元 api_samr_query_userinfo()rpccli_samr_query_userinfo().

05361 {
05362         if (q_u == NULL)
05363                 return False;
05364 
05365         prs_debug(ps, depth, desc, "samr_io_q_query_userinfo");
05366         depth++;
05367 
05368         if(!prs_align(ps))
05369                 return False;
05370 
05371         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
05372                 return False;
05373 
05374         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value)) /* 0x0015 or 0x0011 */
05375                 return False;
05376 
05377         return True;
05378 }

static BOOL sam_io_logon_hrs ( const char *  desc,
LOGON_HRS hrs,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5384 行で定義されています。

参照先 logon_hours_info::hourslogon_hours_info::lenlogon_hours_info::max_lenlogon_hours_info::offsetprs_debug().

参照元 sam_io_user_info21()sam_io_user_info23()sam_io_user_info25().

05386 {
05387         if (hrs == NULL)
05388                 return False;
05389 
05390         prs_debug(ps, depth, desc, "sam_io_logon_hrs");
05391         depth++;
05392 
05393         if(!prs_align(ps))
05394                 return False;
05395 
05396         if(!prs_uint32("maxlen", ps, depth, &hrs->max_len))
05397                 return False;
05398 
05399         if(!prs_uint32("offset", ps, depth, &hrs->offset))
05400                 return False;
05401 
05402         if(!prs_uint32("len  ", ps, depth, &hrs->len))
05403                 return False;
05404 
05405         if (hrs->len > sizeof(hrs->hours)) {
05406                 DEBUG(3, ("sam_io_logon_hrs: truncating length from %d\n", hrs->len));
05407                 hrs->len = sizeof(hrs->hours);
05408         }
05409 
05410         if(!prs_uint8s(False, "hours", ps, depth, hrs->hours, hrs->len))
05411                 return False;
05412 
05413         return True;
05414 }

void init_sam_user_info18 ( SAM_USER_INFO_18 usr,
const uint8  lm_pwd[16],
const uint8  nt_pwd[16] 
)

parse_samr.c5420 行で定義されています。

参照先 sam_user_info_18::lm_pwdsam_user_info_18::lm_pwd_activesam_user_info_18::nt_pwdsam_user_info_18::nt_pwd_active.

参照元 get_user_info_18()make_samr_userinfo_ctr_usr21().

05422 {
05423         DEBUG(5, ("init_sam_user_info18\n"));
05424 
05425         usr->lm_pwd_active =
05426                 memcpy(usr->lm_pwd, lm_pwd, sizeof(usr->lm_pwd)) ? 1 : 0;
05427         usr->nt_pwd_active =
05428                 memcpy(usr->nt_pwd, nt_pwd, sizeof(usr->nt_pwd)) ? 1 : 0;
05429 }

static BOOL sam_io_user_info18 ( const char *  desc,
SAM_USER_INFO_18 u,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5435 行で定義されています。

参照先 sam_user_info_18::lm_pwdsam_user_info_18::lm_pwd_activesam_user_info_18::nt_pwdsam_user_info_18::nt_pwd_activeprs_debug().

参照元 samr_io_userinfo_ctr().

05437 {
05438         if (u == NULL)
05439                 return False;
05440 
05441         prs_debug(ps, depth, desc, "samr_io_r_user_info18");
05442         depth++;
05443 
05444         if(!prs_align(ps))
05445                 return False;
05446 
05447         if(!prs_uint8s(False, "lm_pwd", ps, depth, u->lm_pwd, sizeof(u->lm_pwd)))
05448                 return False;
05449         if(!prs_uint8s(False, "nt_pwd", ps, depth, u->nt_pwd, sizeof(u->nt_pwd)))
05450                 return False;
05451 
05452         if(!prs_uint8("lm_pwd_active", ps, depth, &u->lm_pwd_active))
05453                 return False;
05454         if(!prs_uint8("nt_pwd_active", ps, depth, &u->nt_pwd_active))
05455                 return False;
05456 
05457         return True;
05458 }

void init_sam_user_info7 ( SAM_USER_INFO_7 usr,
const char *  name 
)

parse_samr.c5464 行で定義されています。

参照先 sam_user_info_7::hdr_nameinit_uni_hdr()init_unistr2()UNI_FLAGS_NONEsam_user_info_7::uni_name.

参照元 cac_SamRenameUser()get_user_info_7()rpc_user_rename_internals().

05465 {
05466         DEBUG(5, ("init_sam_user_info7\n"));
05467 
05468         init_unistr2(&usr->uni_name, name, UNI_FLAGS_NONE);     /* unicode string for name */
05469         init_uni_hdr(&usr->hdr_name, &usr->uni_name);           /* unicode header for name */
05470 
05471 }

static BOOL sam_io_user_info7 ( const char *  desc,
SAM_USER_INFO_7 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5477 行で定義されています。

参照先 sam_user_info_7::hdr_nameprs_debug()smb_io_unihdr()smb_io_unistr2()sam_user_info_7::uni_name.

参照元 samr_io_userinfo_ctr().

05479 {
05480         if (usr == NULL)
05481                 return False;
05482 
05483         prs_debug(ps, depth, desc, "samr_io_r_user_info7");
05484         depth++;
05485 
05486         if(!prs_align(ps))
05487                 return False;
05488 
05489         if(!smb_io_unihdr("unihdr", &usr->hdr_name, ps, depth))
05490                 return False;
05491 
05492         if(!smb_io_unistr2("unistr2", &usr->uni_name, True, ps, depth))
05493                 return False;
05494 
05495         return True;
05496 }

void init_sam_user_info9 ( SAM_USER_INFO_9 usr,
uint32  rid_group 
)

parse_samr.c5502 行で定義されています。

参照先 sam_user_info_9::rid_group.

参照元 get_user_info_9().

05503 {
05504         DEBUG(5, ("init_sam_user_info9\n"));
05505 
05506         usr->rid_group = rid_group;
05507 }

static BOOL sam_io_user_info9 ( const char *  desc,
SAM_USER_INFO_9 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5513 行で定義されています。

参照先 prs_debug()sam_user_info_9::rid_group.

参照元 samr_io_userinfo_ctr().

05515 {
05516         if (usr == NULL)
05517                 return False;
05518 
05519         prs_debug(ps, depth, desc, "samr_io_r_user_info9");
05520         depth++;
05521 
05522         if(!prs_align(ps))
05523                 return False;
05524 
05525         if(!prs_uint32("rid_group", ps, depth, &usr->rid_group))
05526                 return False;
05527 
05528         return True;
05529 }

void init_sam_user_info16 ( SAM_USER_INFO_16 usr,
uint32  acb_info 
)

parse_samr.c5535 行で定義されています。

参照先 sam_user_info_16::acb_info.

参照元 get_user_info_16()make_samr_userinfo_ctr_usr21()net_rpc_join_newstyle().

05536 {
05537         DEBUG(5, ("init_sam_user_info16\n"));
05538 
05539         usr->acb_info = acb_info;
05540 }

static BOOL sam_io_user_info16 ( const char *  desc,
SAM_USER_INFO_16 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5546 行で定義されています。

参照先 sam_user_info_16::acb_infoprs_debug().

参照元 samr_io_userinfo_ctr().

05548 {
05549         if (usr == NULL)
05550                 return False;
05551 
05552         prs_debug(ps, depth, desc, "samr_io_r_user_info16");
05553         depth++;
05554 
05555         if(!prs_align(ps))
05556                 return False;
05557 
05558         if(!prs_uint32("acb_info", ps, depth, &usr->acb_info))
05559                 return False;
05560 
05561         return True;
05562 }

void init_sam_user_info17 ( SAM_USER_INFO_17 usr,
NTTIME expiry,
char *  mach_acct,
uint32  rid_user,
uint32  rid_group,
uint16  acct_ctrl 
)

parse_samr.c5568 行で定義されています。

参照先 sam_user_info_17::acct_ctrlsam_user_info_17::expirysam_user_info_17::hdr_mach_acctinit_uni_hdr()init_unistr2()sam_user_info_17::padding_1sam_user_info_17::padding_2sam_user_info_17::padding_3sam_user_info_17::padding_4sam_user_info_17::padding_5sam_user_info_17::padding_6sam_user_info_17::padding_7sam_user_info_17::padding_8sam_user_info_17::ptr_1sam_user_info_17::ptr_2sam_user_info_17::ptr_3sam_user_info_17::rid_groupsam_user_info_17::rid_userUNI_FLAGS_NONEsam_user_info_17::uni_mach_acctsam_user_info_17::unknown_3sam_user_info_17::unknown_4sam_user_info_17::unknown_5.

05572 {
05573         DEBUG(5, ("init_sam_user_info17\n"));
05574 
05575         memcpy(&usr->expiry, expiry, sizeof(usr->expiry));      /* expiry time or something? */
05576         ZERO_STRUCT(usr->padding_1);    /* 0 - padding 24 bytes */
05577 
05578         usr->padding_2 = 0;     /* 0 - padding 4 bytes */
05579 
05580         usr->ptr_1 = 1;         /* pointer */
05581         ZERO_STRUCT(usr->padding_3);    /* 0 - padding 32 bytes */
05582         usr->padding_4 = 0;     /* 0 - padding 4 bytes */
05583 
05584         usr->ptr_2 = 1;         /* pointer */
05585         usr->padding_5 = 0;     /* 0 - padding 4 bytes */
05586 
05587         usr->ptr_3 = 1;         /* pointer */
05588         ZERO_STRUCT(usr->padding_6);    /* 0 - padding 32 bytes */
05589 
05590         usr->rid_user = rid_user;
05591         usr->rid_group = rid_group;
05592 
05593         usr->acct_ctrl = acct_ctrl;
05594         usr->unknown_3 = 0x0000;
05595 
05596         usr->unknown_4 = 0x003f;        /* 0x003f      - 16 bit unknown */
05597         usr->unknown_5 = 0x003c;        /* 0x003c      - 16 bit unknown */
05598 
05599         ZERO_STRUCT(usr->padding_7);    /* 0 - padding 16 bytes */
05600         usr->padding_8 = 0;     /* 0 - padding 4 bytes */
05601 
05602         init_unistr2(&usr->uni_mach_acct, mach_acct, UNI_FLAGS_NONE);   /* unicode string for machine account */
05603         init_uni_hdr(&usr->hdr_mach_acct, &usr->uni_mach_acct); /* unicode header for machine account */
05604 }

static BOOL sam_io_user_info17 ( const char *  desc,
SAM_USER_INFO_17 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5610 行で定義されています。

参照先 sam_user_info_17::acct_ctrlsam_user_info_17::expirysam_user_info_17::hdr_mach_acctsam_user_info_17::padding_0sam_user_info_17::padding_1sam_user_info_17::padding_2sam_user_info_17::padding_3sam_user_info_17::padding_4sam_user_info_17::padding_5sam_user_info_17::padding_6sam_user_info_17::padding_7sam_user_info_17::padding_8sam_user_info_17::padding_9prs_debug()sam_user_info_17::ptr_1sam_user_info_17::ptr_2sam_user_info_17::ptr_3sam_user_info_17::rid_groupsam_user_info_17::rid_usersmb_io_time()smb_io_unihdr()smb_io_unistr2()sam_user_info_17::uni_mach_acctsam_user_info_17::unknown_3sam_user_info_17::unknown_4sam_user_info_17::unknown_5.

参照元 samr_io_userinfo_ctr().

05612 {
05613         if (usr == NULL)
05614                 return False;
05615 
05616         prs_debug(ps, depth, desc, "samr_io_r_unknown_17");
05617         depth++;
05618 
05619         if(!prs_align(ps))
05620                 return False;
05621 
05622         if(!prs_uint8s(False, "padding_0", ps, depth, usr->padding_0, sizeof(usr->padding_0)))
05623                 return False;
05624 
05625         if(!smb_io_time("time", &usr->expiry, ps, depth))
05626                 return False;
05627 
05628         if(!prs_uint8s(False, "padding_1", ps, depth, usr->padding_1, sizeof(usr->padding_1)))
05629                 return False;
05630 
05631         if(!smb_io_unihdr("unihdr", &usr->hdr_mach_acct, ps, depth))
05632                 return False;
05633 
05634         if(!prs_uint32("padding_2", ps, depth, &usr->padding_2))
05635                 return False;
05636 
05637         if(!prs_uint32("ptr_1    ", ps, depth, &usr->ptr_1))
05638                 return False;
05639         if(!prs_uint8s(False, "padding_3", ps, depth, usr->padding_3, sizeof(usr->padding_3)))
05640                 return False;
05641 
05642         if(!prs_uint32("padding_4", ps, depth, &usr->padding_4))
05643                 return False;
05644 
05645         if(!prs_uint32("ptr_2    ", ps, depth, &usr->ptr_2))
05646                 return False;
05647         if(!prs_uint32("padding_5", ps, depth, &usr->padding_5))
05648                 return False;
05649 
05650         if(!prs_uint32("ptr_3    ", ps, depth, &usr->ptr_3))
05651                 return False;
05652         if(!prs_uint8s(False, "padding_6", ps, depth, usr->padding_6,sizeof(usr->padding_6)))
05653                 return False;
05654 
05655         if(!prs_uint32("rid_user ", ps, depth, &usr->rid_user))
05656                 return False;
05657         if(!prs_uint32("rid_group", ps, depth, &usr->rid_group))
05658                 return False;
05659         if(!prs_uint16("acct_ctrl", ps, depth, &usr->acct_ctrl))
05660                 return False;
05661         if(!prs_uint16("unknown_3", ps, depth, &usr->unknown_3))
05662                 return False;
05663         if(!prs_uint16("unknown_4", ps, depth, &usr->unknown_4))
05664                 return False;
05665         if(!prs_uint16("unknown_5", ps, depth, &usr->unknown_5))
05666                 return False;
05667 
05668         if(!prs_uint8s(False, "padding_7", ps, depth, usr->padding_7, sizeof(usr->padding_7)))
05669                 return False;
05670 
05671         if(!prs_uint32("padding_8", ps, depth, &(usr->padding_8)))
05672                 return False;
05673 
05674         if(!smb_io_unistr2("unistr2", &usr->uni_mach_acct, True, ps, depth))
05675                 return False;
05676 
05677         if(!prs_align(ps))
05678                 return False;
05679 
05680         if(!prs_uint8s(False, "padding_9", ps, depth, usr->padding_9, sizeof(usr->padding_9)))
05681                 return False;
05682 
05683         return True;
05684 }

void init_sam_user_info24 ( SAM_USER_INFO_24 usr,
char  newpass[516],
uint8  pw_len 
)

parse_samr.c5690 行で定義されています。

参照先 sam_user_info_24::passsam_user_info_24::pw_len.

参照元 cac_SamSetPassword()net_rpc_join_newstyle()netdom_join_domain()rpc_user_add_internals()rpc_user_password_internals().

05692 {
05693         DEBUG(10, ("init_sam_user_info24:\n"));
05694         memcpy(usr->pass, newpass, sizeof(usr->pass));
05695         usr->pw_len = pw_len;
05696 }

static BOOL sam_io_user_info24 ( const char *  desc,
SAM_USER_INFO_24 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5702 行で定義されています。

参照先 sam_user_info_24::passprs_debug()sam_user_info_24::pw_len.

参照元 samr_io_userinfo_ctr().

05704 {
05705         if (usr == NULL)
05706                 return False;
05707 
05708         prs_debug(ps, depth, desc, "sam_io_user_info24");
05709         depth++;
05710 
05711         if(!prs_align(ps))
05712                 return False;
05713 
05714         if(!prs_uint8s(False, "password", ps, depth, usr->pass, 
05715                        sizeof(usr->pass)))
05716                 return False;
05717         
05718         if (MARSHALLING(ps) && (usr->pw_len != 0)) {
05719                 if (!prs_uint8("pw_len", ps, depth, &usr->pw_len))
05720                         return False;
05721         } else if (UNMARSHALLING(ps)) {
05722                 if (!prs_uint8("pw_len", ps, depth, &usr->pw_len))
05723                         return False;
05724         }
05725 
05726         return True;
05727 }

static BOOL sam_io_user_info26 ( const char *  desc,
SAM_USER_INFO_26 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5733 行で定義されています。

参照先 sam_user_info_26::passprs_debug()sam_user_info_26::pw_len.

参照元 samr_io_userinfo_ctr().

05735 {
05736         if (usr == NULL)
05737                 return False;
05738 
05739         prs_debug(ps, depth, desc, "sam_io_user_info26");
05740         depth++;
05741 
05742         if(!prs_align(ps))
05743                 return False;
05744 
05745         if(!prs_uint8s(False, "password", ps, depth, usr->pass, 
05746                        sizeof(usr->pass)))
05747                 return False;
05748         
05749         if (!prs_uint8("pw_len", ps, depth, &usr->pw_len))
05750                 return False;
05751 
05752         return True;
05753 }

void init_sam_user_info23W ( SAM_USER_INFO_23 usr,
NTTIME logon_time,
NTTIME logoff_time,
NTTIME kickoff_time,
NTTIME pass_last_set_time,
NTTIME pass_can_change_time,
NTTIME pass_must_change_time,
UNISTR2 user_name,
UNISTR2 full_name,
UNISTR2 home_dir,
UNISTR2 dir_drive,
UNISTR2 log_scr,
UNISTR2 prof_path,
UNISTR2 desc,
UNISTR2 wkstas,
UNISTR2 unk_str,
UNISTR2 mung_dial,
uint32  user_rid,
uint32  group_rid,
uint32  acb_info,
uint32  fields_present,
uint16  logon_divs,
LOGON_HRS hrs,
uint16  bad_password_count,
uint16  logon_count,
char  newpass[516] 
)

parse_samr.c5763 行で定義されています。

参照先 sam_user_info_23::acb_infosam_user_info_23::bad_password_countcopy_unistr2()sam_user_info_23::fields_presentsam_user_info_23::group_ridsam_user_info_23::hdr_acct_descsam_user_info_23::hdr_commentsam_user_info_23::hdr_dir_drivesam_user_info_23::hdr_full_namesam_user_info_23::hdr_home_dirsam_user_info_23::hdr_logon_scriptsam_user_info_23::hdr_munged_dialsam_user_info_23::hdr_profile_pathsam_user_info_23::hdr_user_namesam_user_info_23::hdr_workstationsinit_uni_hdr()sam_user_info_23::kickoff_timesam_user_info_23::lm_pwdsam_user_info_23::logoff_timesam_user_info_23::logon_countsam_user_info_23::logon_divssam_user_info_23::logon_hrssam_user_info_23::logon_timesam_user_info_23::nt_pwdnt_time_is_zero()sam_user_info_23::padding1sam_user_info_23::padding2sam_user_info_23::passsam_user_info_23::pass_can_change_timesam_user_info_23::pass_last_set_timesam_user_info_23::pass_must_change_timesam_user_info_23::passmustchangesam_user_info_23::ptr_logon_hrssam_user_info_23::uni_acct_descsam_user_info_23::uni_commentsam_user_info_23::uni_dir_drivesam_user_info_23::uni_full_namesam_user_info_23::uni_home_dirsam_user_info_23::uni_logon_scriptsam_user_info_23::uni_munged_dialsam_user_info_23::uni_profile_pathsam_user_info_23::uni_user_namesam_user_info_23::uni_workstationsuser_namesam_user_info_23::user_rid.

05788 {
05789         usr->logon_time = *logon_time;  /* all zeros */
05790         usr->logoff_time = *logoff_time;        /* all zeros */
05791         usr->kickoff_time = *kickoff_time;      /* all zeros */
05792         usr->pass_last_set_time = *pass_last_set_time;  /* all zeros */
05793         usr->pass_can_change_time = *pass_can_change_time;      /* all zeros */
05794         usr->pass_must_change_time = *pass_must_change_time;    /* all zeros */
05795 
05796         ZERO_STRUCT(usr->nt_pwd);
05797         ZERO_STRUCT(usr->lm_pwd);
05798 
05799         usr->user_rid = user_rid;       /* 0x0000 0000 */
05800         usr->group_rid = group_rid;
05801         usr->acb_info = acb_info;
05802         usr->fields_present = fields_present;   /* 09f8 27fa */
05803 
05804         usr->logon_divs = logon_divs;   /* should be 168 (hours/week) */
05805         usr->ptr_logon_hrs = hrs ? 1 : 0;
05806 
05807         if (nt_time_is_zero(pass_must_change_time)) {
05808                 usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
05809         } else {
05810                 usr->passmustchange=0;
05811         }
05812 
05813         ZERO_STRUCT(usr->padding1);
05814         ZERO_STRUCT(usr->padding2);
05815 
05816         usr->bad_password_count = bad_password_count;
05817         usr->logon_count = logon_count;
05818 
05819         memcpy(usr->pass, newpass, sizeof(usr->pass));
05820 
05821         copy_unistr2(&usr->uni_user_name, user_name);
05822         init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
05823 
05824         copy_unistr2(&usr->uni_full_name, full_name);
05825         init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
05826 
05827         copy_unistr2(&usr->uni_home_dir, home_dir);
05828         init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
05829 
05830         copy_unistr2(&usr->uni_dir_drive, dir_drive);
05831         init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
05832 
05833         copy_unistr2(&usr->uni_logon_script, log_scr);
05834         init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
05835 
05836         copy_unistr2(&usr->uni_profile_path, prof_path);
05837         init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
05838 
05839         copy_unistr2(&usr->uni_acct_desc, desc);
05840         init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
05841 
05842         copy_unistr2(&usr->uni_workstations, wkstas);
05843         init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
05844 
05845         copy_unistr2(&usr->uni_comment, unk_str);
05846         init_uni_hdr(&usr->hdr_comment, &usr->uni_comment);
05847 
05848         copy_unistr2(&usr->uni_munged_dial, mung_dial);
05849         init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
05850 
05851         if (hrs) {
05852                 memcpy(&usr->logon_hrs, hrs, sizeof(usr->logon_hrs));
05853         } else {
05854                 ZERO_STRUCT(usr->logon_hrs);
05855         }
05856 }

void init_sam_user_info23A ( SAM_USER_INFO_23 usr,
NTTIME logon_time,
NTTIME logoff_time,
NTTIME kickoff_time,
NTTIME pass_last_set_time,
NTTIME pass_can_change_time,
NTTIME pass_must_change_time,
char *  user_name,
char *  full_name,
char *  home_dir,
char *  dir_drive,
char *  log_scr,
char *  prof_path,
const char *  desc,
char *  wkstas,
char *  unk_str,
char *  mung_dial,
uint32  user_rid,
uint32  group_rid,
uint32  acb_info,
uint32  fields_present,
uint16  logon_divs,
LOGON_HRS hrs,
uint16  bad_password_count,
uint16  logon_count,
char  newpass[516] 
)

parse_samr.c5865 行で定義されています。

参照先 sam_user_info_23::acb_infosam_user_info_23::bad_password_countbase64_decode_data_blob()data_blob_free()sam_user_info_23::fields_presentsam_user_info_23::group_ridsam_user_info_23::hdr_acct_descsam_user_info_23::hdr_commentsam_user_info_23::hdr_dir_drivesam_user_info_23::hdr_full_namesam_user_info_23::hdr_home_dirsam_user_info_23::hdr_logon_scriptsam_user_info_23::hdr_munged_dialsam_user_info_23::hdr_profile_pathsam_user_info_23::hdr_user_namesam_user_info_23::hdr_workstationsinit_uni_hdr()init_unistr2()init_unistr2_from_datablob()sam_user_info_23::kickoff_timesam_user_info_23::lm_pwdsam_user_info_23::logoff_timesam_user_info_23::logon_countsam_user_info_23::logon_divssam_user_info_23::logon_hrssam_user_info_23::logon_timesam_user_info_23::nt_pwdnt_time_is_zero()sam_user_info_23::padding1sam_user_info_23::padding2sam_user_info_23::passsam_user_info_23::pass_can_change_timesam_user_info_23::pass_last_set_timesam_user_info_23::pass_must_change_timesam_user_info_23::passmustchangesam_user_info_23::ptr_logon_hrssam_user_info_23::uni_acct_descsam_user_info_23::uni_commentsam_user_info_23::uni_dir_driveUNI_FLAGS_NONEsam_user_info_23::uni_full_namesam_user_info_23::uni_home_dirsam_user_info_23::uni_logon_scriptsam_user_info_23::uni_munged_dialsam_user_info_23::uni_profile_pathsam_user_info_23::uni_user_namesam_user_info_23::uni_workstationssam_user_info_23::user_rid.

参照元 rpc_trustdom_add_internals().

05880 {
05881         DATA_BLOB blob = base64_decode_data_blob(mung_dial);
05882         
05883         usr->logon_time = *logon_time;  /* all zeros */
05884         usr->logoff_time = *logoff_time;        /* all zeros */
05885         usr->kickoff_time = *kickoff_time;      /* all zeros */
05886         usr->pass_last_set_time = *pass_last_set_time;  /* all zeros */
05887         usr->pass_can_change_time = *pass_can_change_time;      /* all zeros */
05888         usr->pass_must_change_time = *pass_must_change_time;    /* all zeros */
05889 
05890         ZERO_STRUCT(usr->nt_pwd);
05891         ZERO_STRUCT(usr->lm_pwd);
05892 
05893         usr->user_rid = user_rid;       /* 0x0000 0000 */
05894         usr->group_rid = group_rid;
05895         usr->acb_info = acb_info;
05896         usr->fields_present = fields_present;   /* 09f8 27fa */
05897 
05898         usr->logon_divs = logon_divs;   /* should be 168 (hours/week) */
05899         usr->ptr_logon_hrs = hrs ? 1 : 0;
05900 
05901         if (nt_time_is_zero(pass_must_change_time)) {
05902                 usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
05903         } else {
05904                 usr->passmustchange=0;
05905         }
05906 
05907         ZERO_STRUCT(usr->padding1);
05908         ZERO_STRUCT(usr->padding2);
05909 
05910         usr->bad_password_count = bad_password_count;
05911         usr->logon_count = logon_count;
05912 
05913         memcpy(usr->pass, newpass, sizeof(usr->pass));
05914 
05915         init_unistr2(&usr->uni_user_name, user_name, UNI_FLAGS_NONE);
05916         init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
05917 
05918         init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE);
05919         init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
05920 
05921         init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE);
05922         init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
05923 
05924         init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE);
05925         init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
05926 
05927         init_unistr2(&usr->uni_logon_script, log_scr, UNI_FLAGS_NONE);
05928         init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
05929 
05930         init_unistr2(&usr->uni_profile_path, prof_path, UNI_FLAGS_NONE);
05931         init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
05932 
05933         init_unistr2(&usr->uni_acct_desc, desc, UNI_FLAGS_NONE);
05934         init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
05935 
05936         init_unistr2(&usr->uni_workstations, wkstas, UNI_FLAGS_NONE);
05937         init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
05938 
05939         init_unistr2(&usr->uni_comment, unk_str, UNI_FLAGS_NONE);
05940         init_uni_hdr(&usr->hdr_comment, &usr->uni_comment);
05941 
05942         init_unistr2_from_datablob(&usr->uni_munged_dial, &blob);
05943         init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
05944 
05945         data_blob_free(&blob);
05946         
05947         if (hrs) {
05948                 memcpy(&usr->logon_hrs, hrs, sizeof(usr->logon_hrs));
05949         } else {
05950                 ZERO_STRUCT(usr->logon_hrs);
05951         }
05952 }

void init_sam_user_info25P ( SAM_USER_INFO_25 usr,
uint32  fields_present,
uint32  acb_info,
char  newpass[532] 
)

parse_samr.c5960 行で定義されています。

参照先 sam_user_info_25::acb_infosam_user_info_25::fields_presentsam_user_info_25::padding1sam_user_info_25::padding2sam_user_info_25::pass.

参照元 netdom_join_domain().

05963 {
05964         usr->fields_present = fields_present;
05965         ZERO_STRUCT(usr->padding1);
05966         ZERO_STRUCT(usr->padding2);
05967 
05968         usr->acb_info = acb_info;
05969         memcpy(usr->pass, newpass, sizeof(usr->pass));
05970 }

static BOOL sam_io_user_info23 ( const char *  desc,
SAM_USER_INFO_23 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c5977 行で定義されています。

参照先 sam_user_info_23::acb_infosam_user_info_23::bad_password_countUNIHDR::buffersam_user_info_23::fields_presentsam_user_info_23::group_ridsam_user_info_23::hdr_acct_descsam_user_info_23::hdr_commentsam_user_info_23::hdr_dir_drivesam_user_info_23::hdr_full_namesam_user_info_23::hdr_home_dirsam_user_info_23::hdr_logon_scriptsam_user_info_23::hdr_munged_dialsam_user_info_23::hdr_profile_pathsam_user_info_23::hdr_user_namesam_user_info_23::hdr_workstationssam_user_info_23::kickoff_timesam_user_info_23::lm_pwdsam_user_info_23::logoff_timesam_user_info_23::logon_countsam_user_info_23::logon_divssam_user_info_23::logon_hrssam_user_info_23::logon_timesam_user_info_23::nt_pwdsam_user_info_23::padding1sam_user_info_23::padding2sam_user_info_23::passsam_user_info_23::pass_can_change_timesam_user_info_23::pass_last_set_timesam_user_info_23::pass_must_change_timesam_user_info_23::passmustchangeprs_debug()sam_user_info_23::ptr_logon_hrssam_io_logon_hrs()smb_io_time()smb_io_unihdr()smb_io_unistr2()sam_user_info_23::uni_acct_descsam_user_info_23::uni_commentsam_user_info_23::uni_dir_drivesam_user_info_23::uni_full_namesam_user_info_23::uni_home_dirsam_user_info_23::uni_logon_scriptsam_user_info_23::uni_munged_dialsam_user_info_23::uni_profile_pathsam_user_info_23::uni_user_namesam_user_info_23::uni_workstationssam_user_info_23::user_rid.

参照元 samr_io_userinfo_ctr().

05979 {
05980         if (usr == NULL)
05981                 return False;
05982 
05983         prs_debug(ps, depth, desc, "sam_io_user_info23");
05984         depth++;
05985 
05986         if(!prs_align(ps))
05987                 return False;
05988 
05989         if(!smb_io_time("logon_time           ", &usr->logon_time, ps, depth))
05990                 return False;
05991         if(!smb_io_time("logoff_time          ", &usr->logoff_time, ps, depth))
05992                 return False;
05993         if(!smb_io_time("kickoff_time         ", &usr->kickoff_time, ps, depth))
05994                 return False;
05995         if(!smb_io_time("pass_last_set_time   ", &usr->pass_last_set_time, ps, depth))
05996                 return False;
05997         if(!smb_io_time("pass_can_change_time ", &usr->pass_can_change_time, ps, depth))
05998                 return False;
05999         if(!smb_io_time("pass_must_change_time", &usr->pass_must_change_time, ps, depth))
06000                 return False;
06001 
06002         if(!smb_io_unihdr("hdr_user_name   ", &usr->hdr_user_name, ps, depth))  /* username unicode string header */
06003                 return False;
06004         if(!smb_io_unihdr("hdr_full_name   ", &usr->hdr_full_name, ps, depth))  /* user's full name unicode string header */
06005                 return False;
06006         if(!smb_io_unihdr("hdr_home_dir    ", &usr->hdr_home_dir, ps, depth))   /* home directory unicode string header */
06007                 return False;
06008         if(!smb_io_unihdr("hdr_dir_drive   ", &usr->hdr_dir_drive, ps, depth))  /* home directory drive */
06009                 return False;
06010         if(!smb_io_unihdr("hdr_logon_script", &usr->hdr_logon_script, ps, depth))       /* logon script unicode string header */
06011                 return False;
06012         if(!smb_io_unihdr("hdr_profile_path", &usr->hdr_profile_path, ps, depth))       /* profile path unicode string header */
06013                 return False;
06014         if(!smb_io_unihdr("hdr_acct_desc   ", &usr->hdr_acct_desc, ps, depth))  /* account desc */
06015                 return False;
06016         if(!smb_io_unihdr("hdr_workstations", &usr->hdr_workstations, ps, depth))       /* wkstas user can log on from */
06017                 return False;
06018         if(!smb_io_unihdr("hdr_comment ", &usr->hdr_comment, ps, depth))        /* unknown string */
06019                 return False;
06020         if(!smb_io_unihdr("hdr_munged_dial ", &usr->hdr_munged_dial, ps, depth))        /* wkstas user can log on from */
06021                 return False;
06022 
06023         if(!prs_uint8s(False, "lm_pwd        ", ps, depth, usr->lm_pwd, sizeof(usr->lm_pwd)))
06024                 return False;
06025         if(!prs_uint8s(False, "nt_pwd        ", ps, depth, usr->nt_pwd, sizeof(usr->nt_pwd)))
06026                 return False;
06027 
06028         if(!prs_uint32("user_rid      ", ps, depth, &usr->user_rid))    /* User ID */
06029                 return False;
06030         if(!prs_uint32("group_rid     ", ps, depth, &usr->group_rid))   /* Group ID */
06031                 return False;
06032         if(!prs_uint32("acb_info      ", ps, depth, &usr->acb_info))
06033                 return False;
06034 
06035         if(!prs_uint32("fields_present ", ps, depth, &usr->fields_present))
06036                 return False;
06037         if(!prs_uint16("logon_divs    ", ps, depth, &usr->logon_divs))  /* logon divisions per week */
06038                 return False;
06039         if(!prs_align(ps))
06040                 return False;
06041         if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs))
06042                 return False;
06043 
06044         if(!prs_uint16("bad_password_count     ", ps, depth, &usr->bad_password_count))
06045                 return False;
06046         if(!prs_uint16("logon_count     ", ps, depth, &usr->logon_count))
06047                 return False;
06048 
06049         if(!prs_uint8s(False, "padding1      ", ps, depth, usr->padding1, sizeof(usr->padding1)))
06050                 return False;
06051         if(!prs_uint8("passmustchange ", ps, depth, &usr->passmustchange))
06052                 return False;
06053         if(!prs_uint8("padding2       ", ps, depth, &usr->padding2))
06054                 return False;
06055 
06056 
06057         if(!prs_uint8s(False, "password      ", ps, depth, usr->pass, sizeof(usr->pass)))
06058                 return False;
06059 
06060         /* here begins pointed-to data */
06061 
06062         if(!smb_io_unistr2("uni_user_name   ", &usr->uni_user_name, usr->hdr_user_name.buffer, ps, depth))      /* username unicode string */
06063                 return False;
06064 
06065         if(!smb_io_unistr2("uni_full_name   ", &usr->uni_full_name, usr->hdr_full_name.buffer, ps, depth))      /* user's full name unicode string */
06066                 return False;
06067 
06068         if(!smb_io_unistr2("uni_home_dir    ", &usr->uni_home_dir, usr->hdr_home_dir.buffer, ps, depth))        /* home directory unicode string */
06069                 return False;
06070 
06071         if(!smb_io_unistr2("uni_dir_drive   ", &usr->uni_dir_drive, usr->hdr_dir_drive.buffer, ps, depth))      /* home directory drive unicode string */
06072                 return False;
06073 
06074         if(!smb_io_unistr2("uni_logon_script", &usr->uni_logon_script, usr->hdr_logon_script.buffer, ps, depth))        /* logon script unicode string */
06075                 return False;
06076 
06077         if(!smb_io_unistr2("uni_profile_path", &usr->uni_profile_path, usr->hdr_profile_path.buffer, ps, depth))        /* profile path unicode string */
06078                 return False;
06079 
06080         if(!smb_io_unistr2("uni_acct_desc   ", &usr->uni_acct_desc, usr->hdr_acct_desc.buffer, ps, depth))      /* user desc unicode string */
06081                 return False;
06082 
06083         if(!smb_io_unistr2("uni_workstations", &usr->uni_workstations, usr->hdr_workstations.buffer, ps, depth))        /* worksations user can log on from */
06084                 return False;
06085 
06086         if(!smb_io_unistr2("uni_comment ", &usr->uni_comment, usr->hdr_comment.buffer, ps, depth))      /* unknown string */
06087                 return False;
06088 
06089         if(!smb_io_unistr2("uni_munged_dial ", &usr->uni_munged_dial, usr->hdr_munged_dial.buffer, ps, depth))
06090                 return False;
06091 
06092         /* ok, this is only guess-work (as usual) */
06093         if (usr->ptr_logon_hrs) {
06094                 if(!sam_io_logon_hrs("logon_hrs", &usr->logon_hrs, ps, depth))
06095                         return False;
06096         } 
06097 
06098         return True;
06099 }

static BOOL sam_io_user_info25 ( const char *  desc,
SAM_USER_INFO_25 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c6108 行で定義されています。

参照先 sam_user_info_25::acb_infosam_user_info_25::bad_password_countUNIHDR::buffersam_user_info_25::fields_presentsam_user_info_25::group_ridsam_user_info_25::hdr_acct_descsam_user_info_25::hdr_commentsam_user_info_25::hdr_dir_drivesam_user_info_25::hdr_full_namesam_user_info_25::hdr_home_dirsam_user_info_25::hdr_logon_scriptsam_user_info_25::hdr_munged_dialsam_user_info_25::hdr_profile_pathsam_user_info_25::hdr_user_namesam_user_info_25::hdr_workstationssam_user_info_25::kickoff_timesam_user_info_25::lm_pwdsam_user_info_25::logoff_timesam_user_info_25::logon_countsam_user_info_25::logon_divssam_user_info_25::logon_hrssam_user_info_25::logon_timesam_user_info_25::nt_pwdsam_user_info_25::padding1sam_user_info_25::padding2sam_user_info_25::passsam_user_info_25::pass_can_change_timesam_user_info_25::pass_last_set_timesam_user_info_25::pass_must_change_timesam_user_info_25::passmustchangeprs_debug()sam_user_info_25::ptr_logon_hrssam_io_logon_hrs()smb_io_time()smb_io_unihdr()smb_io_unistr2()sam_user_info_25::uni_acct_descsam_user_info_25::uni_commentsam_user_info_25::uni_dir_drivesam_user_info_25::uni_full_namesam_user_info_25::uni_home_dirsam_user_info_25::uni_logon_scriptsam_user_info_25::uni_munged_dialsam_user_info_25::uni_profile_pathsam_user_info_25::uni_user_namesam_user_info_25::uni_workstationssam_user_info_25::user_rid.

参照元 samr_io_userinfo_ctr().

06109 {
06110         if (usr == NULL)
06111                 return False;
06112 
06113         prs_debug(ps, depth, desc, "sam_io_user_info25");
06114         depth++;
06115 
06116         if(!prs_align(ps))
06117                 return False;
06118 
06119         if(!smb_io_time("logon_time           ", &usr->logon_time, ps, depth))
06120                 return False;
06121         if(!smb_io_time("logoff_time          ", &usr->logoff_time, ps, depth))
06122                 return False;
06123         if(!smb_io_time("kickoff_time         ", &usr->kickoff_time, ps, depth))
06124                 return False;
06125         if(!smb_io_time("pass_last_set_time   ", &usr->pass_last_set_time, ps, depth))
06126                 return False;
06127         if(!smb_io_time("pass_can_change_time ", &usr->pass_can_change_time, ps, depth))
06128                 return False;
06129         if(!smb_io_time("pass_must_change_time", &usr->pass_must_change_time, ps, depth))
06130                 return False;
06131 
06132         if(!smb_io_unihdr("hdr_user_name   ", &usr->hdr_user_name, ps, depth))  /* username unicode string header */
06133                 return False;
06134         if(!smb_io_unihdr("hdr_full_name   ", &usr->hdr_full_name, ps, depth))  /* user's full name unicode string header */
06135                 return False;
06136         if(!smb_io_unihdr("hdr_home_dir    ", &usr->hdr_home_dir, ps, depth))   /* home directory unicode string header */
06137                 return False;
06138         if(!smb_io_unihdr("hdr_dir_drive   ", &usr->hdr_dir_drive, ps, depth))  /* home directory drive */
06139                 return False;
06140         if(!smb_io_unihdr("hdr_logon_script", &usr->hdr_logon_script, ps, depth))       /* logon script unicode string header */
06141                 return False;
06142         if(!smb_io_unihdr("hdr_profile_path", &usr->hdr_profile_path, ps, depth))       /* profile path unicode string header */
06143                 return False;
06144         if(!smb_io_unihdr("hdr_acct_desc   ", &usr->hdr_acct_desc, ps, depth))  /* account desc */
06145                 return False;
06146         if(!smb_io_unihdr("hdr_workstations", &usr->hdr_workstations, ps, depth))       /* wkstas user can log on from */
06147                 return False;
06148         if(!smb_io_unihdr("hdr_comment ", &usr->hdr_comment, ps, depth))        /* unknown string */
06149                 return False;
06150         if(!smb_io_unihdr("hdr_munged_dial ", &usr->hdr_munged_dial, ps, depth))        /* wkstas user can log on from */
06151                 return False;
06152 
06153         if(!prs_uint8s(False, "lm_pwd        ", ps, depth, usr->lm_pwd, sizeof(usr->lm_pwd)))
06154                 return False;
06155         if(!prs_uint8s(False, "nt_pwd        ", ps, depth, usr->nt_pwd, sizeof(usr->nt_pwd)))
06156                 return False;
06157 
06158         if(!prs_uint32("user_rid      ", ps, depth, &usr->user_rid))    /* User ID */
06159                 return False;
06160         if(!prs_uint32("group_rid     ", ps, depth, &usr->group_rid))   /* Group ID */
06161                 return False;
06162         if(!prs_uint32("acb_info      ", ps, depth, &usr->acb_info))
06163                 return False;
06164         if(!prs_uint32("fields_present ", ps, depth, &usr->fields_present))
06165                 return False;
06166 
06167         if(!prs_uint16("logon_divs    ", ps, depth, &usr->logon_divs))  /* logon divisions per week */
06168                 return False;
06169         if(!prs_align(ps))
06170                 return False;
06171         if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs))
06172                 return False;
06173 
06174         if(!prs_uint16("bad_password_count     ", ps, depth, &usr->bad_password_count))
06175                 return False;
06176         if(!prs_uint16("logon_count     ", ps, depth, &usr->logon_count))
06177                 return False;
06178 
06179         if(!prs_uint8s(False, "padding1      ", ps, depth, usr->padding1, sizeof(usr->padding1)))
06180                 return False;
06181         if(!prs_uint8("passmustchange ", ps, depth, &usr->passmustchange))
06182                 return False;
06183         if(!prs_uint8("padding2       ", ps, depth, &usr->padding2))
06184                 return False;
06185 
06186 
06187         if(!prs_uint8s(False, "password      ", ps, depth, usr->pass, sizeof(usr->pass)))
06188                 return False;
06189 
06190         /* here begins pointed-to data */
06191 
06192         if(!smb_io_unistr2("uni_user_name   ", &usr->uni_user_name, usr->hdr_user_name.buffer, ps, depth))      /* username unicode string */
06193                 return False;
06194 
06195         if(!smb_io_unistr2("uni_full_name   ", &usr->uni_full_name, usr->hdr_full_name.buffer, ps, depth))      /* user's full name unicode string */
06196                 return False;
06197 
06198         if(!smb_io_unistr2("uni_home_dir    ", &usr->uni_home_dir, usr->hdr_home_dir.buffer, ps, depth))        /* home directory unicode string */
06199                 return False;
06200 
06201         if(!smb_io_unistr2("uni_dir_drive   ", &usr->uni_dir_drive, usr->hdr_dir_drive.buffer, ps, depth))      /* home directory drive unicode string */
06202                 return False;
06203 
06204         if(!smb_io_unistr2("uni_logon_script", &usr->uni_logon_script, usr->hdr_logon_script.buffer, ps, depth))        /* logon script unicode string */
06205                 return False;
06206 
06207         if(!smb_io_unistr2("uni_profile_path", &usr->uni_profile_path, usr->hdr_profile_path.buffer, ps, depth))        /* profile path unicode string */
06208                 return False;
06209 
06210         if(!smb_io_unistr2("uni_acct_desc   ", &usr->uni_acct_desc, usr->hdr_acct_desc.buffer, ps, depth))      /* user desc unicode string */
06211                 return False;
06212 
06213         if(!smb_io_unistr2("uni_workstations", &usr->uni_workstations, usr->hdr_workstations.buffer, ps, depth))        /* worksations user can log on from */
06214                 return False;
06215 
06216         if(!smb_io_unistr2("uni_comment ", &usr->uni_comment, usr->hdr_comment.buffer, ps, depth))      /* unknown string */
06217                 return False;
06218 
06219         if(!smb_io_unistr2("uni_munged_dial ", &usr->uni_munged_dial, usr->hdr_munged_dial.buffer, ps, depth))
06220                 return False;
06221 
06222         /* ok, this is only guess-work (as usual) */
06223         if (usr->ptr_logon_hrs) {
06224                 if(!sam_io_logon_hrs("logon_hrs", &usr->logon_hrs, ps, depth))
06225                         return False;
06226         } 
06227 
06228         return True;
06229 }

void init_sam_user_info21W ( SAM_USER_INFO_21 usr,
NTTIME logon_time,
NTTIME logoff_time,
NTTIME kickoff_time,
NTTIME pass_last_set_time,
NTTIME pass_can_change_time,
NTTIME pass_must_change_time,
UNISTR2 user_name,
UNISTR2 full_name,
UNISTR2 home_dir,
UNISTR2 dir_drive,
UNISTR2 log_scr,
UNISTR2 prof_path,
UNISTR2 desc,
UNISTR2 wkstas,
UNISTR2 unk_str,
UNISTR2 mung_dial,
uchar  lm_pwd[16],
uchar  nt_pwd[16],
uint32  user_rid,
uint32  group_rid,
uint32  acb_info,
uint32  fields_present,
uint16  logon_divs,
LOGON_HRS hrs,
uint16  bad_password_count,
uint16  logon_count 
)

parse_samr.c6239 行で定義されています。

参照先 sam_user_info_21::acb_infosam_user_info_21::bad_password_countcopy_unistr2()sam_user_info_21::fields_presentsam_user_info_21::group_ridsam_user_info_21::hdr_acct_descsam_user_info_21::hdr_commentsam_user_info_21::hdr_dir_drivesam_user_info_21::hdr_full_namesam_user_info_21::hdr_home_dirsam_user_info_21::hdr_logon_scriptsam_user_info_21::hdr_munged_dialsam_user_info_21::hdr_profile_pathsam_user_info_21::hdr_user_namesam_user_info_21::hdr_workstationsinit_uni_hdr()sam_user_info_21::kickoff_timesam_user_info_21::lm_pwdsam_user_info_21::logoff_timesam_user_info_21::logon_countsam_user_info_21::logon_divssam_user_info_21::logon_hrssam_user_info_21::logon_timesam_user_info_21::nt_pwdnt_time_is_zero()sam_user_info_21::padding1sam_user_info_21::padding2sam_user_info_21::pass_can_change_timesam_user_info_21::pass_last_set_timesam_user_info_21::pass_must_change_timesam_user_info_21::passmustchangesam_user_info_21::ptr_logon_hrssam_user_info_21::uni_acct_descsam_user_info_21::uni_commentsam_user_info_21::uni_dir_drivesam_user_info_21::uni_full_namesam_user_info_21::uni_home_dirsam_user_info_21::uni_logon_scriptsam_user_info_21::uni_munged_dialsam_user_info_21::uni_profile_pathsam_user_info_21::uni_user_namesam_user_info_21::uni_workstationsuser_namesam_user_info_21::user_rid.

参照元 cac_MakeUserInfoCtr().

06266 {
06267         usr->logon_time = *logon_time;
06268         usr->logoff_time = *logoff_time;
06269         usr->kickoff_time = *kickoff_time;
06270         usr->pass_last_set_time = *pass_last_set_time;
06271         usr->pass_can_change_time = *pass_can_change_time;
06272         usr->pass_must_change_time = *pass_must_change_time;
06273 
06274         memcpy(usr->lm_pwd, lm_pwd, sizeof(usr->lm_pwd));
06275         memcpy(usr->nt_pwd, nt_pwd, sizeof(usr->nt_pwd));
06276 
06277         usr->user_rid = user_rid;
06278         usr->group_rid = group_rid;
06279         usr->acb_info = acb_info;
06280         usr->fields_present = fields_present;   /* 0x00ff ffff */
06281 
06282         usr->logon_divs = logon_divs;   /* should be 168 (hours/week) */
06283         usr->ptr_logon_hrs = hrs ? 1 : 0;
06284         usr->bad_password_count = bad_password_count;
06285         usr->logon_count = logon_count;
06286 
06287         if (nt_time_is_zero(pass_must_change_time)) {
06288                 usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
06289         } else {
06290                 usr->passmustchange=0;
06291         }
06292 
06293         ZERO_STRUCT(usr->padding1);
06294         ZERO_STRUCT(usr->padding2);
06295 
06296         copy_unistr2(&usr->uni_user_name, user_name);
06297         init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
06298 
06299         copy_unistr2(&usr->uni_full_name, full_name);
06300         init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
06301 
06302         copy_unistr2(&usr->uni_home_dir, home_dir);
06303         init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
06304 
06305         copy_unistr2(&usr->uni_dir_drive, dir_drive);
06306         init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
06307 
06308         copy_unistr2(&usr->uni_logon_script, log_scr);
06309         init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
06310 
06311         copy_unistr2(&usr->uni_profile_path, prof_path);
06312         init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
06313 
06314         copy_unistr2(&usr->uni_acct_desc, desc);
06315         init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
06316 
06317         copy_unistr2(&usr->uni_workstations, wkstas);
06318         init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
06319 
06320         copy_unistr2(&usr->uni_comment, unk_str);
06321         init_uni_hdr(&usr->hdr_comment, &usr->uni_comment);
06322 
06323         copy_unistr2(&usr->uni_munged_dial, mung_dial);
06324         init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
06325 
06326         if (hrs) {
06327                 memcpy(&usr->logon_hrs, hrs, sizeof(usr->logon_hrs));
06328         } else {
06329                 ZERO_STRUCT(usr->logon_hrs);
06330         }
06331 }

NTSTATUS init_sam_user_info21A ( SAM_USER_INFO_21 usr,
struct samu pw,
DOM_SID domain_sid 
)

parse_samr.c6340 行で定義されています。

参照先 sam_user_info_21::acb_infosam_user_info_21::bad_password_countbase64_decode_data_blob()become_root()data_blob()data_blob_free()descriptiondomain_sidsam_user_info_21::fields_presentget_time_t_max()sam_user_info_21::group_ridsam_user_info_21::hdr_acct_descsam_user_info_21::hdr_commentsam_user_info_21::hdr_dir_drivesam_user_info_21::hdr_full_namesam_user_info_21::hdr_home_dirsam_user_info_21::hdr_logon_scriptsam_user_info_21::hdr_munged_dialsam_user_info_21::hdr_profile_pathsam_user_info_21::hdr_user_namesam_user_info_21::hdr_workstationslogon_hours_info::hoursinit_uni_hdr()init_unistr2()init_unistr2_from_datablob()sam_user_info_21::kickoff_timelogon_hours_info::lensam_user_info_21::lm_pwdsam_user_info_21::logoff_timesam_user_info_21::logon_countsam_user_info_21::logon_divssam_user_info_21::logon_hrssam_user_info_21::logon_timelogon_hours_info::max_lensam_user_info_21::nt_pwdlogon_hours_info::offsetsam_user_info_21::padding1sam_user_info_21::padding2sam_user_info_21::pass_can_change_timesam_user_info_21::pass_last_set_timesam_user_info_21::pass_must_change_timesam_user_info_21::passmustchangepdb_build_fields_present()pdb_get_acct_ctrl()pdb_get_acct_desc()pdb_get_bad_password_count()pdb_get_dir_drive()pdb_get_fullname()pdb_get_group_sid()pdb_get_homedir()pdb_get_hours()pdb_get_hours_len()pdb_get_kickoff_time()pdb_get_logoff_time()pdb_get_logon_count()pdb_get_logon_divs()pdb_get_logon_script()pdb_get_logon_time()pdb_get_munged_dial()pdb_get_pass_can_change_time()pdb_get_pass_last_set_time()pdb_get_pass_must_change_time()pdb_get_profile_path()pdb_get_user_sid()pdb_get_username()pdb_get_workstations()sam_user_info_21::ptr_logon_hrssid_peek_check_rid()sid_to_string()unbecome_root()sam_user_info_21::uni_acct_descsam_user_info_21::uni_commentsam_user_info_21::uni_dir_drivesam_user_info_21::uni_full_namesam_user_info_21::uni_home_dirsam_user_info_21::uni_logon_scriptsam_user_info_21::uni_munged_dialsam_user_info_21::uni_profile_pathUNI_STR_TERMINATEsam_user_info_21::uni_user_namesam_user_info_21::uni_workstationsunix_to_nt_time()unix_to_nt_time_abs()user_namesam_user_info_21::user_rid.

参照元 get_user_info_21().

06341 {
06342         NTTIME          logon_time, logoff_time, kickoff_time,
06343                         pass_last_set_time, pass_can_change_time,
06344                         pass_must_change_time;
06345                         
06346         time_t must_change_time;
06347         const char*             user_name = pdb_get_username(pw);
06348         const char*             full_name = pdb_get_fullname(pw);
06349         const char*             home_dir  = pdb_get_homedir(pw);
06350         const char*             dir_drive = pdb_get_dir_drive(pw);
06351         const char*             logon_script = pdb_get_logon_script(pw);
06352         const char*             profile_path = pdb_get_profile_path(pw);
06353         const char*             description = pdb_get_acct_desc(pw);
06354         const char*             workstations = pdb_get_workstations(pw);
06355         const char*             munged_dial = pdb_get_munged_dial(pw);
06356         DATA_BLOB               munged_dial_blob;
06357 
06358         uint32 user_rid;
06359         const DOM_SID *user_sid;
06360 
06361         uint32 group_rid;
06362         const DOM_SID *group_sid;
06363 
06364         if (munged_dial) {
06365                 munged_dial_blob = base64_decode_data_blob(munged_dial);
06366         } else {
06367                 munged_dial_blob = data_blob(NULL, 0);
06368         }
06369 
06370         /* Create NTTIME structs */
06371         unix_to_nt_time (&logon_time,           pdb_get_logon_time(pw));
06372         unix_to_nt_time (&logoff_time,  pdb_get_logoff_time(pw));
06373         unix_to_nt_time (&kickoff_time,         pdb_get_kickoff_time(pw));
06374         unix_to_nt_time (&pass_last_set_time, pdb_get_pass_last_set_time(pw));
06375         unix_to_nt_time (&pass_can_change_time,pdb_get_pass_can_change_time(pw));
06376         must_change_time = pdb_get_pass_must_change_time(pw);
06377         if (must_change_time == get_time_t_max())
06378                 unix_to_nt_time_abs(&pass_must_change_time, must_change_time);
06379         else
06380                 unix_to_nt_time(&pass_must_change_time, must_change_time);
06381         
06382         /* structure assignment */
06383         usr->logon_time            = logon_time;
06384         usr->logoff_time           = logoff_time;
06385         usr->kickoff_time          = kickoff_time;
06386         usr->pass_last_set_time    = pass_last_set_time;
06387         usr->pass_can_change_time  = pass_can_change_time;
06388         usr->pass_must_change_time = pass_must_change_time;
06389 
06390         ZERO_STRUCT(usr->nt_pwd);
06391         ZERO_STRUCT(usr->lm_pwd);
06392 
06393         user_sid = pdb_get_user_sid(pw);
06394         
06395         if (!sid_peek_check_rid(domain_sid, user_sid, &user_rid)) {
06396                 fstring user_sid_string;
06397                 fstring domain_sid_string;
06398                 DEBUG(0, ("init_sam_user_info_21A: User %s has SID %s, \nwhich conflicts with "
06399                           "the domain sid %s.  Failing operation.\n", 
06400                           user_name, 
06401                           sid_to_string(user_sid_string, user_sid),
06402                           sid_to_string(domain_sid_string, domain_sid)));
06403                 data_blob_free(&munged_dial_blob);
06404                 return NT_STATUS_UNSUCCESSFUL;
06405         }
06406 
06407         become_root();  
06408         group_sid = pdb_get_group_sid(pw);
06409         unbecome_root();
06410 
06411         if (!sid_peek_check_rid(domain_sid, group_sid, &group_rid)) {
06412                 fstring group_sid_string;
06413                 fstring domain_sid_string;
06414                 DEBUG(0, ("init_sam_user_info_21A: User %s has Primary Group SID %s, \n"
06415                           "which conflicts with the domain sid %s.  Failing operation.\n", 
06416                           user_name, 
06417                           sid_to_string(group_sid_string, group_sid),
06418                           sid_to_string(domain_sid_string, domain_sid)));
06419                 data_blob_free(&munged_dial_blob);
06420                 return NT_STATUS_UNSUCCESSFUL;
06421         }
06422 
06423         usr->user_rid  = user_rid;
06424         usr->group_rid = group_rid;
06425         usr->acb_info  = pdb_get_acct_ctrl(pw);
06426 
06427         /*
06428           Look at a user on a real NT4 PDC with usrmgr, press
06429           'ok'. Then you will see that fields_present is set to
06430           0x08f827fa. Look at the user immediately after that again,
06431           and you will see that 0x00fffff is returned. This solves
06432           the problem that you get access denied after having looked
06433           at the user.
06434           -- Volker
06435         */
06436         usr->fields_present = pdb_build_fields_present(pw);
06437 
06438         usr->logon_divs = pdb_get_logon_divs(pw); 
06439         usr->ptr_logon_hrs = pdb_get_hours(pw) ? 1 : 0;
06440         usr->bad_password_count = pdb_get_bad_password_count(pw);
06441         usr->logon_count = pdb_get_logon_count(pw);
06442 
06443         if (pdb_get_pass_must_change_time(pw) == 0) {
06444                 usr->passmustchange=PASS_MUST_CHANGE_AT_NEXT_LOGON;
06445         } else {
06446                 usr->passmustchange=0;
06447         }
06448 
06449         ZERO_STRUCT(usr->padding1);
06450         ZERO_STRUCT(usr->padding2);
06451 
06452         init_unistr2(&usr->uni_user_name, user_name, UNI_STR_TERMINATE);
06453         init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name);
06454 
06455         init_unistr2(&usr->uni_full_name, full_name, UNI_STR_TERMINATE);
06456         init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name);
06457 
06458         init_unistr2(&usr->uni_home_dir, home_dir, UNI_STR_TERMINATE);
06459         init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir);
06460 
06461         init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_STR_TERMINATE);
06462         init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive);
06463 
06464         init_unistr2(&usr->uni_logon_script, logon_script, UNI_STR_TERMINATE);
06465         init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script);
06466 
06467         init_unistr2(&usr->uni_profile_path, profile_path, UNI_STR_TERMINATE);
06468         init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path);
06469 
06470         init_unistr2(&usr->uni_acct_desc, description, UNI_STR_TERMINATE);
06471         init_uni_hdr(&usr->hdr_acct_desc, &usr->uni_acct_desc);
06472 
06473         init_unistr2(&usr->uni_workstations, workstations, UNI_STR_TERMINATE);
06474         init_uni_hdr(&usr->hdr_workstations, &usr->uni_workstations);
06475 
06476         init_unistr2(&usr->uni_comment, NULL, UNI_STR_TERMINATE);
06477         init_uni_hdr(&usr->hdr_comment, &usr->uni_comment);
06478 
06479         init_unistr2_from_datablob(&usr->uni_munged_dial, &munged_dial_blob);
06480         init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
06481         data_blob_free(&munged_dial_blob);
06482 
06483         if (pdb_get_hours(pw)) {
06484                 usr->logon_hrs.max_len = 1260;
06485                 usr->logon_hrs.offset = 0;
06486                 usr->logon_hrs.len = pdb_get_hours_len(pw);
06487                 memcpy(&usr->logon_hrs.hours, pdb_get_hours(pw), MAX_HOURS_LEN);
06488         } else {
06489                 usr->logon_hrs.max_len = 1260;
06490                 usr->logon_hrs.offset = 0;
06491                 usr->logon_hrs.len = 0;
06492                 memset(&usr->logon_hrs, 0xff, sizeof(usr->logon_hrs));
06493         }
06494 
06495         return NT_STATUS_OK;
06496 }

static BOOL sam_io_user_info21 ( const char *  desc,
SAM_USER_INFO_21 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c6502 行で定義されています。

参照先 sam_user_info_21::acb_infosam_user_info_21::bad_password_countUNIHDR::buffersam_user_info_21::fields_presentsam_user_info_21::group_ridsam_user_info_21::hdr_acct_descsam_user_info_21::hdr_commentsam_user_info_21::hdr_dir_drivesam_user_info_21::hdr_full_namesam_user_info_21::hdr_home_dirsam_user_info_21::hdr_logon_scriptsam_user_info_21::hdr_munged_dialsam_user_info_21::hdr_profile_pathsam_user_info_21::hdr_user_namesam_user_info_21::hdr_workstationssam_user_info_21::kickoff_timesam_user_info_21::lm_pwdsam_user_info_21::logoff_timesam_user_info_21::logon_countsam_user_info_21::logon_divssam_user_info_21::logon_hrssam_user_info_21::logon_timesam_user_info_21::nt_pwdsam_user_info_21::padding1sam_user_info_21::padding2sam_user_info_21::pass_can_change_timesam_user_info_21::pass_last_set_timesam_user_info_21::pass_must_change_timesam_user_info_21::passmustchangeprs_debug()sam_user_info_21::ptr_logon_hrssam_io_logon_hrs()smb_io_time()smb_io_unihdr()smb_io_unistr2()sam_user_info_21::uni_acct_descsam_user_info_21::uni_commentsam_user_info_21::uni_dir_drivesam_user_info_21::uni_full_namesam_user_info_21::uni_home_dirsam_user_info_21::uni_logon_scriptsam_user_info_21::uni_munged_dialsam_user_info_21::uni_profile_pathsam_user_info_21::uni_user_namesam_user_info_21::uni_workstationssam_user_info_21::user_rid.

参照元 samr_io_userinfo_ctr().

06504 {
06505         if (usr == NULL)
06506                 return False;
06507 
06508         prs_debug(ps, depth, desc, "sam_io_user_info21");
06509         depth++;
06510 
06511         if(!prs_align(ps))
06512                 return False;
06513 
06514         if(!smb_io_time("logon_time           ", &usr->logon_time, ps, depth))
06515                 return False;
06516         if(!smb_io_time("logoff_time          ", &usr->logoff_time, ps, depth))
06517                 return False;
06518         if(!smb_io_time("pass_last_set_time   ", &usr->pass_last_set_time, ps,depth))
06519                 return False;
06520         if(!smb_io_time("kickoff_time         ", &usr->kickoff_time, ps, depth))
06521                 return False;
06522         if(!smb_io_time("pass_can_change_time ", &usr->pass_can_change_time, ps,depth))
06523                 return False;
06524         if(!smb_io_time("pass_must_change_time", &usr->pass_must_change_time,  ps, depth))
06525                 return False;
06526 
06527         if(!smb_io_unihdr("hdr_user_name   ", &usr->hdr_user_name, ps, depth))  /* username unicode string header */
06528                 return False;
06529         if(!smb_io_unihdr("hdr_full_name   ", &usr->hdr_full_name, ps, depth))  /* user's full name unicode string header */
06530                 return False;
06531         if(!smb_io_unihdr("hdr_home_dir    ", &usr->hdr_home_dir, ps, depth))   /* home directory unicode string header */
06532                 return False;
06533         if(!smb_io_unihdr("hdr_dir_drive   ", &usr->hdr_dir_drive, ps, depth))  /* home directory drive */
06534                 return False;
06535         if(!smb_io_unihdr("hdr_logon_script", &usr->hdr_logon_script, ps, depth))       /* logon script unicode string header */
06536                 return False;
06537         if(!smb_io_unihdr("hdr_profile_path", &usr->hdr_profile_path, ps, depth))       /* profile path unicode string header */
06538                 return False;
06539         if(!smb_io_unihdr("hdr_acct_desc   ", &usr->hdr_acct_desc, ps, depth))  /* account desc */
06540                 return False;
06541         if(!smb_io_unihdr("hdr_workstations", &usr->hdr_workstations, ps, depth))       /* wkstas user can log on from */
06542                 return False;
06543         if(!smb_io_unihdr("hdr_comment ", &usr->hdr_comment, ps, depth))        /* unknown string */
06544                 return False;
06545         if(!smb_io_unihdr("hdr_munged_dial ", &usr->hdr_munged_dial, ps, depth))        /* wkstas user can log on from */
06546                 return False;
06547 
06548         if(!prs_uint8s(False, "lm_pwd        ", ps, depth, usr->lm_pwd, sizeof(usr->lm_pwd)))
06549                 return False;
06550         if(!prs_uint8s(False, "nt_pwd        ", ps, depth, usr->nt_pwd, sizeof(usr->nt_pwd)))
06551                 return False;
06552 
06553         if(!prs_uint32("user_rid      ", ps, depth, &usr->user_rid))    /* User ID */
06554                 return False;
06555         if(!prs_uint32("group_rid     ", ps, depth, &usr->group_rid))   /* Group ID */
06556                 return False;
06557         if(!prs_uint32("acb_info      ", ps, depth, &usr->acb_info))
06558                 return False;
06559 
06560         if(!prs_uint32("fields_present ", ps, depth, &usr->fields_present))
06561                 return False;
06562         if(!prs_uint16("logon_divs    ", ps, depth, &usr->logon_divs))  /* logon divisions per week */
06563                 return False;
06564         if(!prs_align(ps))
06565                 return False;
06566         if(!prs_uint32("ptr_logon_hrs ", ps, depth, &usr->ptr_logon_hrs))
06567                 return False;
06568 
06569         if(!prs_uint16("bad_password_count     ", ps, depth, &usr->bad_password_count))
06570                 return False;
06571         if(!prs_uint16("logon_count     ", ps, depth, &usr->logon_count))
06572                 return False;
06573 
06574         if(!prs_uint8s(False, "padding1      ", ps, depth, usr->padding1, sizeof(usr->padding1)))
06575                 return False;
06576         if(!prs_uint8("passmustchange ", ps, depth, &usr->passmustchange))
06577                 return False;
06578         if(!prs_uint8("padding2       ", ps, depth, &usr->padding2))
06579                 return False;
06580 
06581         /* here begins pointed-to data */
06582 
06583         if(!smb_io_unistr2("uni_user_name   ", &usr->uni_user_name,usr->hdr_user_name.buffer, ps, depth))
06584                 return False;
06585         if(!smb_io_unistr2("uni_full_name   ", &usr->uni_full_name, usr->hdr_full_name.buffer, ps, depth))
06586                 return False;
06587         if(!smb_io_unistr2("uni_home_dir    ", &usr->uni_home_dir, usr->hdr_home_dir.buffer, ps, depth))
06588                 return False;
06589         if(!smb_io_unistr2("uni_dir_drive   ", &usr->uni_dir_drive, usr->hdr_dir_drive.buffer, ps, depth))
06590                 return False;
06591         if(!smb_io_unistr2("uni_logon_script", &usr->uni_logon_script, usr->hdr_logon_script.buffer, ps, depth))
06592                 return False;
06593         if(!smb_io_unistr2("uni_profile_path", &usr->uni_profile_path, usr->hdr_profile_path.buffer, ps, depth))
06594                 return False;
06595         if(!smb_io_unistr2("uni_acct_desc   ", &usr->uni_acct_desc, usr->hdr_acct_desc.buffer, ps, depth))
06596                 return False;
06597         if(!smb_io_unistr2("uni_workstations", &usr->uni_workstations, usr->hdr_workstations.buffer, ps, depth))
06598                 return False;
06599         if(!smb_io_unistr2("uni_comment", &usr->uni_comment, usr->hdr_comment.buffer, ps, depth))
06600                 return False;
06601         if(!smb_io_unistr2("uni_munged_dial ", &usr->uni_munged_dial,usr->hdr_munged_dial.buffer, ps, depth))
06602                 return False;
06603 
06604         /* ok, this is only guess-work (as usual) */
06605         if (usr->ptr_logon_hrs) {
06606                 if(!sam_io_logon_hrs("logon_hrs", &usr->logon_hrs, ps, depth))
06607                         return False;
06608         }
06609 
06610         return True;
06611 }

void init_sam_user_info20A ( SAM_USER_INFO_20 usr,
struct samu pw 
)

parse_samr.c6613 行で定義されています。

参照先 base64_decode_data_blob()data_blob()data_blob_free()sam_user_info_20::hdr_munged_dialinit_uni_hdr()init_unistr2_from_datablob()pdb_get_munged_dial()sam_user_info_20::uni_munged_dial.

参照元 get_user_info_20().

06614 {
06615         const char *munged_dial = pdb_get_munged_dial(pw);
06616         DATA_BLOB blob;
06617 
06618         if (munged_dial) {
06619                 blob = base64_decode_data_blob(munged_dial);
06620         } else {
06621                 blob = data_blob(NULL, 0);
06622         }
06623 
06624         init_unistr2_from_datablob(&usr->uni_munged_dial, &blob);
06625         init_uni_hdr(&usr->hdr_munged_dial, &usr->uni_munged_dial);
06626         data_blob_free(&blob);
06627 }

static BOOL sam_io_user_info20 ( const char *  desc,
SAM_USER_INFO_20 usr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c6633 行で定義されています。

参照先 UNIHDR::buffersam_user_info_20::hdr_munged_dialprs_debug()smb_io_unihdr()smb_io_unistr2()sam_user_info_20::uni_munged_dial.

参照元 samr_io_userinfo_ctr().

06635 {
06636         if (usr == NULL)
06637                 return False;
06638 
06639         prs_debug(ps, depth, desc, "sam_io_user_info20");
06640         depth++;
06641 
06642         if(!prs_align(ps))
06643                 return False;
06644 
06645         if(!smb_io_unihdr("hdr_munged_dial ", &usr->hdr_munged_dial, ps, depth))        /* wkstas user can log on from */
06646                 return False;
06647 
06648         if(!smb_io_unistr2("uni_munged_dial ", &usr->uni_munged_dial,usr->hdr_munged_dial.buffer, ps, depth))   /* worksations user can log on from */
06649                 return False;
06650 
06651         return True;
06652 }

NTSTATUS make_samr_userinfo_ctr_usr21 ( TALLOC_CTX ctx,
SAM_USERINFO_CTR ctr,
uint16  switch_value,
SAM_USER_INFO_21 usr 
)

parse_samr.c6658 行で定義されています。

参照先 sam_user_info_21::acb_infosam_userinfo_ctr_info::idsam_userinfo_ctr_info::id16sam_userinfo_ctr_info::id17sam_userinfo_ctr_info::id18sam_userinfo_ctr_info::id21sam_userinfo_ctr_info::infoinit_sam_user_info16()init_sam_user_info18()sam_user_info_21::lm_pwdsam_user_info_21::nt_pwdsam_userinfo_ctr_info::switch_value.

06661 {
06662         DEBUG(5, ("make_samr_userinfo_ctr_usr21\n"));
06663 
06664         ctr->switch_value = switch_value;
06665         ctr->info.id = NULL;
06666 
06667         switch (switch_value) {
06668         case 16:
06669                 ctr->info.id16 = TALLOC_ZERO_P(ctx,SAM_USER_INFO_16);
06670                 if (ctr->info.id16 == NULL)
06671                         return NT_STATUS_NO_MEMORY;
06672 
06673                 init_sam_user_info16(ctr->info.id16, usr->acb_info);
06674                 break;
06675 #if 0
06676 /* whoops - got this wrong.  i think.  or don't understand what's happening. */
06677         case 17:
06678                 {
06679                         NTTIME expire;
06680                         info = (void *)&id11;
06681 
06682                         expire.low = 0xffffffff;
06683                         expire.high = 0x7fffffff;
06684 
06685                         ctr->info.id = TALLOC_ZERO_P(ctx,SAM_USER_INFO_17);
06686                         init_sam_user_info11(ctr->info.id17, &expire,
06687                                              "BROOKFIELDS$",    /* name */
06688                                              0x03ef,    /* user rid */
06689                                              0x201,     /* group rid */
06690                                              0x0080);   /* acb info */
06691 
06692                         break;
06693                 }
06694 #endif
06695         case 18:
06696                 ctr->info.id18 = TALLOC_ZERO_P(ctx,SAM_USER_INFO_18);
06697                 if (ctr->info.id18 == NULL)
06698                         return NT_STATUS_NO_MEMORY;
06699 
06700                 init_sam_user_info18(ctr->info.id18, usr->lm_pwd, usr->nt_pwd);
06701                 break;
06702         case 21:
06703                 {
06704                         SAM_USER_INFO_21 *cusr;
06705                         cusr = TALLOC_ZERO_P(ctx,SAM_USER_INFO_21);
06706                         ctr->info.id21 = cusr;
06707                         if (ctr->info.id21 == NULL)
06708                                 return NT_STATUS_NO_MEMORY;
06709                         memcpy(cusr, usr, sizeof(*usr));
06710                         memset(cusr->lm_pwd, 0, sizeof(cusr->lm_pwd));
06711                         memset(cusr->nt_pwd, 0, sizeof(cusr->nt_pwd));
06712                         break;
06713                 }
06714         default:
06715                 DEBUG(4,("make_samr_userinfo_ctr: unsupported info\n"));
06716                 return NT_STATUS_INVALID_INFO_CLASS;
06717         }
06718 
06719         return NT_STATUS_OK;
06720 }

static void init_samr_userinfo_ctr ( SAM_USERINFO_CTR ctr,
DATA_BLOB sess_key,
uint16  switch_value,
void *  info 
) [static]

parse_samr.c6726 行で定義されています。

参照先 data_blob_::datadump_data()sam_userinfo_ctr_info::idsam_userinfo_ctr_info::id23sam_userinfo_ctr_info::id24sam_userinfo_ctr_info::infodata_blob_::lengthsam_user_info_23::passsam_user_info_24::passSamOEMhashBlob()sam_userinfo_ctr_info::switch_value.

参照元 init_samr_q_set_userinfo().

06728 {
06729         DEBUG(5, ("init_samr_userinfo_ctr\n"));
06730 
06731         ctr->switch_value = switch_value;
06732         ctr->info.id = info;
06733 
06734         switch (switch_value) {
06735         case 0x18:
06736                 SamOEMhashBlob(ctr->info.id24->pass, 516, sess_key);
06737                 dump_data(100, (char *)sess_key->data, sess_key->length);
06738                 dump_data(100, (char *)ctr->info.id24->pass, 516);
06739                 break;
06740         case 0x17:
06741                 SamOEMhashBlob(ctr->info.id23->pass, 516, sess_key);
06742                 dump_data(100, (char *)sess_key->data, sess_key->length);
06743                 dump_data(100, (char *)ctr->info.id23->pass, 516);
06744                 break;
06745         case 0x07:
06746                 break;
06747         default:
06748                 DEBUG(4,("init_samr_userinfo_ctr: unsupported switch level: %d\n", switch_value));
06749         }
06750 }

static BOOL samr_io_userinfo_ctr ( const char *  desc,
SAM_USERINFO_CTR **  ppctr,
prs_struct ps,
int  depth 
) [static]

parse_samr.c6756 行で定義されています。

参照先 sam_userinfo_ctr_info::id16sam_userinfo_ctr_info::id17sam_userinfo_ctr_info::id18sam_userinfo_ctr_info::id20sam_userinfo_ctr_info::id21sam_userinfo_ctr_info::id23sam_userinfo_ctr_info::id24sam_userinfo_ctr_info::id25sam_userinfo_ctr_info::id26sam_userinfo_ctr_info::id7sam_userinfo_ctr_info::id9sam_userinfo_ctr_info::infoprs_debug()sam_io_user_info16()sam_io_user_info17()sam_io_user_info18()sam_io_user_info20()sam_io_user_info21()sam_io_user_info23()sam_io_user_info24()sam_io_user_info25()sam_io_user_info26()sam_io_user_info7()sam_io_user_info9()sam_userinfo_ctr_info::switch_value.

参照元 samr_io_q_set_userinfo()samr_io_q_set_userinfo2()samr_io_r_query_userinfo().

06758 {
06759         BOOL ret;
06760         SAM_USERINFO_CTR *ctr;
06761 
06762         prs_debug(ps, depth, desc, "samr_io_userinfo_ctr");
06763         depth++;
06764 
06765         if (UNMARSHALLING(ps)) {
06766                 ctr = PRS_ALLOC_MEM(ps,SAM_USERINFO_CTR,1);
06767                 if (ctr == NULL)
06768                         return False;
06769                 *ppctr = ctr;
06770         } else {
06771                 ctr = *ppctr;
06772         }
06773 
06774         /* lkclXXXX DO NOT ALIGN BEFORE READING SWITCH VALUE! */
06775 
06776         if(!prs_uint16("switch_value", ps, depth, &ctr->switch_value))
06777                 return False;
06778         if(!prs_align(ps))
06779                 return False;
06780 
06781         ret = False;
06782 
06783         switch (ctr->switch_value) {
06784         case 7:
06785                 if (UNMARSHALLING(ps))
06786                         ctr->info.id7 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_7,1);
06787                 if (ctr->info.id7 == NULL) {
06788                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06789                         return False;
06790                 }
06791                 ret = sam_io_user_info7("", ctr->info.id7, ps, depth);
06792                 break;
06793         case 9:
06794                 if (UNMARSHALLING(ps))
06795                         ctr->info.id9 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_9,1);
06796                 if (ctr->info.id9 == NULL) {
06797                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06798                         return False;
06799                 }
06800                 ret = sam_io_user_info9("", ctr->info.id9, ps, depth);
06801                 break;
06802         case 16:
06803                 if (UNMARSHALLING(ps))
06804                         ctr->info.id16 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_16,1);
06805                 if (ctr->info.id16 == NULL) {
06806                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06807                         return False;
06808                 }
06809                 ret = sam_io_user_info16("", ctr->info.id16, ps, depth);
06810                 break;
06811         case 17:
06812                 if (UNMARSHALLING(ps))
06813                         ctr->info.id17 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_17,1);
06814 
06815                 if (ctr->info.id17 == NULL) {
06816                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06817                         return False;
06818                 }
06819                 ret = sam_io_user_info17("", ctr->info.id17, ps, depth);
06820                 break;
06821         case 18:
06822                 if (UNMARSHALLING(ps))
06823                         ctr->info.id18 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_18,1);
06824 
06825                 if (ctr->info.id18 == NULL) {
06826                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06827                         return False;
06828                 }
06829                 ret = sam_io_user_info18("", ctr->info.id18, ps, depth);
06830                 break;
06831         case 20:
06832                 if (UNMARSHALLING(ps))
06833                         ctr->info.id20 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_20,1);
06834 
06835                 if (ctr->info.id20 == NULL) {
06836                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06837                         return False;
06838                 }
06839                 ret = sam_io_user_info20("", ctr->info.id20, ps, depth);
06840                 break;
06841         case 21:
06842                 if (UNMARSHALLING(ps))
06843                         ctr->info.id21 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_21,1);
06844 
06845                 if (ctr->info.id21 == NULL) {
06846                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06847                         return False;
06848                 }
06849                 ret = sam_io_user_info21("", ctr->info.id21, ps, depth);
06850                 break;
06851         case 23:
06852                 if (UNMARSHALLING(ps))
06853                         ctr->info.id23 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_23,1);
06854 
06855                 if (ctr->info.id23 == NULL) {
06856                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06857                         return False;
06858                 }
06859                 ret = sam_io_user_info23("", ctr->info.id23, ps, depth);
06860                 break;
06861         case 24:
06862                 if (UNMARSHALLING(ps))
06863                         ctr->info.id24 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_24,1);
06864 
06865                 if (ctr->info.id24 == NULL) {
06866                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06867                         return False;
06868                 }
06869                 ret = sam_io_user_info24("", ctr->info.id24, ps,  depth);
06870                 break;
06871         case 25:
06872                 if (UNMARSHALLING(ps))
06873                         ctr->info.id25 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_25,1);
06874 
06875                 if (ctr->info.id25 == NULL) {
06876                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06877                         return False;
06878                 }
06879                 ret = sam_io_user_info25("", ctr->info.id25, ps, depth);
06880                 break;
06881         case 26:
06882                 if (UNMARSHALLING(ps))
06883                         ctr->info.id26 = PRS_ALLOC_MEM(ps,SAM_USER_INFO_26,1);
06884 
06885                 if (ctr->info.id26 == NULL) {
06886                         DEBUG(2,("samr_io_userinfo_ctr: info pointer not initialised\n"));
06887                         return False;
06888                 }
06889                 ret = sam_io_user_info26("", ctr->info.id26, ps,  depth);
06890                 break;
06891         default:
06892                 DEBUG(2, ("samr_io_userinfo_ctr: unknown switch level 0x%x\n", ctr->switch_value));
06893                 ret = False;
06894                 break;
06895         }
06896 
06897         return ret;
06898 }

void init_samr_r_query_userinfo ( SAMR_R_QUERY_USERINFO r_u,
SAM_USERINFO_CTR ctr,
NTSTATUS  status 
)

parse_samr.c6904 行で定義されています。

参照先 r_samr_query_user_info::ctrr_samr_query_user_info::ptrr_samr_query_user_info::statusstatus.

参照元 _samr_query_userinfo().

06906 {
06907         DEBUG(5, ("init_samr_r_query_userinfo\n"));
06908 
06909         r_u->ptr = 0;
06910         r_u->ctr = NULL;
06911 
06912         if (NT_STATUS_IS_OK(status)) {
06913                 r_u->ptr = 1;
06914                 r_u->ctr = ctr;
06915         }
06916 
06917         r_u->status = status;   /* return status */
06918 }

BOOL samr_io_r_query_userinfo ( const char *  desc,
SAMR_R_QUERY_USERINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c6924 行で定義されています。

参照先 r_samr_query_user_info::ctrprs_debug()r_samr_query_user_info::ptrsamr_io_userinfo_ctr()r_samr_query_user_info::status.

参照元 api_samr_query_userinfo()main()rpccli_samr_query_userinfo().

06926 {
06927         if (r_u == NULL)
06928                 return False;
06929 
06930         prs_debug(ps, depth, desc, "samr_io_r_query_userinfo");
06931         depth++;
06932 
06933         if(!prs_align(ps))
06934                 return False;
06935 
06936         if(!prs_uint32("ptr", ps, depth, &r_u->ptr))
06937                 return False;
06938 
06939         if (r_u->ptr != 0) {
06940                 if(!samr_io_userinfo_ctr("ctr", &r_u->ctr, ps, depth))
06941                         return False;
06942         }
06943 
06944         if(!prs_align(ps))
06945                 return False;
06946         if(!prs_ntstatus("status", ps, depth, &r_u->status))
06947                 return False;
06948 
06949         return True;
06950 }

void init_samr_q_set_userinfo ( SAMR_Q_SET_USERINFO q_u,
const POLICY_HND hnd,
DATA_BLOB sess_key,
uint16  switch_value,
void *  info 
)

parse_samr.c6956 行で定義されています。

参照先 q_samr_set_user_info::ctrinit_samr_userinfo_ctr()q_samr_set_user_info::polq_samr_set_user_info::switch_value.

参照元 rpccli_samr_set_userinfo().

06959 {
06960         DEBUG(5, ("init_samr_q_set_userinfo\n"));
06961 
06962         q_u->pol = *hnd;
06963         q_u->switch_value = switch_value;
06964         init_samr_userinfo_ctr(q_u->ctr, sess_key, switch_value, info);
06965 }

BOOL samr_io_q_set_userinfo ( const char *  desc,
SAMR_Q_SET_USERINFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c6971 行で定義されています。

参照先 q_samr_set_user_info::ctrq_samr_set_user_info::polprs_debug()samr_io_userinfo_ctr()smb_io_pol_hnd()q_samr_set_user_info::switch_value.

参照元 api_samr_set_userinfo()rpccli_samr_set_userinfo().

06973 {
06974         if (q_u == NULL)
06975                 return False;
06976 
06977         prs_debug(ps, depth, desc, "samr_io_q_set_userinfo");
06978         depth++;
06979 
06980         if(!prs_align(ps))
06981                 return False;
06982 
06983         smb_io_pol_hnd("pol", &(q_u->pol), ps, depth);
06984 
06985         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value))
06986                 return False;
06987         if(!samr_io_userinfo_ctr("ctr", &q_u->ctr, ps, depth))
06988                 return False;
06989 
06990         return True;
06991 }

void init_samr_r_set_userinfo ( SAMR_R_SET_USERINFO r_u,
NTSTATUS  status 
)

parse_samr.c6997 行で定義されています。

参照先 statusr_samr_set_user_info::status.

06998 {
06999         DEBUG(5, ("init_samr_r_set_userinfo\n"));
07000 
07001         r_u->status = status;   /* return status */
07002 }

BOOL samr_io_r_set_userinfo ( const char *  desc,
SAMR_R_SET_USERINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7008 行で定義されています。

参照先 prs_debug()r_samr_set_user_info::status.

参照元 api_samr_set_userinfo()rpccli_samr_set_userinfo().

07010 {
07011         if (r_u == NULL)
07012                 return False;
07013 
07014         prs_debug(ps, depth, desc, "samr_io_r_set_userinfo");
07015         depth++;
07016 
07017         if(!prs_align(ps))
07018                 return False;
07019 
07020         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07021                 return False;
07022 
07023         return True;
07024 }

void init_samr_q_set_userinfo2 ( SAMR_Q_SET_USERINFO2 q_u,
const POLICY_HND hnd,
DATA_BLOB sess_key,
uint16  switch_value,
SAM_USERINFO_CTR ctr 
)

parse_samr.c7030 行で定義されています。

参照先 q_samr_set_user_info2::ctrdata_blob_::datadump_data()sam_userinfo_ctr_info::id18sam_userinfo_ctr_info::infodata_blob_::lengthsam_user_info_18::lm_pwdsam_user_info_18::nt_pwdq_samr_set_user_info2::polSamOEMhashBlob()sam_userinfo_ctr_info::switch_valueq_samr_set_user_info2::switch_value.

参照元 rpccli_samr_set_userinfo2().

07033 {
07034         DEBUG(5, ("init_samr_q_set_userinfo2\n"));
07035 
07036         q_u->pol = *hnd;
07037         q_u->switch_value = switch_value;
07038         q_u->ctr = ctr;
07039 
07040         q_u->ctr->switch_value = switch_value;
07041 
07042         switch (switch_value) {
07043         case 18:
07044                 SamOEMhashBlob(ctr->info.id18->lm_pwd, 16, sess_key);
07045                 SamOEMhashBlob(ctr->info.id18->nt_pwd, 16, sess_key);
07046                 dump_data(100, (char *)sess_key->data, sess_key->length);
07047                 dump_data(100, (char *)ctr->info.id18->lm_pwd, 16);
07048                 dump_data(100, (char *)ctr->info.id18->nt_pwd, 16);
07049                 break;
07050         }
07051 }

BOOL samr_io_q_set_userinfo2 ( const char *  desc,
SAMR_Q_SET_USERINFO2 q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7057 行で定義されています。

参照先 q_samr_set_user_info2::ctrq_samr_set_user_info2::polprs_debug()samr_io_userinfo_ctr()smb_io_pol_hnd()q_samr_set_user_info2::switch_value.

参照元 api_samr_set_userinfo2()rpccli_samr_set_userinfo2().

07059 {
07060         if (q_u == NULL)
07061                 return False;
07062 
07063         prs_debug(ps, depth, desc, "samr_io_q_set_userinfo2");
07064         depth++;
07065 
07066         if(!prs_align(ps))
07067                 return False;
07068 
07069         if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
07070                 return False;
07071 
07072         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value))
07073                 return False;
07074         if(!samr_io_userinfo_ctr("ctr", &q_u->ctr, ps, depth))
07075                 return False;
07076 
07077         return True;
07078 }

void init_samr_r_set_userinfo2 ( SAMR_R_SET_USERINFO2 r_u,
NTSTATUS  status 
)

parse_samr.c7084 行で定義されています。

参照先 statusr_samr_set_user_info2::status.

07085 {
07086         DEBUG(5, ("init_samr_r_set_userinfo2\n"));
07087 
07088         r_u->status = status;   /* return status */
07089 }

BOOL samr_io_r_set_userinfo2 ( const char *  desc,
SAMR_R_SET_USERINFO2 r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7095 行で定義されています。

参照先 prs_debug()r_samr_set_user_info2::status.

参照元 api_samr_set_userinfo2()rpccli_samr_set_userinfo2().

07097 {
07098         if (r_u == NULL)
07099                 return False;
07100 
07101         prs_debug(ps, depth, desc, "samr_io_r_set_userinfo2");
07102         depth++;
07103 
07104         if(!prs_align(ps))
07105                 return False;
07106 
07107         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07108                 return False;
07109 
07110         return True;
07111 }

void init_samr_q_connect ( SAMR_Q_CONNECT q_u,
char *  srv_name,
uint32  access_mask 
)

parse_samr.c7117 行で定義されています。

参照先 q_samr_connect_info::access_maskinit_unistr2()q_samr_connect_info::ptr_srv_nameq_samr_connect_info::uni_srv_nameUNI_STR_TERMINATE.

参照元 rpccli_samr_connect().

07119 {
07120         DEBUG(5, ("init_samr_q_connect\n"));
07121 
07122         /* make PDC server name \\server */
07123         q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0;
07124         init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE);
07125 
07126         /* example values: 0x0000 0002 */
07127         q_u->access_mask = access_mask;
07128 }

BOOL samr_io_q_connect ( const char *  desc,
SAMR_Q_CONNECT q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7134 行で定義されています。

参照先 q_samr_connect_info::access_maskprs_debug()q_samr_connect_info::ptr_srv_namesmb_io_unistr2()q_samr_connect_info::uni_srv_name.

参照元 api_samr_connect()rpccli_samr_connect().

07136 {
07137         if (q_u == NULL)
07138                 return False;
07139 
07140         prs_debug(ps, depth, desc, "samr_io_q_connect");
07141         depth++;
07142 
07143         if(!prs_align(ps))
07144                 return False;
07145 
07146         if(!prs_uint32("ptr_srv_name", ps, depth, &q_u->ptr_srv_name))
07147                 return False;
07148         if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
07149                 return False;
07150 
07151         if(!prs_align(ps))
07152                 return False;
07153         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
07154                 return False;
07155 
07156         return True;
07157 }

BOOL samr_io_r_connect ( const char *  desc,
SAMR_R_CONNECT r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7163 行で定義されています。

参照先 r_samr_connect_info::connect_polprs_debug()smb_io_pol_hnd()r_samr_connect_info::status.

参照元 api_samr_connect()rpccli_samr_connect().

07165 {
07166         if (r_u == NULL)
07167                 return False;
07168 
07169         prs_debug(ps, depth, desc, "samr_io_r_connect");
07170         depth++;
07171 
07172         if(!prs_align(ps))
07173                 return False;
07174 
07175         if(!smb_io_pol_hnd("connect_pol", &r_u->connect_pol, ps, depth))
07176                 return False;
07177 
07178         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07179                 return False;
07180 
07181         return True;
07182 }

void init_samr_q_connect4 ( SAMR_Q_CONNECT4 q_u,
char *  srv_name,
uint32  access_mask 
)

parse_samr.c7188 行で定義されています。

参照先 q_samr_connect4_info::access_maskinit_unistr2()q_samr_connect4_info::ptr_srv_nameq_samr_connect4_info::uni_srv_nameUNI_STR_TERMINATEq_samr_connect4_info::unk_0.

参照元 rpccli_samr_connect4().

07190 {
07191         DEBUG(5, ("init_samr_q_connect4\n"));
07192 
07193         /* make PDC server name \\server */
07194         q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0;
07195         init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE);
07196 
07197         /* Only value we've seen, possibly an address type ? */
07198         q_u->unk_0 = 2;
07199 
07200         /* example values: 0x0000 0002 */
07201         q_u->access_mask = access_mask;
07202 }

BOOL samr_io_q_connect4 ( const char *  desc,
SAMR_Q_CONNECT4 q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7208 行で定義されています。

参照先 q_samr_connect4_info::access_maskprs_debug()q_samr_connect4_info::ptr_srv_namesmb_io_unistr2()q_samr_connect4_info::uni_srv_nameq_samr_connect4_info::unk_0.

参照元 api_samr_connect4()rpccli_samr_connect4().

07210 {
07211         if (q_u == NULL)
07212                 return False;
07213 
07214         prs_debug(ps, depth, desc, "samr_io_q_connect4");
07215         depth++;
07216 
07217         if(!prs_align(ps))
07218                 return False;
07219 
07220         if(!prs_uint32("ptr_srv_name", ps, depth, &q_u->ptr_srv_name))
07221                 return False;
07222         if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
07223                 return False;
07224 
07225         if(!prs_align(ps))
07226                 return False;
07227         if(!prs_uint32("unk_0", ps, depth, &q_u->unk_0))
07228                 return False;
07229         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
07230                 return False;
07231 
07232         return True;
07233 }

BOOL samr_io_r_connect4 ( const char *  desc,
SAMR_R_CONNECT4 r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7239 行で定義されています。

参照先 r_samr_connect_info::connect_polprs_debug()smb_io_pol_hnd()r_samr_connect_info::status.

参照元 api_samr_connect4()rpccli_samr_connect4().

07241 {
07242         if (r_u == NULL)
07243                 return False;
07244 
07245         prs_debug(ps, depth, desc, "samr_io_r_connect4");
07246         depth++;
07247 
07248         if(!prs_align(ps))
07249                 return False;
07250 
07251         if(!smb_io_pol_hnd("connect_pol", &r_u->connect_pol, ps, depth))
07252                 return False;
07253 
07254         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07255                 return False;
07256 
07257         return True;
07258 }

void init_samr_q_connect5 ( SAMR_Q_CONNECT5 q_u,
char *  srv_name,
uint32  access_mask 
)

parse_samr.c7264 行で定義されています。

参照先 q_samr_connect5_info::access_maskq_samr_connect5_info::info1_unk1q_samr_connect5_info::info1_unk2init_unistr2()q_samr_connect5_info::levelq_samr_connect5_info::ptr_srv_nameq_samr_connect5_info::uni_srv_nameUNI_STR_TERMINATE.

07266 {
07267         DEBUG(5, ("init_samr_q_connect5\n"));
07268 
07269         /* make PDC server name \\server */
07270         q_u->ptr_srv_name = (srv_name != NULL && *srv_name) ? 1 : 0;
07271         init_unistr2(&q_u->uni_srv_name, srv_name, UNI_STR_TERMINATE);
07272 
07273         /* example values: 0x0000 0002 */
07274         q_u->access_mask = access_mask;
07275 
07276         q_u->level = 1;
07277         q_u->info1_unk1 = 3;
07278         q_u->info1_unk2 = 0;
07279 }

void init_samr_r_connect5 ( SAMR_R_CONNECT5 r_u,
POLICY_HND pol,
NTSTATUS  status 
)

parse_samr.c7285 行で定義されています。

参照先 r_samr_connect_info5::connect_polr_samr_connect_info5::info1_unk1r_samr_connect_info5::info1_unk2r_samr_connect_info5::levelpolstatusr_samr_connect_info5::status.

参照元 _samr_connect5().

07286 {
07287         DEBUG(5, ("init_samr_q_connect5\n"));
07288 
07289         r_u->level = 1;
07290         r_u->info1_unk1 = 3;
07291         r_u->info1_unk2 = 0;
07292 
07293         r_u->connect_pol = *pol;
07294         r_u->status = status;
07295 }

BOOL samr_io_q_connect5 ( const char *  desc,
SAMR_Q_CONNECT5 q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7301 行で定義されています。

参照先 q_samr_connect5_info::access_maskq_samr_connect5_info::info1_unk1q_samr_connect5_info::info1_unk2q_samr_connect5_info::levelprs_debug()q_samr_connect5_info::ptr_srv_namesmb_io_unistr2()q_samr_connect5_info::uni_srv_name.

参照元 api_samr_connect5().

07303 {
07304         if (q_u == NULL)
07305                 return False;
07306 
07307         prs_debug(ps, depth, desc, "samr_io_q_connect5");
07308         depth++;
07309 
07310         if(!prs_align(ps))
07311                 return False;
07312 
07313         if(!prs_uint32("ptr_srv_name", ps, depth, &q_u->ptr_srv_name))
07314                 return False;
07315         if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->ptr_srv_name, ps, depth))
07316                 return False;
07317 
07318         if(!prs_align(ps))
07319                 return False;
07320         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
07321                 return False;
07322 
07323         if(!prs_uint32("level", ps, depth, &q_u->level))
07324                 return False;
07325         if(!prs_uint32("level", ps, depth, &q_u->level))
07326                 return False;
07327         
07328         if(!prs_uint32("info1_unk1", ps, depth, &q_u->info1_unk1))
07329                 return False;
07330         if(!prs_uint32("info1_unk2", ps, depth, &q_u->info1_unk2))
07331                 return False;
07332 
07333         return True;
07334 }

BOOL samr_io_r_connect5 ( const char *  desc,
SAMR_R_CONNECT5 r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7340 行で定義されています。

参照先 r_samr_connect_info5::connect_polr_samr_connect_info5::info1_unk1r_samr_connect_info5::info1_unk2r_samr_connect_info5::levelprs_debug()smb_io_pol_hnd()r_samr_connect_info5::status.

参照元 api_samr_connect5().

07342 {
07343         if (r_u == NULL)
07344                 return False;
07345 
07346         prs_debug(ps, depth, desc, "samr_io_r_connect5");
07347         depth++;
07348 
07349         if(!prs_align(ps))
07350                 return False;
07351 
07352         if(!prs_uint32("level", ps, depth, &r_u->level))
07353                 return False;
07354         if(!prs_uint32("level", ps, depth, &r_u->level))
07355                 return False;
07356         if(!prs_uint32("info1_unk1", ps, depth, &r_u->info1_unk1))
07357                 return False;
07358         if(!prs_uint32("info1_unk2", ps, depth, &r_u->info1_unk2))
07359                 return False;
07360 
07361         if(!smb_io_pol_hnd("connect_pol", &r_u->connect_pol, ps, depth))
07362                 return False;
07363 
07364         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07365                 return False;
07366 
07367         return True;
07368 }

void init_samr_q_connect_anon ( SAMR_Q_CONNECT_ANON q_u  ) 

parse_samr.c7374 行で定義されています。

参照先 q_samr_connect_anon_info::access_maskq_samr_connect_anon_info::ptrq_samr_connect_anon_info::unknown_0.

07375 {
07376         DEBUG(5, ("init_samr_q_connect_anon\n"));
07377 
07378         q_u->ptr = 1;
07379         q_u->unknown_0 = 0x5c;  /* server name (?!!) */
07380         q_u->access_mask = MAXIMUM_ALLOWED_ACCESS;
07381 }

BOOL samr_io_q_connect_anon ( const char *  desc,
SAMR_Q_CONNECT_ANON q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7387 行で定義されています。

参照先 q_samr_connect_anon_info::access_maskprs_debug()q_samr_connect_anon_info::ptrq_samr_connect_anon_info::unknown_0.

参照元 api_samr_connect_anon().

07389 {
07390         if (q_u == NULL)
07391                 return False;
07392 
07393         prs_debug(ps, depth, desc, "samr_io_q_connect_anon");
07394         depth++;
07395 
07396         if(!prs_align(ps))
07397                 return False;
07398 
07399         if(!prs_uint32("ptr      ", ps, depth, &q_u->ptr))
07400                 return False;
07401         if (q_u->ptr) {
07402                 if(!prs_uint16("unknown_0", ps, depth, &q_u->unknown_0))
07403                         return False;
07404         }
07405         if(!prs_align(ps))
07406                 return False;
07407         if(!prs_uint32("access_mask", ps, depth, &q_u->access_mask))
07408                 return False;
07409 
07410         return True;
07411 }

BOOL samr_io_r_connect_anon ( const char *  desc,
SAMR_R_CONNECT_ANON r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7417 行で定義されています。

参照先 r_samr_connect_anon_info::connect_polprs_debug()smb_io_pol_hnd()r_samr_connect_anon_info::status.

参照元 api_samr_connect_anon().

07419 {
07420         if (r_u == NULL)
07421                 return False;
07422 
07423         prs_debug(ps, depth, desc, "samr_io_r_connect_anon");
07424         depth++;
07425 
07426         if(!prs_align(ps))
07427                 return False;
07428 
07429         if(!smb_io_pol_hnd("connect_pol", &r_u->connect_pol, ps, depth))
07430                 return False;
07431 
07432         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07433                 return False;
07434 
07435         return True;
07436 }

void init_samr_q_get_dom_pwinfo ( SAMR_Q_GET_DOM_PWINFO q_u,
char *  srv_name 
)

parse_samr.c7442 行で定義されています。

参照先 q_samr_get_dom_pwinfo::hdr_srv_nameinit_uni_hdr()init_unistr2()q_samr_get_dom_pwinfo::ptrUNI_FLAGS_NONEq_samr_get_dom_pwinfo::uni_srv_name.

参照元 rpccli_samr_get_dom_pwinfo().

07444 {
07445         DEBUG(5, ("init_samr_q_get_dom_pwinfo\n"));
07446 
07447         q_u->ptr = 1;
07448         init_unistr2(&q_u->uni_srv_name, srv_name, UNI_FLAGS_NONE);
07449         init_uni_hdr(&q_u->hdr_srv_name, &q_u->uni_srv_name);
07450 }

BOOL samr_io_q_get_dom_pwinfo ( const char *  desc,
SAMR_Q_GET_DOM_PWINFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7456 行で定義されています。

参照先 UNIHDR::bufferq_samr_get_dom_pwinfo::hdr_srv_nameprs_debug()q_samr_get_dom_pwinfo::ptrsmb_io_unihdr()smb_io_unistr2()q_samr_get_dom_pwinfo::uni_srv_name.

参照元 api_samr_get_dom_pwinfo()rpccli_samr_get_dom_pwinfo().

07458 {
07459         if (q_u == NULL)
07460                 return False;
07461 
07462         prs_debug(ps, depth, desc, "samr_io_q_get_dom_pwinfo");
07463         depth++;
07464 
07465         if(!prs_align(ps))
07466                 return False;
07467 
07468         if(!prs_uint32("ptr", ps, depth, &q_u->ptr))
07469                 return False;
07470         if (q_u->ptr != 0) {
07471                 if(!smb_io_unihdr("", &q_u->hdr_srv_name, ps, depth))
07472                         return False;
07473                 if(!smb_io_unistr2("", &q_u->uni_srv_name, q_u->hdr_srv_name.buffer, ps, depth))
07474                         return False;
07475         }
07476 
07477         return True;
07478 }

BOOL samr_io_r_get_dom_pwinfo ( const char *  desc,
SAMR_R_GET_DOM_PWINFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7484 行で定義されています。

参照先 r_samr_get_dom_pwinfo::min_pwd_lengthr_samr_get_dom_pwinfo::password_propertiesprs_debug()r_samr_get_dom_pwinfo::status.

参照元 api_samr_get_dom_pwinfo()rpccli_samr_get_dom_pwinfo().

07486 {
07487         if (r_u == NULL)
07488                 return False;
07489 
07490         prs_debug(ps, depth, desc, "samr_io_r_get_dom_pwinfo");
07491         depth++;
07492 
07493         if(!prs_align(ps))
07494                 return False;
07495 
07496         if(!prs_uint16("min_pwd_length", ps, depth, &r_u->min_pwd_length))
07497                 return False;
07498         if(!prs_align(ps))
07499                 return False;
07500         if(!prs_uint32("password_properties", ps, depth, &r_u->password_properties))
07501                 return False;
07502 
07503         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07504                 return False;
07505 
07506         return True;
07507 }

void init_enc_passwd ( SAMR_ENC_PASSWD pwd,
const char  pass[512] 
)

parse_samr.c7513 行で定義されています。

参照先 enc_passwd_info::passenc_passwd_info::ptr.

参照元 init_samr_q_chgpasswd_user()init_samr_q_chgpasswd_user3().

07514 {
07515         ZERO_STRUCTP(pwd);
07516 
07517         if (pass == NULL) {
07518                 pwd->ptr = 0;
07519         } else {
07520                 pwd->ptr = 1;
07521                 memcpy(pwd->pass, pass, sizeof(pwd->pass));
07522         }
07523 }

BOOL samr_io_enc_passwd ( const char *  desc,
SAMR_ENC_PASSWD pwd,
prs_struct ps,
int  depth 
)

parse_samr.c7529 行で定義されています。

参照先 enc_passwd_info::passprs_debug()enc_passwd_info::ptr.

参照元 samr_io_q_chgpasswd_user()samr_io_q_chgpasswd_user3().

07531 {
07532         if (pwd == NULL)
07533                 return False;
07534 
07535         prs_debug(ps, depth, desc, "samr_io_enc_passwd");
07536         depth++;
07537 
07538         if(!prs_align(ps))
07539                 return False;
07540 
07541         if(!prs_uint32("ptr", ps, depth, &pwd->ptr))
07542                 return False;
07543 
07544         if (pwd->ptr != 0) {
07545                 if(!prs_uint8s(False, "pwd", ps, depth, pwd->pass, sizeof(pwd->pass)))
07546                         return False;
07547         }
07548 
07549         return True;
07550 }

void init_enc_hash ( SAMR_ENC_HASH hsh,
const uchar  hash[16] 
)

parse_samr.c7556 行で定義されています。

参照先 enc_hash_info::hashenc_hash_info::ptr.

参照元 init_samr_q_chgpasswd_user()init_samr_q_chgpasswd_user3().

07557 {
07558         ZERO_STRUCTP(hsh);
07559 
07560         if (hash == NULL) {
07561                 hsh->ptr = 0;
07562         } else {
07563                 hsh->ptr = 1;
07564                 memcpy(hsh->hash, hash, sizeof(hsh->hash));
07565         }
07566 }

BOOL samr_io_enc_hash ( const char *  desc,
SAMR_ENC_HASH hsh,
prs_struct ps,
int  depth 
)

parse_samr.c7572 行で定義されています。

参照先 enc_hash_info::hashprs_debug()enc_hash_info::ptr.

参照元 samr_io_q_chgpasswd_user()samr_io_q_chgpasswd_user3().

07574 {
07575         if (hsh == NULL)
07576                 return False;
07577 
07578         prs_debug(ps, depth, desc, "samr_io_enc_hash");
07579         depth++;
07580 
07581         if(!prs_align(ps))
07582                 return False;
07583 
07584         if(!prs_uint32("ptr ", ps, depth, &hsh->ptr))
07585                 return False;
07586         if (hsh->ptr != 0) {
07587                 if(!prs_uint8s(False, "hash", ps, depth, hsh->hash,sizeof(hsh->hash)))
07588                         return False;
07589         }
07590 
07591         return True;
07592 }

void init_samr_q_chgpasswd_user ( SAMR_Q_CHGPASSWD_USER q_u,
const char *  dest_host,
const char *  user_name,
const uchar  nt_newpass[516],
const uchar  nt_oldhash[16],
const uchar  lm_newpass[516],
const uchar  lm_oldhash[16] 
)

parse_samr.c7598 行で定義されています。

参照先 q_samr_chgpasswd_user_info::hdr_dest_hostq_samr_chgpasswd_user_info::hdr_user_nameinit_enc_hash()init_enc_passwd()init_uni_hdr()init_unistr2()q_samr_chgpasswd_user_info::lm_newpassq_samr_chgpasswd_user_info::lm_oldhashq_samr_chgpasswd_user_info::nt_newpassq_samr_chgpasswd_user_info::nt_oldhashq_samr_chgpasswd_user_info::ptr_0q_samr_chgpasswd_user_info::uni_dest_hostUNI_FLAGS_NONEq_samr_chgpasswd_user_info::uni_user_nameq_samr_chgpasswd_user_info::unknown.

参照元 rpccli_samr_chgpasswd_user()rpccli_samr_chng_pswd_auth_crap().

07604 {
07605         DEBUG(5, ("init_samr_q_chgpasswd_user\n"));
07606 
07607         q_u->ptr_0 = 1;
07608         init_unistr2(&q_u->uni_dest_host, dest_host, UNI_FLAGS_NONE);
07609         init_uni_hdr(&q_u->hdr_dest_host, &q_u->uni_dest_host);
07610 
07611         init_unistr2(&q_u->uni_user_name, user_name, UNI_FLAGS_NONE);
07612         init_uni_hdr(&q_u->hdr_user_name, &q_u->uni_user_name);
07613 
07614         init_enc_passwd(&q_u->nt_newpass, (const char *)nt_newpass);
07615         init_enc_hash(&q_u->nt_oldhash, nt_oldhash);
07616 
07617         q_u->unknown = 0x01;
07618 
07619         init_enc_passwd(&q_u->lm_newpass, (const char *)lm_newpass);
07620         init_enc_hash(&q_u->lm_oldhash, lm_oldhash);
07621 }

BOOL samr_io_q_chgpasswd_user ( const char *  desc,
SAMR_Q_CHGPASSWD_USER q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7627 行で定義されています。

参照先 UNIHDR::bufferq_samr_chgpasswd_user_info::hdr_dest_hostq_samr_chgpasswd_user_info::hdr_user_nameq_samr_chgpasswd_user_info::lm_newpassq_samr_chgpasswd_user_info::lm_oldhashq_samr_chgpasswd_user_info::nt_newpassq_samr_chgpasswd_user_info::nt_oldhashprs_debug()q_samr_chgpasswd_user_info::ptr_0samr_io_enc_hash()samr_io_enc_passwd()smb_io_unihdr()smb_io_unistr2()q_samr_chgpasswd_user_info::uni_dest_hostq_samr_chgpasswd_user_info::uni_user_nameq_samr_chgpasswd_user_info::unknown.

参照元 api_samr_chgpasswd_user()rpccli_samr_chgpasswd_user()rpccli_samr_chng_pswd_auth_crap().

07629 {
07630         if (q_u == NULL)
07631                 return False;
07632 
07633         prs_debug(ps, depth, desc, "samr_io_q_chgpasswd_user");
07634         depth++;
07635 
07636         if(!prs_align(ps))
07637                 return False;
07638 
07639         if(!prs_uint32("ptr_0", ps, depth, &q_u->ptr_0))
07640                 return False;
07641 
07642         if(!smb_io_unihdr("", &q_u->hdr_dest_host, ps, depth))
07643                 return False;
07644         if(!smb_io_unistr2("", &q_u->uni_dest_host, q_u->hdr_dest_host.buffer, ps, depth))
07645                 return False;
07646 
07647         if(!prs_align(ps))
07648                 return False;
07649         if(!smb_io_unihdr("", &q_u->hdr_user_name, ps, depth))
07650                 return False;
07651         if(!smb_io_unistr2("", &q_u->uni_user_name, q_u->hdr_user_name.buffer,ps, depth))
07652                 return False;
07653 
07654         if(!samr_io_enc_passwd("nt_newpass", &q_u->nt_newpass, ps, depth))
07655                 return False;
07656         if(!samr_io_enc_hash("nt_oldhash", &q_u->nt_oldhash, ps, depth))
07657                 return False;
07658 
07659         if(!prs_uint32("unknown", ps, depth, &q_u->unknown))
07660                 return False;
07661 
07662         if(!samr_io_enc_passwd("lm_newpass", &q_u->lm_newpass, ps, depth))
07663                 return False;
07664         if(!samr_io_enc_hash("lm_oldhash", &q_u->lm_oldhash, ps, depth))
07665                 return False;
07666 
07667         return True;
07668 }

void init_samr_r_chgpasswd_user ( SAMR_R_CHGPASSWD_USER r_u,
NTSTATUS  status 
)

parse_samr.c7674 行で定義されています。

参照先 statusr_samr_chgpasswd_user_info::status.

参照元 _samr_chgpasswd_user().

07675 {
07676         DEBUG(5, ("init_samr_r_chgpasswd_user\n"));
07677 
07678         r_u->status = status;
07679 }

BOOL samr_io_r_chgpasswd_user ( const char *  desc,
SAMR_R_CHGPASSWD_USER r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7685 行で定義されています。

参照先 prs_debug()r_samr_chgpasswd_user_info::status.

参照元 api_samr_chgpasswd_user()rpccli_samr_chgpasswd_user()rpccli_samr_chng_pswd_auth_crap().

07687 {
07688         if (r_u == NULL)
07689                 return False;
07690 
07691         prs_debug(ps, depth, desc, "samr_io_r_chgpasswd_user");
07692         depth++;
07693 
07694         if(!prs_align(ps))
07695                 return False;
07696 
07697         if(!prs_ntstatus("status", ps, depth, &r_u->status))
07698                 return False;
07699 
07700         return True;
07701 }

void init_samr_q_chgpasswd_user3 ( SAMR_Q_CHGPASSWD_USER3 q_u,
const char *  dest_host,
const char *  user_name,
const uchar  nt_newpass[516],
const uchar  nt_oldhash[16],
const uchar  lm_newpass[516],
const uchar  lm_oldhash[16] 
)

parse_samr.c7707 行で定義されています。

参照先 q_samr_chgpasswd_user3::hdr_dest_hostq_samr_chgpasswd_user3::hdr_user_nameinit_enc_hash()init_enc_passwd()init_uni_hdr()init_unistr2()q_samr_chgpasswd_user3::lm_changeq_samr_chgpasswd_user3::lm_newpassq_samr_chgpasswd_user3::lm_oldhashq_samr_chgpasswd_user3::nt_newpassq_samr_chgpasswd_user3::nt_oldhashq_samr_chgpasswd_user3::password3q_samr_chgpasswd_user3::ptr_0q_samr_chgpasswd_user3::uni_dest_hostUNI_FLAGS_NONEq_samr_chgpasswd_user3::uni_user_name.

参照元 rpccli_samr_chgpasswd3().

07713 {
07714         DEBUG(5, ("init_samr_q_chgpasswd_user3\n"));
07715 
07716         q_u->ptr_0 = 1;
07717         init_unistr2(&q_u->uni_dest_host, dest_host, UNI_FLAGS_NONE);
07718         init_uni_hdr(&q_u->hdr_dest_host, &q_u->uni_dest_host);
07719 
07720         init_unistr2(&q_u->uni_user_name, user_name, UNI_FLAGS_NONE);
07721         init_uni_hdr(&q_u->hdr_user_name, &q_u->uni_user_name);
07722 
07723         init_enc_passwd(&q_u->nt_newpass, (const char *)nt_newpass);
07724         init_enc_hash(&q_u->nt_oldhash, nt_oldhash);
07725 
07726         q_u->lm_change = 0x01;
07727 
07728         init_enc_passwd(&q_u->lm_newpass, (const char *)lm_newpass);
07729         init_enc_hash(&q_u->lm_oldhash, lm_oldhash);
07730 
07731         init_enc_passwd(&q_u->password3, NULL);
07732 }

BOOL samr_io_q_chgpasswd_user3 ( const char *  desc,
SAMR_Q_CHGPASSWD_USER3 q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7738 行で定義されています。

参照先 UNIHDR::bufferq_samr_chgpasswd_user3::hdr_dest_hostq_samr_chgpasswd_user3::hdr_user_nameq_samr_chgpasswd_user3::lm_changeq_samr_chgpasswd_user3::lm_newpassq_samr_chgpasswd_user3::lm_oldhashq_samr_chgpasswd_user3::nt_newpassq_samr_chgpasswd_user3::nt_oldhashq_samr_chgpasswd_user3::password3prs_debug()q_samr_chgpasswd_user3::ptr_0samr_io_enc_hash()samr_io_enc_passwd()smb_io_unihdr()smb_io_unistr2()q_samr_chgpasswd_user3::uni_dest_hostq_samr_chgpasswd_user3::uni_user_name.

参照元 api_samr_chgpasswd_user3()rpccli_samr_chgpasswd3().

07740 {
07741         if (q_u == NULL)
07742                 return False;
07743 
07744         prs_debug(ps, depth, desc, "samr_io_q_chgpasswd_user3");
07745         depth++;
07746 
07747         if(!prs_align(ps))
07748                 return False;
07749 
07750         if(!prs_uint32("ptr_0", ps, depth, &q_u->ptr_0))
07751                 return False;
07752 
07753         if(!smb_io_unihdr("", &q_u->hdr_dest_host, ps, depth))
07754                 return False;
07755         if(!smb_io_unistr2("", &q_u->uni_dest_host, q_u->hdr_dest_host.buffer, ps, depth))
07756                 return False;
07757 
07758         if(!prs_align(ps))
07759                 return False;
07760         if(!smb_io_unihdr("", &q_u->hdr_user_name, ps, depth))
07761                 return False;
07762         if(!smb_io_unistr2("", &q_u->uni_user_name, q_u->hdr_user_name.buffer,ps, depth))
07763                 return False;
07764 
07765         if(!samr_io_enc_passwd("nt_newpass", &q_u->nt_newpass, ps, depth))
07766                 return False;
07767         if(!samr_io_enc_hash("nt_oldhash", &q_u->nt_oldhash, ps, depth))
07768                 return False;
07769 
07770         if(!prs_uint32("lm_change", ps, depth, &q_u->lm_change))
07771                 return False;
07772 
07773         if(!samr_io_enc_passwd("lm_newpass", &q_u->lm_newpass, ps, depth))
07774                 return False;
07775         if(!samr_io_enc_hash("lm_oldhash", &q_u->lm_oldhash, ps, depth))
07776                 return False;
07777 
07778         if(!samr_io_enc_passwd("password3", &q_u->password3, ps, depth))
07779                 return False;
07780 
07781         return True;
07782 }

void init_samr_r_chgpasswd_user3 ( SAMR_R_CHGPASSWD_USER3 r_u,
NTSTATUS  status,
SAMR_CHANGE_REJECT reject,
SAM_UNK_INFO_1 info 
)

parse_samr.c7788 行で定義されています。

参照先 r_samr_chgpasswd_user3::infor_samr_chgpasswd_user3::ptr_infor_samr_chgpasswd_user3::ptr_rejectr_samr_chgpasswd_user3::rejectsamr_change_reject::reject_reasonstatusr_samr_chgpasswd_user3::status.

参照元 _samr_chgpasswd_user3().

07790 {
07791         DEBUG(5, ("init_samr_r_chgpasswd_user3\n"));
07792 
07793         r_u->status = status;
07794         r_u->info = 0;
07795         r_u->ptr_info = 0;
07796         r_u->reject = 0;
07797         r_u->ptr_reject = 0;
07798 
07799         if (info) {
07800                 r_u->info = info;
07801                 r_u->ptr_info = 1;
07802         }
07803         if (reject && (reject->reject_reason != Undefined)) {
07804                 r_u->reject = reject;
07805                 r_u->ptr_reject = 1;
07806         }
07807 }

BOOL samr_io_change_reject ( const char *  desc,
SAMR_CHANGE_REJECT reject,
prs_struct ps,
int  depth 
)

parse_samr.c7813 行で定義されています。

参照先 prs_debug().

参照元 samr_io_r_chgpasswd_user3().

07814 {
07815         if (reject == NULL)
07816                 return False;
07817 
07818         prs_debug(ps, depth, desc, "samr_io_change_reject");
07819         depth++;
07820 
07821         if(!prs_align(ps))
07822                 return False;
07823 
07824         if(UNMARSHALLING(ps))
07825                 ZERO_STRUCTP(reject);
07826         
07827         if (!prs_uint32("reject_reason", ps, depth, &reject->reject_reason))
07828                 return False;
07829                 
07830         if (!prs_uint32("unknown1", ps, depth, &reject->unknown1))
07831                 return False;
07832 
07833         if (!prs_uint32("unknown2", ps, depth, &reject->unknown2))
07834                 return False;
07835 
07836         return True;
07837 }

BOOL samr_io_r_chgpasswd_user3 ( const char *  desc,
SAMR_R_CHGPASSWD_USER3 r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7843 行で定義されています。

参照先 r_samr_chgpasswd_user3::infoprs_debug()r_samr_chgpasswd_user3::ptr_infor_samr_chgpasswd_user3::ptr_rejectr_samr_chgpasswd_user3::rejectsam_io_unk_info1()samr_io_change_reject()r_samr_chgpasswd_user3::status.

参照元 api_samr_chgpasswd_user3()rpccli_samr_chgpasswd3().

07845 {
07846         if (r_u == NULL)
07847                 return False;
07848 
07849         prs_debug(ps, depth, desc, "samr_io_r_chgpasswd_user3");
07850         depth++;
07851 
07852         if (!prs_align(ps))
07853                 return False;
07854 
07855         if (!prs_uint32("ptr_info", ps, depth, &r_u->ptr_info))
07856                 return False;
07857 
07858         /* special case: Windows 2000 can return stub data here saying
07859            NT_STATUS_NOT_SUPPORTED */
07860 
07861         if ( NT_STATUS_EQUAL( NT_STATUS_NOT_SUPPORTED, NT_STATUS(r_u->ptr_info)) ) {
07862                 r_u->status = NT_STATUS_NOT_SUPPORTED;
07863                 return True;
07864         }
07865 
07866         if (r_u->ptr_info && r_u->info != NULL) {
07867                 /* SAM_UNK_INFO_1 */
07868                 if (!sam_io_unk_info1("info", r_u->info, ps, depth))
07869                         return False;
07870         }
07871 
07872         if (!prs_uint32("ptr_reject", ps, depth, &r_u->ptr_reject))
07873                 return False;
07874                              
07875         if (r_u->ptr_reject && r_u->reject != NULL) {
07876                 /* SAMR_CHANGE_REJECT */
07877                 if (!samr_io_change_reject("reject", r_u->reject, ps, depth))
07878                         return False;
07879         }
07880 
07881         if (!prs_ntstatus("status", ps, depth, &r_u->status))
07882                 return False;
07883 
07884         return True;
07885 }

void init_samr_q_query_domain_info2 ( SAMR_Q_QUERY_DOMAIN_INFO2 q_u,
POLICY_HND domain_pol,
uint16  switch_value 
)

parse_samr.c7891 行で定義されています。

参照先 q_samr_query_domain_info2::domain_polq_samr_query_domain_info2::switch_value.

参照元 rpccli_samr_query_dom_info2().

07893 {
07894         DEBUG(5, ("init_samr_q_query_domain_info2\n"));
07895 
07896         q_u->domain_pol = *domain_pol;
07897         q_u->switch_value = switch_value;
07898 }

BOOL samr_io_q_query_domain_info2 ( const char *  desc,
SAMR_Q_QUERY_DOMAIN_INFO2 q_u,
prs_struct ps,
int  depth 
)

parse_samr.c7904 行で定義されています。

参照先 q_samr_query_domain_info2::domain_polprs_debug()smb_io_pol_hnd()q_samr_query_domain_info2::switch_value.

参照元 api_samr_query_domain_info2()rpccli_samr_query_dom_info2().

07906 {
07907         if (q_u == NULL)
07908                 return False;
07909 
07910         prs_debug(ps, depth, desc, "samr_io_q_query_domain_info2");
07911         depth++;
07912 
07913         if(!prs_align(ps))
07914                 return False;
07915 
07916         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
07917                 return False;
07918 
07919         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value))
07920                 return False;
07921 
07922         return True;
07923 }

void init_samr_r_query_domain_info2 ( SAMR_R_QUERY_DOMAIN_INFO2 r_u,
uint16  switch_value,
SAM_UNK_CTR ctr,
NTSTATUS  status 
)

parse_samr.c7929 行で定義されています。

参照先 r_samr_query_domain_info2::ctrr_samr_query_domain_info2::ptr_0statusr_samr_query_domain_info2::statusr_samr_query_domain_info2::switch_value.

07932 {
07933         DEBUG(5, ("init_samr_r_query_domain_info2\n"));
07934 
07935         r_u->ptr_0 = 0;
07936         r_u->switch_value = 0;
07937         r_u->status = status;   /* return status */
07938 
07939         if (NT_STATUS_IS_OK(status)) {
07940                 r_u->switch_value = switch_value;
07941                 r_u->ptr_0 = 1;
07942                 r_u->ctr = ctr;
07943         }
07944 }

BOOL samr_io_r_query_domain_info2 ( const char *  desc,
SAMR_R_QUERY_DOMAIN_INFO2 r_u,
prs_struct ps,
int  depth 
)

parse_samr.c7950 行で定義されています。

参照先 r_samr_query_domain_info2::ctrsam_unknown_ctr_info::inf1sam_unknown_ctr_info::inf12sam_unknown_ctr_info::inf13sam_unknown_ctr_info::inf2sam_unknown_ctr_info::inf3sam_unknown_ctr_info::inf4sam_unknown_ctr_info::inf5sam_unknown_ctr_info::inf6sam_unknown_ctr_info::inf7sam_unknown_ctr_info::inf8sam_unknown_ctr_info::inf9sam_unknown_ctr_info::infoprs_debug()r_samr_query_domain_info2::ptr_0sam_io_unk_info1()sam_io_unk_info12()sam_io_unk_info13()sam_io_unk_info2()sam_io_unk_info3()sam_io_unk_info4()sam_io_unk_info5()sam_io_unk_info6()sam_io_unk_info7()sam_io_unk_info8()sam_io_unk_info9()r_samr_query_domain_info2::statusr_samr_query_domain_info2::switch_value.

参照元 api_samr_query_domain_info2()rpccli_samr_query_dom_info2().

07952 {
07953         if (r_u == NULL)
07954                 return False;
07955 
07956         prs_debug(ps, depth, desc, "samr_io_r_query_domain_info2");
07957         depth++;
07958 
07959         if(!prs_align(ps))
07960                 return False;
07961 
07962         if(!prs_uint32("ptr_0 ", ps, depth, &r_u->ptr_0))
07963                 return False;
07964 
07965         if (r_u->ptr_0 != 0 && r_u->ctr != NULL) {
07966                 if(!prs_uint16("switch_value", ps, depth, &r_u->switch_value))
07967                         return False;
07968                 if(!prs_align(ps))
07969                         return False;
07970 
07971                 switch (r_u->switch_value) {
07972                 case 0x0d:
07973                         if(!sam_io_unk_info13("unk_inf13", &r_u->ctr->info.inf13, ps, depth))
07974                                 return False;
07975                         break;
07976                 case 0x0c:
07977                         if(!sam_io_unk_info12("unk_inf12", &r_u->ctr->info.inf12, ps, depth))
07978                                 return False;
07979                         break;
07980                 case 0x09:
07981                         if(!sam_io_unk_info9("unk_inf9",&r_u->ctr->info.inf9, ps,depth))
07982                                 return False;
07983                         break;
07984                 case 0x08:
07985                         if(!sam_io_unk_info8("unk_inf8",&r_u->ctr->info.inf8, ps,depth))
07986                                 return False;
07987                         break;
07988                 case 0x07:
07989                         if(!sam_io_unk_info7("unk_inf7",&r_u->ctr->info.inf7, ps,depth))
07990                                 return False;
07991                         break;
07992                 case 0x06:
07993                         if(!sam_io_unk_info6("unk_inf6",&r_u->ctr->info.inf6, ps,depth))
07994                                 return False;
07995                         break;
07996                 case 0x05:
07997                         if(!sam_io_unk_info5("unk_inf5",&r_u->ctr->info.inf5, ps,depth))
07998                                 return False;
07999                         break;
08000                 case 0x04:
08001                         if(!sam_io_unk_info4("unk_inf4",&r_u->ctr->info.inf4, ps,depth))
08002                                 return False;
08003                         break;
08004                 case 0x03:
08005                         if(!sam_io_unk_info3("unk_inf3",&r_u->ctr->info.inf3, ps,depth))
08006                                 return False;
08007                         break;
08008                 case 0x02:
08009                         if(!sam_io_unk_info2("unk_inf2",&r_u->ctr->info.inf2, ps,depth))
08010                                 return False;
08011                         break;
08012                 case 0x01:
08013                         if(!sam_io_unk_info1("unk_inf1",&r_u->ctr->info.inf1, ps,depth))
08014                                 return False;
08015                         break;
08016                 default:
08017                         DEBUG(0, ("samr_io_r_query_domain_info2: unknown switch level 0x%x\n",
08018                                 r_u->switch_value));
08019                         r_u->status = NT_STATUS_INVALID_INFO_CLASS;
08020                         return False;
08021                 }
08022         }
08023         
08024         if(!prs_align(ps))
08025                 return False;
08026 
08027         if(!prs_ntstatus("status", ps, depth, &r_u->status))
08028                 return False;
08029         
08030         return True;
08031 }

void init_samr_q_set_domain_info ( SAMR_Q_SET_DOMAIN_INFO q_u,
POLICY_HND domain_pol,
uint16  switch_value,
SAM_UNK_CTR ctr 
)

parse_samr.c8038 行で定義されています。

参照先 q_samr_set_domain_info::ctrq_samr_set_domain_info::domain_polq_samr_set_domain_info::switch_valueq_samr_set_domain_info::switch_value0.

参照元 rpccli_samr_set_domain_info().

08040 {
08041         DEBUG(5, ("init_samr_q_set_domain_info\n"));
08042 
08043         q_u->domain_pol = *domain_pol;
08044         q_u->switch_value0 = switch_value;
08045 
08046         q_u->switch_value = switch_value;
08047         q_u->ctr = ctr;
08048         
08049 }

BOOL samr_io_q_set_domain_info ( const char *  desc,
SAMR_Q_SET_DOMAIN_INFO q_u,
prs_struct ps,
int  depth 
)

parse_samr.c8055 行で定義されています。

参照先 q_samr_set_domain_info::ctrq_samr_set_domain_info::domain_polsam_unknown_ctr_info::inf1sam_unknown_ctr_info::inf12sam_unknown_ctr_info::inf2sam_unknown_ctr_info::inf3sam_unknown_ctr_info::inf5sam_unknown_ctr_info::inf6sam_unknown_ctr_info::inf7sam_unknown_ctr_info::infoprs_debug()sam_io_unk_info1()sam_io_unk_info12()sam_io_unk_info2()sam_io_unk_info3()sam_io_unk_info5()sam_io_unk_info6()sam_io_unk_info7()smb_io_pol_hnd()q_samr_set_domain_info::switch_valueq_samr_set_domain_info::switch_value0.

参照元 api_samr_set_dom_info()rpccli_samr_set_domain_info().

08057 {
08058         if (q_u == NULL)
08059                 return False;
08060 
08061         prs_debug(ps, depth, desc, "samr_io_q_set_domain_info");
08062         depth++;
08063 
08064         if(!prs_align(ps))
08065                 return False;
08066 
08067         if(!smb_io_pol_hnd("domain_pol", &q_u->domain_pol, ps, depth))
08068                 return False;
08069 
08070         if(!prs_uint16("switch_value0", ps, depth, &q_u->switch_value0))
08071                 return False;
08072 
08073         if(!prs_uint16("switch_value", ps, depth, &q_u->switch_value))
08074                 return False;
08075 
08076         if(!prs_align(ps))
08077                 return False;
08078 
08079         if (UNMARSHALLING(ps)) {
08080                 if ((q_u->ctr = PRS_ALLOC_MEM(ps, SAM_UNK_CTR, 1)) == NULL)
08081                         return False;
08082         }
08083         
08084         switch (q_u->switch_value) {
08085 
08086         case 0x0c:
08087                 if(!sam_io_unk_info12("unk_inf12", &q_u->ctr->info.inf12, ps, depth))
08088                         return False;
08089                 break;
08090         case 0x07:
08091                 if(!sam_io_unk_info7("unk_inf7",&q_u->ctr->info.inf7, ps,depth))
08092                         return False;
08093                 break;
08094         case 0x06:
08095                 if(!sam_io_unk_info6("unk_inf6",&q_u->ctr->info.inf6, ps,depth))
08096                         return False;
08097                 break;
08098         case 0x05:
08099                 if(!sam_io_unk_info5("unk_inf5",&q_u->ctr->info.inf5, ps,depth))
08100                         return False;
08101                 break;
08102         case 0x03:
08103                 if(!sam_io_unk_info3("unk_inf3",&q_u->ctr->info.inf3, ps,depth))
08104                         return False;
08105                 break;
08106         case 0x02:
08107                 if(!sam_io_unk_info2("unk_inf2",&q_u->ctr->info.inf2, ps,depth))
08108                         return False;
08109                 break;
08110         case 0x01:
08111                 if(!sam_io_unk_info1("unk_inf1",&q_u->ctr->info.inf1, ps,depth))
08112                         return False;
08113                 break;
08114         default:
08115                 DEBUG(0, ("samr_io_r_samr_unknown_2e: unknown switch level 0x%x\n",
08116                         q_u->switch_value));
08117                 return False;
08118         }
08119 
08120         return True;
08121 }

void init_samr_r_set_domain_info ( SAMR_R_SET_DOMAIN_INFO r_u,
NTSTATUS  status 
)

parse_samr.c8127 行で定義されています。

参照先 statusr_samr_set_domain_info::status.

参照元 _samr_set_dom_info().

08128 {
08129         DEBUG(5, ("init_samr_r_set_domain_info\n"));
08130 
08131         r_u->status = status;   /* return status */
08132 }

BOOL samr_io_r_set_domain_info ( const char *  desc,
SAMR_R_SET_DOMAIN_INFO r_u,
prs_struct ps,
int  depth 
)

parse_samr.c8138 行で定義されています。

参照先 prs_debug()r_samr_set_domain_info::status.

参照元 api_samr_set_dom_info()rpccli_samr_set_domain_info().

08140 {
08141         if (r_u == NULL)
08142                 return False;
08143 
08144         prs_debug(ps, depth, desc, "samr_io_r_samr_unknown_2e");
08145         depth++;
08146 
08147         if(!prs_align(ps))
08148                 return False;
08149 
08150         if(!prs_ntstatus("status", ps, depth, &r_u->status))
08151                 return False;
08152         
08153         return True;
08154 }


Sambaに対してSat Aug 29 21:24:13 2009に生成されました。  doxygen 1.4.7