rpc_parse/parse_lsa.c

ソースコードを見る。

関数

static BOOL lsa_io_trans_names (const char *desc, LSA_TRANS_NAME_ENUM *trn, prs_struct *ps, int depth)
static BOOL lsa_io_trans_names2 (const char *desc, LSA_TRANS_NAME_ENUM2 *trn, prs_struct *ps, int depth)
void init_lsa_trans_name (LSA_TRANS_NAME *trn, UNISTR2 *uni_name, uint16 sid_name_use, const char *name, uint32 idx)
static BOOL lsa_io_trans_name (const char *desc, LSA_TRANS_NAME *trn, prs_struct *ps, int depth)
void init_lsa_trans_name2 (LSA_TRANS_NAME2 *trn, UNISTR2 *uni_name, uint16 sid_name_use, const char *name, uint32 idx)
static BOOL lsa_io_trans_name2 (const char *desc, LSA_TRANS_NAME2 *trn, prs_struct *ps, int depth)
static BOOL lsa_io_dom_r_ref (const char *desc, DOM_R_REF *dom, prs_struct *ps, int depth)
void init_lsa_sec_qos (LSA_SEC_QOS *qos, uint16 imp_lev, uint8 ctxt, uint8 eff)
static BOOL lsa_io_sec_qos (const char *desc, LSA_SEC_QOS *qos, prs_struct *ps, int depth)
static void init_lsa_obj_attr (LSA_OBJ_ATTR *attr, uint32 attributes, LSA_SEC_QOS *qos)
static BOOL lsa_io_obj_attr (const char *desc, LSA_OBJ_ATTR *attr, prs_struct *ps, int depth)
void init_q_open_pol (LSA_Q_OPEN_POL *in, uint16 system_name, uint32 attributes, uint32 desired_access, LSA_SEC_QOS *qos)
BOOL lsa_io_q_open_pol (const char *desc, LSA_Q_OPEN_POL *in, prs_struct *ps, int depth)
BOOL lsa_io_r_open_pol (const char *desc, LSA_R_OPEN_POL *out, prs_struct *ps, int depth)
void init_q_open_pol2 (LSA_Q_OPEN_POL2 *in, const char *server_name, uint32 attributes, uint32 desired_access, LSA_SEC_QOS *qos)
BOOL lsa_io_q_open_pol2 (const char *desc, LSA_Q_OPEN_POL2 *in, prs_struct *ps, int depth)
BOOL lsa_io_r_open_pol2 (const char *desc, LSA_R_OPEN_POL2 *out, prs_struct *ps, int depth)
void init_q_query_sec_obj (LSA_Q_QUERY_SEC_OBJ *in, const POLICY_HND *hnd, uint32 sec_info)
BOOL lsa_io_q_query_sec_obj (const char *desc, LSA_Q_QUERY_SEC_OBJ *in, prs_struct *ps, int depth)
BOOL lsa_io_r_query_sec_obj (const char *desc, LSA_R_QUERY_SEC_OBJ *out, prs_struct *ps, int depth)
void init_q_query (LSA_Q_QUERY_INFO *in, POLICY_HND *hnd, uint16 info_class)
BOOL lsa_io_q_query (const char *desc, LSA_Q_QUERY_INFO *in, prs_struct *ps, int depth)
BOOL init_q_enum_trust_dom (LSA_Q_ENUM_TRUST_DOM *q_e, POLICY_HND *pol, uint32 enum_context, uint32 preferred_len)
BOOL lsa_io_q_enum_trust_dom (const char *desc, LSA_Q_ENUM_TRUST_DOM *q_e, prs_struct *ps, int depth)
void init_r_enum_trust_dom (TALLOC_CTX *ctx, LSA_R_ENUM_TRUST_DOM *out, uint32 enum_context, uint32 num_domains, struct trustdom_info **td)
BOOL lsa_io_domain_list (const char *desc, prs_struct *ps, int depth, DOMAIN_LIST *domlist)
BOOL lsa_io_r_enum_trust_dom (const char *desc, LSA_R_ENUM_TRUST_DOM *out, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_1 (const char *desc, DOM_QUERY_1 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_2 (const char *desc, DOM_QUERY_2 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_3 (const char *desc, DOM_QUERY_3 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_5 (const char *desc, DOM_QUERY_5 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_6 (const char *desc, DOM_QUERY_6 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_10 (const char *desc, DOM_QUERY_10 *d_q, prs_struct *ps, int depth)
static BOOL lsa_io_dom_query_11 (const char *desc, DOM_QUERY_11 *d_q, prs_struct *ps, int depth)
BOOL lsa_io_dom_query_12 (const char *desc, DOM_QUERY_12 *info, prs_struct *ps, int depth)
void init_q_set (LSA_Q_SET_INFO *in, POLICY_HND *hnd, uint16 info_class, LSA_INFO_CTR ctr)
static BOOL lsa_io_query_info_ctr2 (const char *desc, prs_struct *ps, int depth, LSA_INFO_CTR2 *ctr)
static BOOL lsa_io_query_info_ctr (const char *desc, prs_struct *ps, int depth, LSA_INFO_CTR *ctr)
BOOL lsa_io_r_query (const char *desc, LSA_R_QUERY_INFO *out, prs_struct *ps, int depth)
BOOL lsa_io_q_set (const char *desc, LSA_Q_SET_INFO *in, prs_struct *ps, int depth)
BOOL lsa_io_r_set (const char *desc, LSA_R_SET_INFO *out, prs_struct *ps, int depth)
static void init_lsa_sid_enum (TALLOC_CTX *mem_ctx, LSA_SID_ENUM *sen, int num_entries, const DOM_SID *sids)
static BOOL lsa_io_sid_enum (const char *desc, LSA_SID_ENUM *sen, prs_struct *ps, int depth)
void init_q_lookup_sids (TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_SIDS *q_l, POLICY_HND *hnd, int num_sids, const DOM_SID *sids, uint16 level)
BOOL lsa_io_q_lookup_sids (const char *desc, LSA_Q_LOOKUP_SIDS *q_s, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_sids2 (const char *desc, LSA_Q_LOOKUP_SIDS2 *q_s, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_sids3 (const char *desc, LSA_Q_LOOKUP_SIDS3 *q_s, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_sids (const char *desc, LSA_R_LOOKUP_SIDS *r_s, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_sids2 (const char *desc, LSA_R_LOOKUP_SIDS2 *r_s, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_sids3 (const char *desc, LSA_R_LOOKUP_SIDS3 *r_s, prs_struct *ps, int depth)
void init_q_lookup_names (TALLOC_CTX *mem_ctx, LSA_Q_LOOKUP_NAMES *q_l, POLICY_HND *hnd, int num_names, const char **names)
BOOL lsa_io_q_lookup_names (const char *desc, LSA_Q_LOOKUP_NAMES *q_r, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_names (const char *desc, LSA_R_LOOKUP_NAMES *out, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_names2 (const char *desc, LSA_Q_LOOKUP_NAMES2 *q_r, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_names2 (const char *desc, LSA_R_LOOKUP_NAMES2 *out, prs_struct *ps, int depth)
BOOL smb_io_lsa_translated_sids3 (const char *desc, LSA_TRANSLATED_SID3 *q_r, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_names3 (const char *desc, LSA_Q_LOOKUP_NAMES3 *q_r, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_names3 (const char *desc, LSA_R_LOOKUP_NAMES3 *out, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_names4 (const char *desc, LSA_Q_LOOKUP_NAMES4 *q_r, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_names4 (const char *desc, LSA_R_LOOKUP_NAMES4 *out, prs_struct *ps, int depth)
void init_lsa_q_close (LSA_Q_CLOSE *in, POLICY_HND *hnd)
BOOL lsa_io_q_close (const char *desc, LSA_Q_CLOSE *in, prs_struct *ps, int depth)
BOOL lsa_io_r_close (const char *desc, LSA_R_CLOSE *out, prs_struct *ps, int depth)
BOOL lsa_io_q_open_secret (const char *desc, LSA_Q_OPEN_SECRET *in, prs_struct *ps, int depth)
BOOL lsa_io_r_open_secret (const char *desc, LSA_R_OPEN_SECRET *out, prs_struct *ps, int depth)
void init_q_enum_privs (LSA_Q_ENUM_PRIVS *in, POLICY_HND *hnd, uint32 enum_context, uint32 pref_max_length)
BOOL lsa_io_q_enum_privs (const char *desc, LSA_Q_ENUM_PRIVS *in, prs_struct *ps, int depth)
static BOOL lsa_io_priv_entries (const char *desc, LSA_PRIV_ENTRY *entries, uint32 count, prs_struct *ps, int depth)
void init_lsa_r_enum_privs (LSA_R_ENUM_PRIVS *out, uint32 enum_context, uint32 count, LSA_PRIV_ENTRY *entries)
BOOL lsa_io_r_enum_privs (const char *desc, LSA_R_ENUM_PRIVS *out, prs_struct *ps, int depth)
void init_lsa_priv_get_dispname (LSA_Q_PRIV_GET_DISPNAME *trn, POLICY_HND *hnd, const char *name, uint16 lang_id, uint16 lang_id_sys)
BOOL lsa_io_q_priv_get_dispname (const char *desc, LSA_Q_PRIV_GET_DISPNAME *in, prs_struct *ps, int depth)
BOOL lsa_io_r_priv_get_dispname (const char *desc, LSA_R_PRIV_GET_DISPNAME *out, prs_struct *ps, int depth)
void init_lsa_q_enum_accounts (LSA_Q_ENUM_ACCOUNTS *trn, POLICY_HND *hnd, uint32 enum_context, uint32 pref_max_length)
BOOL lsa_io_q_enum_accounts (const char *desc, LSA_Q_ENUM_ACCOUNTS *in, prs_struct *ps, int depth)
void init_lsa_r_enum_accounts (LSA_R_ENUM_ACCOUNTS *out, uint32 enum_context)
BOOL lsa_io_r_enum_accounts (const char *desc, LSA_R_ENUM_ACCOUNTS *out, prs_struct *ps, int depth)
BOOL lsa_io_q_unk_get_connuser (const char *desc, LSA_Q_UNK_GET_CONNUSER *in, prs_struct *ps, int depth)
BOOL lsa_io_r_unk_get_connuser (const char *desc, LSA_R_UNK_GET_CONNUSER *out, prs_struct *ps, int depth)
void init_lsa_q_create_account (LSA_Q_CREATEACCOUNT *trn, POLICY_HND *hnd, DOM_SID *sid, uint32 desired_access)
BOOL lsa_io_q_create_account (const char *desc, LSA_Q_CREATEACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_r_create_account (const char *desc, LSA_R_CREATEACCOUNT *out, prs_struct *ps, int depth)
void init_lsa_q_open_account (LSA_Q_OPENACCOUNT *trn, POLICY_HND *hnd, DOM_SID *sid, uint32 desired_access)
BOOL lsa_io_q_open_account (const char *desc, LSA_Q_OPENACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_r_open_account (const char *desc, LSA_R_OPENACCOUNT *out, prs_struct *ps, int depth)
void init_lsa_q_enum_privsaccount (LSA_Q_ENUMPRIVSACCOUNT *trn, POLICY_HND *hnd)
BOOL lsa_io_q_enum_privsaccount (const char *desc, LSA_Q_ENUMPRIVSACCOUNT *out, prs_struct *ps, int depth)
static BOOL lsa_io_luid (const char *desc, LUID *out, prs_struct *ps, int depth)
static BOOL lsa_io_luid_attr (const char *desc, LUID_ATTR *out, prs_struct *ps, int depth)
static BOOL lsa_io_privilege_set (const char *desc, PRIVILEGE_SET *out, prs_struct *ps, int depth)
NTSTATUS init_lsa_r_enum_privsaccount (TALLOC_CTX *mem_ctx, LSA_R_ENUMPRIVSACCOUNT *out, LUID_ATTR *set, uint32 count, uint32 control)
BOOL lsa_io_r_enum_privsaccount (const char *desc, LSA_R_ENUMPRIVSACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_q_getsystemaccount (const char *desc, LSA_Q_GETSYSTEMACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_r_getsystemaccount (const char *desc, LSA_R_GETSYSTEMACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_q_setsystemaccount (const char *desc, LSA_Q_SETSYSTEMACCOUNT *out, prs_struct *ps, int depth)
BOOL lsa_io_r_setsystemaccount (const char *desc, LSA_R_SETSYSTEMACCOUNT *out, prs_struct *ps, int depth)
void init_lsa_string (LSA_STRING *uni, const char *string)
void init_lsa_q_lookup_priv_value (LSA_Q_LOOKUP_PRIV_VALUE *q_u, POLICY_HND *hnd, const char *name)
BOOL smb_io_lsa_string (const char *desc, LSA_STRING *string, prs_struct *ps, int depth)
BOOL lsa_io_q_lookup_priv_value (const char *desc, LSA_Q_LOOKUP_PRIV_VALUE *out, prs_struct *ps, int depth)
BOOL lsa_io_r_lookup_priv_value (const char *desc, LSA_R_LOOKUP_PRIV_VALUE *out, prs_struct *ps, int depth)
BOOL lsa_io_q_addprivs (const char *desc, LSA_Q_ADDPRIVS *out, prs_struct *ps, int depth)
BOOL lsa_io_r_addprivs (const char *desc, LSA_R_ADDPRIVS *out, prs_struct *ps, int depth)
BOOL lsa_io_q_removeprivs (const char *desc, LSA_Q_REMOVEPRIVS *out, prs_struct *ps, int depth)
BOOL lsa_io_r_removeprivs (const char *desc, LSA_R_REMOVEPRIVS *out, prs_struct *ps, int depth)
BOOL policy_handle_is_valid (const POLICY_HND *hnd)
void init_q_query2 (LSA_Q_QUERY_INFO2 *in, POLICY_HND *hnd, uint16 info_class)
BOOL lsa_io_q_query_info2 (const char *desc, LSA_Q_QUERY_INFO2 *in, prs_struct *ps, int depth)
BOOL lsa_io_r_query_info2 (const char *desc, LSA_R_QUERY_INFO2 *out, prs_struct *ps, int depth)
void init_q_enum_acct_rights (LSA_Q_ENUM_ACCT_RIGHTS *in, POLICY_HND *hnd, uint32 count, DOM_SID *sid)
NTSTATUS init_r_enum_acct_rights (LSA_R_ENUM_ACCT_RIGHTS *out, PRIVILEGE_SET *privileges)
BOOL lsa_io_q_enum_acct_rights (const char *desc, LSA_Q_ENUM_ACCT_RIGHTS *in, prs_struct *ps, int depth)
BOOL lsa_io_r_enum_acct_rights (const char *desc, LSA_R_ENUM_ACCT_RIGHTS *out, prs_struct *ps, int depth)
void init_q_add_acct_rights (LSA_Q_ADD_ACCT_RIGHTS *in, POLICY_HND *hnd, DOM_SID *sid, uint32 count, const char **rights)
BOOL lsa_io_q_add_acct_rights (const char *desc, LSA_Q_ADD_ACCT_RIGHTS *in, prs_struct *ps, int depth)
BOOL lsa_io_r_add_acct_rights (const char *desc, LSA_R_ADD_ACCT_RIGHTS *out, prs_struct *ps, int depth)
void init_q_remove_acct_rights (LSA_Q_REMOVE_ACCT_RIGHTS *in, POLICY_HND *hnd, DOM_SID *sid, uint32 removeall, uint32 count, const char **rights)
BOOL lsa_io_q_remove_acct_rights (const char *desc, LSA_Q_REMOVE_ACCT_RIGHTS *in, prs_struct *ps, int depth)
BOOL lsa_io_r_remove_acct_rights (const char *desc, LSA_R_REMOVE_ACCT_RIGHTS *out, prs_struct *ps, int depth)
void init_lsa_q_open_trusted_domain (LSA_Q_OPEN_TRUSTED_DOMAIN *q, POLICY_HND *hnd, DOM_SID *sid, uint32 desired_access)
BOOL lsa_io_q_open_trusted_domain (const char *desc, LSA_Q_OPEN_TRUSTED_DOMAIN *in, prs_struct *ps, int depth)
void init_lsa_q_open_trusted_domain_by_name (LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME *q, POLICY_HND *hnd, const char *name, uint32 desired_access)
BOOL lsa_io_q_open_trusted_domain_by_name (const char *desc, LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME *q_o, prs_struct *ps, int depth)
BOOL lsa_io_r_open_trusted_domain_by_name (const char *desc, LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME *out, prs_struct *ps, int depth)
BOOL lsa_io_r_open_trusted_domain (const char *desc, LSA_R_OPEN_TRUSTED_DOMAIN *out, prs_struct *ps, int depth)
BOOL lsa_io_q_create_trusted_domain (const char *desc, LSA_Q_CREATE_TRUSTED_DOMAIN *in, prs_struct *ps, int depth)
BOOL lsa_io_r_create_trusted_domain (const char *desc, LSA_R_CREATE_TRUSTED_DOMAIN *out, prs_struct *ps, int depth)
BOOL lsa_io_q_create_secret (const char *desc, LSA_Q_CREATE_SECRET *in, prs_struct *ps, int depth)
BOOL lsa_io_r_create_secret (const char *desc, LSA_R_CREATE_SECRET *out, prs_struct *ps, int depth)
static BOOL lsa_io_data_blob (const char *desc, prs_struct *ps, int depth, LSA_DATA_BLOB *blob)
BOOL lsa_io_q_set_secret (const char *desc, LSA_Q_SET_SECRET *in, prs_struct *ps, int depth)
BOOL lsa_io_r_set_secret (const char *desc, LSA_R_SET_SECRET *out, prs_struct *ps, int depth)
BOOL lsa_io_q_delete_object (const char *desc, LSA_Q_DELETE_OBJECT *in, prs_struct *ps, int depth)
BOOL lsa_io_r_delete_object (const char *desc, LSA_R_DELETE_OBJECT *out, prs_struct *ps, int depth)
void init_q_query_trusted_domain_info (LSA_Q_QUERY_TRUSTED_DOMAIN_INFO *q, POLICY_HND *hnd, uint16 info_class)
void init_q_query_trusted_domain_info_by_name (LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME *q, POLICY_HND *hnd, uint16 info_class, const char *dom_name)
void init_q_query_trusted_domain_info_by_sid (LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID *q, POLICY_HND *hnd, uint16 info_class, DOM_SID *dom_sid)
BOOL lsa_io_q_query_trusted_domain_info (const char *desc, LSA_Q_QUERY_TRUSTED_DOMAIN_INFO *q_q, prs_struct *ps, int depth)
BOOL lsa_io_q_query_trusted_domain_info_by_sid (const char *desc, LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID *q_q, prs_struct *ps, int depth)
BOOL lsa_io_q_query_trusted_domain_info_by_name (const char *desc, LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME *q_q, prs_struct *ps, int depth)
static BOOL smb_io_lsa_data_buf_hdr (const char *desc, LSA_DATA_BUF_HDR *buf_hdr, prs_struct *ps, int depth)
static BOOL smb_io_lsa_data_buf (const char *desc, LSA_DATA_BUF *buf, prs_struct *ps, int depth, int length, int size)
static BOOL lsa_io_trustdom_query_1 (const char *desc, TRUSTED_DOMAIN_INFO_NAME *name, prs_struct *ps, int depth)
static BOOL lsa_io_trustdom_query_3 (const char *desc, TRUSTED_DOMAIN_INFO_POSIX_OFFSET *posix, prs_struct *ps, int depth)
static BOOL lsa_io_trustdom_query_4 (const char *desc, TRUSTED_DOMAIN_INFO_PASSWORD *password, prs_struct *ps, int depth)
static BOOL lsa_io_trustdom_query_6 (const char *desc, TRUSTED_DOMAIN_INFO_EX *info_ex, prs_struct *ps, int depth)
static BOOL lsa_io_trustdom_query (const char *desc, prs_struct *ps, int depth, LSA_TRUSTED_DOMAIN_INFO *info)
BOOL lsa_io_r_query_trusted_domain_info (const char *desc, LSA_R_QUERY_TRUSTED_DOMAIN_INFO *r_q, prs_struct *ps, int depth)
void init_q_query_dom_info (LSA_Q_QUERY_DOM_INFO_POLICY *in, POLICY_HND *hnd, uint16 info_class)
BOOL lsa_io_q_query_dom_info (const char *desc, LSA_Q_QUERY_DOM_INFO_POLICY *in, prs_struct *ps, int depth)
static BOOL lsa_io_dominfo_query_3 (const char *desc, LSA_DOM_INFO_POLICY_KERBEROS *krb_policy, prs_struct *ps, int depth)
static BOOL lsa_io_dom_info_query (const char *desc, prs_struct *ps, int depth, LSA_DOM_INFO_UNION *info)
BOOL lsa_io_r_query_dom_info (const char *desc, LSA_R_QUERY_DOM_INFO_POLICY *out, prs_struct *ps, int depth)


関数

static BOOL lsa_io_trans_names ( const char *  desc,
LSA_TRANS_NAME_ENUM trn,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c1338 行で定義されています。

参照先 UNIHDR::bufferlsa_trans_name_info::hdr_namelsa_io_trans_name()lsa_trans_name_enum_info::namelsa_trans_name_enum_info::num_entrieslsa_trans_name_enum_info::num_entries2prs_debug()lsa_trans_name_enum_info::ptr_trans_namessmb_io_unistr2()tlsa_trans_name_enum_info::uni_name.

参照元 lsa_io_q_lookup_sids()lsa_io_r_lookup_sids().

01340 {
01341         unsigned int i;
01342 
01343         prs_debug(ps, depth, desc, "lsa_io_trans_names");
01344         depth++;
01345 
01346         if(!prs_align(ps))
01347                 return False;
01348    
01349         if(!prs_uint32("num_entries    ", ps, depth, &trn->num_entries))
01350                 return False;
01351         if(!prs_uint32("ptr_trans_names", ps, depth, &trn->ptr_trans_names))
01352                 return False;
01353 
01354         if (trn->ptr_trans_names != 0) {
01355                 if(!prs_uint32("num_entries2   ", ps, depth, 
01356                                &trn->num_entries2))
01357                         return False;
01358 
01359                 if (trn->num_entries2 != trn->num_entries) {
01360                         /* RPC fault */
01361                         return False;
01362                 }
01363 
01364                 if (UNMARSHALLING(ps) && trn->num_entries2) {
01365                         if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME, trn->num_entries2)) == NULL) {
01366                                 return False;
01367                         }
01368 
01369                         if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries2)) == NULL) {
01370                                 return False;
01371                         }
01372                 }
01373 
01374                 for (i = 0; i < trn->num_entries2; i++) {
01375                         fstring t;
01376                         slprintf(t, sizeof(t) - 1, "name[%d] ", i);
01377 
01378                         if(!lsa_io_trans_name(t, &trn->name[i], ps, depth)) /* translated name */
01379                                 return False;
01380                 }
01381 
01382                 for (i = 0; i < trn->num_entries2; i++) {
01383                         fstring t;
01384                         slprintf(t, sizeof(t) - 1, "name[%d] ", i);
01385 
01386                         if(!smb_io_unistr2(t, &trn->uni_name[i], trn->name[i].hdr_name.buffer, ps, depth))
01387                                 return False;
01388                         if(!prs_align(ps))
01389                                 return False;
01390                 }
01391         }
01392 
01393         return True;
01394 }

static BOOL lsa_io_trans_names2 ( const char *  desc,
LSA_TRANS_NAME_ENUM2 trn,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c1400 行で定義されています。

参照先 UNIHDR::bufferlsa_trans_name_info2::hdr_namelsa_io_trans_name2()lsa_trans_name_enum_info2::namelsa_trans_name_enum_info2::num_entrieslsa_trans_name_enum_info2::num_entries2prs_debug()lsa_trans_name_enum_info2::ptr_trans_namessmb_io_unistr2()tlsa_trans_name_enum_info2::uni_name.

参照元 lsa_io_q_lookup_sids2()lsa_io_q_lookup_sids3()lsa_io_r_lookup_sids2()lsa_io_r_lookup_sids3().

01402 {
01403         unsigned int i;
01404 
01405         prs_debug(ps, depth, desc, "lsa_io_trans_names2");
01406         depth++;
01407 
01408         if(!prs_align(ps))
01409                 return False;
01410    
01411         if(!prs_uint32("num_entries    ", ps, depth, &trn->num_entries))
01412                 return False;
01413         if(!prs_uint32("ptr_trans_names", ps, depth, &trn->ptr_trans_names))
01414                 return False;
01415 
01416         if (trn->ptr_trans_names != 0) {
01417                 if(!prs_uint32("num_entries2   ", ps, depth, 
01418                                &trn->num_entries2))
01419                         return False;
01420 
01421                 if (trn->num_entries2 != trn->num_entries) {
01422                         /* RPC fault */
01423                         return False;
01424                 }
01425 
01426                 if (UNMARSHALLING(ps) && trn->num_entries2) {
01427                         if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME2, trn->num_entries2)) == NULL) {
01428                                 return False;
01429                         }
01430 
01431                         if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries2)) == NULL) {
01432                                 return False;
01433                         }
01434                 }
01435 
01436                 for (i = 0; i < trn->num_entries2; i++) {
01437                         fstring t;
01438                         slprintf(t, sizeof(t) - 1, "name[%d] ", i);
01439 
01440                         if(!lsa_io_trans_name2(t, &trn->name[i], ps, depth)) /* translated name */
01441                                 return False;
01442                 }
01443 
01444                 for (i = 0; i < trn->num_entries2; i++) {
01445                         fstring t;
01446                         slprintf(t, sizeof(t) - 1, "name[%d] ", i);
01447 
01448                         if(!smb_io_unistr2(t, &trn->uni_name[i], trn->name[i].hdr_name.buffer, ps, depth))
01449                                 return False;
01450                         if(!prs_align(ps))
01451                                 return False;
01452                 }
01453         }
01454 
01455         return True;
01456 }

void init_lsa_trans_name ( LSA_TRANS_NAME trn,
UNISTR2 uni_name,
uint16  sid_name_use,
const char *  name,
uint32  idx 
)

parse_lsa.c38 行で定義されています。

参照先 lsa_trans_name_info::domain_idxlsa_trans_name_info::hdr_nameinit_uni_hdr()init_unistr2()lsa_trans_name_info::sid_name_useUNI_FLAGS_NONE.

00040 {
00041         trn->sid_name_use = sid_name_use;
00042         init_unistr2(uni_name, name, UNI_FLAGS_NONE);
00043         init_uni_hdr(&trn->hdr_name, uni_name);
00044         trn->domain_idx = idx;
00045 }

static BOOL lsa_io_trans_name ( const char *  desc,
LSA_TRANS_NAME trn,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c51 行で定義されています。

参照先 lsa_trans_name_info::domain_idxlsa_trans_name_info::hdr_nameprs_debug()lsa_trans_name_info::sid_name_usesmb_io_unihdr().

参照元 lsa_io_trans_names().

00053 {
00054         prs_debug(ps, depth, desc, "lsa_io_trans_name");
00055         depth++;
00056 
00057         if(!prs_align(ps))
00058                 return False;
00059         
00060         if(!prs_uint16("sid_name_use", ps, depth, &trn->sid_name_use))
00061                 return False;
00062         if(!prs_align(ps))
00063                 return False;
00064         
00065         if(!smb_io_unihdr ("hdr_name", &trn->hdr_name, ps, depth))
00066                 return False;
00067         if(!prs_uint32("domain_idx  ", ps, depth, &trn->domain_idx))
00068                 return False;
00069 
00070         return True;
00071 }

void init_lsa_trans_name2 ( LSA_TRANS_NAME2 trn,
UNISTR2 uni_name,
uint16  sid_name_use,
const char *  name,
uint32  idx 
)

parse_lsa.c77 行で定義されています。

参照先 lsa_trans_name_info2::domain_idxlsa_trans_name_info2::hdr_nameinit_uni_hdr()init_unistr2()lsa_trans_name_info2::sid_name_useUNI_FLAGS_NONElsa_trans_name_info2::unknown.

00079 {
00080         trn->sid_name_use = sid_name_use;
00081         init_unistr2(uni_name, name, UNI_FLAGS_NONE);
00082         init_uni_hdr(&trn->hdr_name, uni_name);
00083         trn->domain_idx = idx;
00084         trn->unknown = 0;
00085 }

static BOOL lsa_io_trans_name2 ( const char *  desc,
LSA_TRANS_NAME2 trn,
prs_struct ps,
int  depth 
) [static]

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

参照先 lsa_trans_name_info2::domain_idxlsa_trans_name_info2::hdr_nameprs_debug()lsa_trans_name_info2::sid_name_usesmb_io_unihdr()lsa_trans_name_info2::unknown.

参照元 lsa_io_trans_names2().

00093 {
00094         prs_debug(ps, depth, desc, "lsa_io_trans_name2");
00095         depth++;
00096 
00097         if(!prs_align(ps))
00098                 return False;
00099         
00100         if(!prs_uint16("sid_name_use", ps, depth, &trn->sid_name_use))
00101                 return False;
00102         if(!prs_align(ps))
00103                 return False;
00104         
00105         if(!smb_io_unihdr ("hdr_name", &trn->hdr_name, ps, depth))
00106                 return False;
00107         if(!prs_uint32("domain_idx  ", ps, depth, &trn->domain_idx))
00108                 return False;
00109         if(!prs_uint32("unknown  ", ps, depth, &trn->unknown))
00110                 return False;
00111 
00112         return True;
00113 }

static BOOL lsa_io_dom_r_ref ( const char *  desc,
DOM_R_REF dom,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c119 行で定義されています。

参照先 UNIHDR::bufferdom_trust_hdr::hdr_dom_namedom_ref_info::hdr_ref_domdom_ref_info::max_entriesdom_ref_info::num_ref_doms_1dom_ref_info::num_ref_doms_2prs_debug()dom_trust_hdr::ptr_dom_siddom_ref_info::ptr_ref_domdom_trust_info::ref_domdom_ref_info::ref_domsmb_io_dom_sid2()smb_io_unihdr()smb_io_unistr2()tdom_trust_info::uni_dom_name.

参照元 lsa_io_r_lookup_names()lsa_io_r_lookup_names2()lsa_io_r_lookup_names3()lsa_io_r_lookup_names4()lsa_io_r_lookup_sids()lsa_io_r_lookup_sids2()lsa_io_r_lookup_sids3().

00120 {
00121         unsigned int i;
00122 
00123         prs_debug(ps, depth, desc, "lsa_io_dom_r_ref");
00124         depth++;
00125 
00126         if(!prs_align(ps))
00127                 return False;
00128         
00129         if(!prs_uint32("num_ref_doms_1", ps, depth, &dom->num_ref_doms_1)) /* num referenced domains? */
00130                 return False;
00131         if(!prs_uint32("ptr_ref_dom   ", ps, depth, &dom->ptr_ref_dom)) /* undocumented buffer pointer. */
00132                 return False;
00133         if(!prs_uint32("max_entries   ", ps, depth, &dom->max_entries)) /* 32 - max number of entries */
00134                 return False;
00135 
00136         SMB_ASSERT_ARRAY(dom->hdr_ref_dom, dom->num_ref_doms_1);
00137 
00138         if (dom->ptr_ref_dom != 0) {
00139 
00140                 if(!prs_uint32("num_ref_doms_2", ps, depth, &dom->num_ref_doms_2)) /* 4 - num referenced domains? */
00141                         return False;
00142 
00143                 SMB_ASSERT_ARRAY(dom->ref_dom, dom->num_ref_doms_2);
00144 
00145                 for (i = 0; i < dom->num_ref_doms_1; i++) {
00146                         fstring t;
00147 
00148                         slprintf(t, sizeof(t) - 1, "dom_ref[%d] ", i);
00149                         if(!smb_io_unihdr(t, &dom->hdr_ref_dom[i].hdr_dom_name, ps, depth))
00150                                 return False;
00151 
00152                         slprintf(t, sizeof(t) - 1, "sid_ptr[%d] ", i);
00153                         if(!prs_uint32(t, ps, depth, &dom->hdr_ref_dom[i].ptr_dom_sid))
00154                                 return False;
00155                 }
00156 
00157                 for (i = 0; i < dom->num_ref_doms_2; i++) {
00158                         fstring t;
00159 
00160                         if (dom->hdr_ref_dom[i].hdr_dom_name.buffer != 0) {
00161                                 slprintf(t, sizeof(t) - 1, "dom_ref[%d] ", i);
00162                                 if(!smb_io_unistr2(t, &dom->ref_dom[i].uni_dom_name, True, ps, depth)) /* domain name unicode string */
00163                                         return False;
00164                                 if(!prs_align(ps))
00165                                         return False;
00166                         }
00167 
00168                         if (dom->hdr_ref_dom[i].ptr_dom_sid != 0) {
00169                                 slprintf(t, sizeof(t) - 1, "sid_ptr[%d] ", i);
00170                                 if(!smb_io_dom_sid2(t, &dom->ref_dom[i].ref_dom, ps, depth)) /* referenced domain SIDs */
00171                                         return False;
00172                         }
00173                 }
00174         }
00175 
00176         return True;
00177 }

void init_lsa_sec_qos ( LSA_SEC_QOS qos,
uint16  imp_lev,
uint8  ctxt,
uint8  eff 
)

parse_lsa.c183 行で定義されています。

参照先 seq_qos_info::effective_onlyseq_qos_info::lenseq_qos_info::sec_ctxt_modeseq_qos_info::sec_imp_level.

参照元 rpccli_lsa_open_policy()rpccli_lsa_open_policy2().

00184 {
00185         DEBUG(5, ("init_lsa_sec_qos\n"));
00186 
00187         qos->len = 0x0c; /* length of quality of service block, in bytes */
00188         qos->sec_imp_level = imp_lev;
00189         qos->sec_ctxt_mode = ctxt;
00190         qos->effective_only = eff;
00191 }

static BOOL lsa_io_sec_qos ( const char *  desc,
LSA_SEC_QOS qos,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c197 行で定義されています。

参照先 seq_qos_info::effective_onlyseq_qos_info::lenprs_debug()seq_qos_info::sec_ctxt_modeseq_qos_info::sec_imp_level.

参照元 lsa_io_obj_attr().

00199 {
00200         uint32 start;
00201 
00202         prs_debug(ps, depth, desc, "lsa_io_obj_qos");
00203         depth++;
00204 
00205         if(!prs_align(ps))
00206                 return False;
00207         
00208         start = prs_offset(ps);
00209 
00210         /* these pointers had _better_ be zero, because we don't know
00211            what they point to!
00212          */
00213         if(!prs_uint32("len           ", ps, depth, &qos->len)) /* 0x18 - length (in bytes) inc. the length field. */
00214                 return False;
00215         if(!prs_uint16("sec_imp_level ", ps, depth, &qos->sec_imp_level ))
00216                 return False;
00217         if(!prs_uint8 ("sec_ctxt_mode ", ps, depth, &qos->sec_ctxt_mode ))
00218                 return False;
00219         if(!prs_uint8 ("effective_only", ps, depth, &qos->effective_only))
00220                 return False;
00221 
00222         if (qos->len != prs_offset(ps) - start) {
00223                 DEBUG(3,("lsa_io_sec_qos: length %x does not match size %x\n",
00224                          qos->len, prs_offset(ps) - start));
00225         }
00226 
00227         return True;
00228 }

static void init_lsa_obj_attr ( LSA_OBJ_ATTR attr,
uint32  attributes,
LSA_SEC_QOS qos 
) [static]

parse_lsa.c234 行で定義されています。

参照先 obj_attr_info::attributesobj_attr_info::lenobj_attr_info::ptr_obj_nameobj_attr_info::ptr_root_dirobj_attr_info::ptr_sec_descobj_attr_info::ptr_sec_qosobj_attr_info::sec_qos.

参照元 init_q_open_pol()init_q_open_pol2().

00235 {
00236         DEBUG(5, ("init_lsa_obj_attr\n"));
00237 
00238         attr->len = 0x18; /* length of object attribute block, in bytes */
00239         attr->ptr_root_dir = 0;
00240         attr->ptr_obj_name = 0;
00241         attr->attributes = attributes;
00242         attr->ptr_sec_desc = 0;
00243         
00244         if (qos != NULL) {
00245                 attr->ptr_sec_qos = 1;
00246                 attr->sec_qos = qos;
00247         } else {
00248                 attr->ptr_sec_qos = 0;
00249                 attr->sec_qos = NULL;
00250         }
00251 }

static BOOL lsa_io_obj_attr ( const char *  desc,
LSA_OBJ_ATTR attr,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c257 行で定義されています。

参照先 obj_attr_info::attributesobj_attr_info::lenlsa_io_sec_qos()prs_debug()obj_attr_info::ptr_obj_nameobj_attr_info::ptr_root_dirobj_attr_info::ptr_sec_descobj_attr_info::ptr_sec_qosobj_attr_info::sec_qos.

参照元 lsa_io_q_open_pol()lsa_io_q_open_pol2().

00259 {
00260         prs_debug(ps, depth, desc, "lsa_io_obj_attr");
00261         depth++;
00262 
00263         if(!prs_align(ps))
00264                 return False;
00265         
00266         /* these pointers had _better_ be zero, because we don't know
00267            what they point to!
00268          */
00269         if(!prs_uint32("len         ", ps, depth, &attr->len)) /* 0x18 - length (in bytes) inc. the length field. */
00270                 return False;
00271         if(!prs_uint32("ptr_root_dir", ps, depth, &attr->ptr_root_dir)) /* 0 - root directory (pointer) */
00272                 return False;
00273         if(!prs_uint32("ptr_obj_name", ps, depth, &attr->ptr_obj_name)) /* 0 - object name (pointer) */
00274                 return False;
00275         if(!prs_uint32("attributes  ", ps, depth, &attr->attributes)) /* 0 - attributes (undocumented) */
00276                 return False;
00277         if(!prs_uint32("ptr_sec_desc", ps, depth, &attr->ptr_sec_desc)) /* 0 - security descriptior (pointer) */
00278                 return False;
00279         if(!prs_uint32("ptr_sec_qos ", ps, depth, &attr->ptr_sec_qos )) /* security quality of service (pointer) */
00280                 return False;
00281 
00282         if (attr->ptr_sec_qos != 0) {
00283                 if (UNMARSHALLING(ps))
00284                         if (!(attr->sec_qos = PRS_ALLOC_MEM(ps,LSA_SEC_QOS,1)))
00285                                 return False;
00286 
00287                 if(!lsa_io_sec_qos("sec_qos", attr->sec_qos, ps, depth))
00288                         return False;
00289         }
00290 
00291         return True;
00292 }

void init_q_open_pol ( LSA_Q_OPEN_POL in,
uint16  system_name,
uint32  attributes,
uint32  desired_access,
LSA_SEC_QOS qos 
)

parse_lsa.c299 行で定義されています。

参照先 lsa_q_open_pol_info::attrlsa_q_open_pol_info::des_accessinit_lsa_obj_attr()lsa_q_open_pol_info::ptrlsa_q_open_pol_info::system_name.

参照元 rpccli_lsa_open_policy().

00302 {
00303         DEBUG(5, ("init_open_pol: attr:%d da:%d\n", attributes, 
00304                   desired_access));
00305 
00306         in->ptr = 1; /* undocumented pointer */
00307 
00308         in->des_access = desired_access;
00309 
00310         in->system_name = system_name;
00311         init_lsa_obj_attr(&in->attr, attributes, qos);
00312 }

BOOL lsa_io_q_open_pol ( const char *  desc,
LSA_Q_OPEN_POL in,
prs_struct ps,
int  depth 
)

parse_lsa.c318 行で定義されています。

参照先 lsa_q_open_pol_info::attrlsa_q_open_pol_info::des_accesslsa_io_obj_attr()prs_debug()lsa_q_open_pol_info::ptrlsa_q_open_pol_info::system_name.

参照元 api_lsa_open_policy()rpccli_lsa_open_policy().

00320 {
00321         prs_debug(ps, depth, desc, "lsa_io_q_open_pol");
00322         depth++;
00323 
00324         if(!prs_uint32("ptr       ", ps, depth, &in->ptr))
00325                 return False;
00326         if(!prs_uint16("system_name", ps, depth, &in->system_name))
00327                 return False;
00328         if(!prs_align( ps ))
00329                 return False;
00330 
00331         if(!lsa_io_obj_attr("", &in->attr, ps, depth))
00332                 return False;
00333 
00334         if(!prs_uint32("des_access", ps, depth, &in->des_access))
00335                 return False;
00336 
00337         return True;
00338 }

BOOL lsa_io_r_open_pol ( const char *  desc,
LSA_R_OPEN_POL out,
prs_struct ps,
int  depth 
)

parse_lsa.c344 行で定義されています。

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

参照元 api_lsa_open_policy()rpccli_lsa_open_policy().

00346 {
00347         prs_debug(ps, depth, desc, "lsa_io_r_open_pol");
00348         depth++;
00349 
00350         if(!smb_io_pol_hnd("", &out->pol, ps, depth))
00351                 return False;
00352 
00353         if(!prs_ntstatus("status", ps, depth, &out->status))
00354                 return False;
00355 
00356         return True;
00357 }

void init_q_open_pol2 ( LSA_Q_OPEN_POL2 in,
const char *  server_name,
uint32  attributes,
uint32  desired_access,
LSA_SEC_QOS qos 
)

parse_lsa.c363 行で定義されています。

参照先 lsa_q_open_pol2_info::attrlsa_q_open_pol2_info::des_accessinit_lsa_obj_attr()init_unistr2()lsa_q_open_pol2_info::ptrlsa_q_open_pol2_info::uni_server_nameUNI_STR_TERMINATE.

参照元 rpccli_lsa_open_policy2().

00366 {
00367         DEBUG(5, ("init_q_open_pol2: attr:%d da:%d\n", attributes, 
00368                   desired_access));
00369 
00370         in->ptr = 1; /* undocumented pointer */
00371 
00372         in->des_access = desired_access;
00373 
00374         init_unistr2(&in->uni_server_name, server_name, UNI_STR_TERMINATE);
00375 
00376         init_lsa_obj_attr(&in->attr, attributes, qos);
00377 }

BOOL lsa_io_q_open_pol2 ( const char *  desc,
LSA_Q_OPEN_POL2 in,
prs_struct ps,
int  depth 
)

parse_lsa.c383 行で定義されています。

参照先 lsa_q_open_pol2_info::attrlsa_q_open_pol2_info::des_accesslsa_io_obj_attr()prs_debug()lsa_q_open_pol2_info::ptrsmb_io_unistr2()lsa_q_open_pol2_info::uni_server_name.

参照元 api_lsa_open_policy2()rpccli_lsa_open_policy2().

00385 {
00386         prs_debug(ps, depth, desc, "lsa_io_q_open_pol2");
00387         depth++;
00388 
00389         if(!prs_uint32("ptr       ", ps, depth, &in->ptr))
00390                 return False;
00391 
00392         if(!smb_io_unistr2 ("", &in->uni_server_name, in->ptr, ps, depth))
00393                 return False;
00394         if(!lsa_io_obj_attr("", &in->attr, ps, depth))
00395                 return False;
00396 
00397         if(!prs_uint32("des_access", ps, depth, &in->des_access))
00398                 return False;
00399 
00400         return True;
00401 }

BOOL lsa_io_r_open_pol2 ( const char *  desc,
LSA_R_OPEN_POL2 out,
prs_struct ps,
int  depth 
)

parse_lsa.c407 行で定義されています。

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

参照元 api_lsa_open_policy2()rpccli_lsa_open_policy2().

00409 {
00410         prs_debug(ps, depth, desc, "lsa_io_r_open_pol2");
00411         depth++;
00412 
00413         if(!smb_io_pol_hnd("", &out->pol, ps, depth))
00414                 return False;
00415 
00416         if(!prs_ntstatus("status", ps, depth, &out->status))
00417                 return False;
00418 
00419         return True;
00420 }

void init_q_query_sec_obj ( LSA_Q_QUERY_SEC_OBJ in,
const POLICY_HND hnd,
uint32  sec_info 
)

parse_lsa.c426 行で定義されています。

参照先 lsa_query_sec_obj_info::pollsa_query_sec_obj_info::sec_info.

参照元 rpccli_lsa_query_secobj().

00428 {
00429         DEBUG(5, ("init_q_query_sec_obj\n"));
00430 
00431         in->pol = *hnd;
00432         in->sec_info = sec_info;
00433 
00434         return;
00435 }

BOOL lsa_io_q_query_sec_obj ( const char *  desc,
LSA_Q_QUERY_SEC_OBJ in,
prs_struct ps,
int  depth 
)

parse_lsa.c441 行で定義されています。

参照先 lsa_query_sec_obj_info::polprs_debug()lsa_query_sec_obj_info::sec_infosmb_io_pol_hnd().

参照元 api_lsa_query_secobj()rpccli_lsa_query_secobj().

00443 {
00444         prs_debug(ps, depth, desc, "lsa_io_q_query_sec_obj");
00445         depth++;
00446 
00447         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
00448                 return False;
00449 
00450         if (!prs_uint32("sec_info", ps, depth, &in->sec_info))
00451                 return False;
00452 
00453         return True;
00454 } 

BOOL lsa_io_r_query_sec_obj ( const char *  desc,
LSA_R_QUERY_SEC_OBJ out,
prs_struct ps,
int  depth 
)

parse_lsa.c460 行で定義されています。

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

参照元 api_lsa_query_secobj()rpccli_lsa_query_secobj().

00461 {
00462         prs_debug(ps, depth, desc, "lsa_io_r_query_sec_obj");
00463         depth++;
00464 
00465         if (!prs_align(ps))
00466                 return False;
00467 
00468         if (!prs_uint32("ptr", ps, depth, &out->ptr))
00469                 return False;
00470 
00471         if (out->ptr != 0) {
00472                 if (!sec_io_desc_buf("sec", &out->buf, ps, depth))
00473                         return False;
00474         }
00475 
00476         if (!prs_ntstatus("status", ps, depth, &out->status))
00477                 return False;
00478 
00479         return True;
00480 }

void init_q_query ( LSA_Q_QUERY_INFO in,
POLICY_HND hnd,
uint16  info_class 
)

parse_lsa.c486 行で定義されています。

参照先 lsa_query_info::info_classlsa_query_info::pol.

参照元 rpccli_lsa_query_info_policy()rpccli_lsa_query_info_policy_new().

00487 {
00488         DEBUG(5, ("init_q_query\n"));
00489 
00490         memcpy(&in->pol, hnd, sizeof(in->pol));
00491 
00492         in->info_class = info_class;
00493 }

BOOL lsa_io_q_query ( const char *  desc,
LSA_Q_QUERY_INFO in,
prs_struct ps,
int  depth 
)

parse_lsa.c499 行で定義されています。

参照先 lsa_query_info::info_classlsa_query_info::polprs_debug()smb_io_pol_hnd().

参照元 api_lsa_query_info()rpccli_lsa_query_info_policy()rpccli_lsa_query_info_policy_new().

00501 {
00502         prs_debug(ps, depth, desc, "lsa_io_q_query");
00503         depth++;
00504 
00505         if(!smb_io_pol_hnd("", &in->pol, ps, depth))
00506                 return False;
00507 
00508         if(!prs_uint16("info_class", ps, depth, &in->info_class))
00509                 return False;
00510 
00511         return True;
00512 }

BOOL init_q_enum_trust_dom ( LSA_Q_ENUM_TRUST_DOM q_e,
POLICY_HND pol,
uint32  enum_context,
uint32  preferred_len 
)

parse_lsa.c517 行で定義されています。

参照先 LSA_Q_ENUM_TRUST_DOM::enum_contextpolLSA_Q_ENUM_TRUST_DOM::polLSA_Q_ENUM_TRUST_DOM::preferred_len.

参照元 rpccli_lsa_enum_trust_dom().

00519 {
00520         DEBUG(5, ("init_q_enum_trust_dom\n"));
00521 
00522         q_e->pol = *pol;
00523         q_e->enum_context = enum_context;
00524         q_e->preferred_len = preferred_len;
00525 
00526         return True;
00527 }

BOOL lsa_io_q_enum_trust_dom ( const char *  desc,
LSA_Q_ENUM_TRUST_DOM q_e,
prs_struct ps,
int  depth 
)

parse_lsa.c533 行で定義されています。

参照先 LSA_Q_ENUM_TRUST_DOM::enum_contextLSA_Q_ENUM_TRUST_DOM::polLSA_Q_ENUM_TRUST_DOM::preferred_lenprs_debug()smb_io_pol_hnd().

参照元 api_lsa_enum_trust_dom()rpccli_lsa_enum_trust_dom().

00535 {
00536         prs_debug(ps, depth, desc, "lsa_io_q_enum_trust_dom");
00537         depth++;
00538 
00539         if(!smb_io_pol_hnd("", &q_e->pol, ps, depth))
00540                 return False;
00541 
00542         if(!prs_uint32("enum_context ", ps, depth, &q_e->enum_context))
00543                 return False;
00544         if(!prs_uint32("preferred_len", ps, depth, &q_e->preferred_len))
00545                 return False;
00546 
00547         return True;
00548 }

void init_r_enum_trust_dom ( TALLOC_CTX ctx,
LSA_R_ENUM_TRUST_DOM out,
uint32  enum_context,
uint32  num_domains,
struct trustdom_info **  td 
)

parse_lsa.c554 行で定義されています。

参照先 DOMAIN_LIST::countLSA_R_ENUM_TRUST_DOM::countDOMAIN_LIST::domainsLSA_R_ENUM_TRUST_DOM::domlistLSA_R_ENUM_TRUST_DOM::enum_contextinit_dom_sid2()init_unistr4_w()DOMAIN_INFO::namenamepush_ucs2_talloc()DOM_SID2::sidDOMAIN_INFO::sidLSA_R_ENUM_TRUST_DOM::status.

参照元 _lsa_enum_trust_dom().

00557 {
00558         unsigned int i;
00559 
00560         DEBUG(5, ("init_r_enum_trust_dom\n"));
00561         
00562         out->enum_context  = enum_context;
00563         out->count         = num_domains;
00564                         
00565         if ( num_domains != 0 ) {
00566         
00567                 /* allocate container memory */
00568                 
00569                 out->domlist = TALLOC_P( ctx, DOMAIN_LIST );
00570 
00571                 if ( !out->domlist ) {
00572                         out->status = NT_STATUS_NO_MEMORY;
00573                         return;
00574                 }
00575 
00576                 if (out->count) {
00577                         out->domlist->domains = TALLOC_ARRAY( ctx, DOMAIN_INFO,
00578                                                       out->count );
00579                         if ( !out->domlist->domains ) {
00580                                 out->status = NT_STATUS_NO_MEMORY;
00581                                 return;
00582                         }
00583                 } else {                
00584                         out->domlist->domains = NULL;
00585                 }
00586         
00587                 out->domlist->count = out->count;
00588                 
00589                 /* initialize the list of domains and their sid */
00590                 
00591                 for (i = 0; i < num_domains; i++) {     
00592                         smb_ucs2_t *name;
00593                         if ( !(out->domlist->domains[i].sid =
00594                                TALLOC_P(ctx, DOM_SID2)) ) {
00595                                 out->status = NT_STATUS_NO_MEMORY;
00596                                 return;
00597                         }
00598                                 
00599                         init_dom_sid2(out->domlist->domains[i].sid,
00600                                       &(td[i])->sid);
00601                         if (push_ucs2_talloc(ctx, &name, (td[i])->name) == (size_t)-1){
00602                                 out->status = NT_STATUS_NO_MEMORY;
00603                                 return;
00604                         }
00605                         init_unistr4_w(ctx, &out->domlist->domains[i].name,
00606                                        name);
00607                 }
00608         }
00609 
00610 }

BOOL lsa_io_domain_list ( const char *  desc,
prs_struct ps,
int  depth,
DOMAIN_LIST domlist 
)

parse_lsa.c615 行で定義されています。

参照先 DOMAIN_LIST::countDOMAIN_LIST::domainsDOMAIN_INFO::nameprs_debug()prs_unistr4_hdr()prs_unistr4_str()DOMAIN_INFO::sidsmb_io_dom_sid2()smb_io_dom_sid2_p().

参照元 lsa_io_r_enum_trust_dom().

00616 {
00617         int i;
00618         
00619         prs_debug(ps, depth, desc, "lsa_io_domain_list");
00620         depth++;
00621 
00622         if(!prs_uint32("count", ps, depth, &domlist->count))
00623                 return False;
00624 
00625         if ( domlist->count == 0 )
00626                 return True;
00627                 
00628         if ( UNMARSHALLING(ps) ) {
00629                 if ( !(domlist->domains = PRS_ALLOC_MEM( ps, DOMAIN_INFO, domlist->count )) )
00630                         return False;
00631         }
00632         
00633         /* headers */
00634         
00635         for ( i=0; i<domlist->count; i++ ) {
00636                 if ( !prs_unistr4_hdr("name_header", ps, depth, &domlist->domains[i].name) )
00637                         return False;
00638                 if ( !smb_io_dom_sid2_p("sid_header", ps, depth, &domlist->domains[i].sid) )
00639                         return False;
00640         }
00641 
00642         /* data */
00643         
00644         for ( i=0; i<domlist->count; i++ ) {
00645                 if ( !prs_unistr4_str("name", ps, depth, &domlist->domains[i].name) )
00646                         return False;
00647                 if( !smb_io_dom_sid2("sid", domlist->domains[i].sid, ps, depth) )
00648                         return False;
00649         }
00650         
00651         return True;
00652 }

BOOL lsa_io_r_enum_trust_dom ( const char *  desc,
LSA_R_ENUM_TRUST_DOM out,
prs_struct ps,
int  depth 
)

parse_lsa.c658 行で定義されています。

参照先 LSA_R_ENUM_TRUST_DOM::countLSA_R_ENUM_TRUST_DOM::domlistLSA_R_ENUM_TRUST_DOM::enum_contextlsa_io_domain_list()prs_debug()LSA_R_ENUM_TRUST_DOM::status.

参照元 api_lsa_enum_trust_dom()rpccli_lsa_enum_trust_dom().

00660 {
00661         prs_debug(ps, depth, desc, "lsa_io_r_enum_trust_dom");
00662         depth++;
00663 
00664         if(!prs_uint32("enum_context", ps, depth, &out->enum_context))
00665                 return False;
00666 
00667         if(!prs_uint32("count", ps, depth, &out->count))
00668                 return False;
00669 
00670         if ( !prs_pointer("trusted_domains", ps, depth, (void*)&out->domlist, sizeof(DOMAIN_LIST), (PRS_POINTER_CAST)lsa_io_domain_list))
00671                 return False;
00672                 
00673         if(!prs_ntstatus("status", ps, depth, &out->status))
00674                 return False;
00675 
00676         return True;
00677 }

static BOOL lsa_io_dom_query_1 ( const char *  desc,
DOM_QUERY_1 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c683 行で定義されています。

参照先 dom_query_1::log_sizedom_query_1::next_audit_recorddom_query_1::percent_fullprs_debug()dom_query_1::retention_timedom_query_1::shutdown_in_progresssmb_io_nttime()dom_query_1::time_to_shutdowndom_query_1::unknown.

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00684 {
00685         if (d_q == NULL)
00686                 return False;
00687 
00688         prs_debug(ps, depth, desc, "lsa_io_dom_query_1");
00689         depth++;
00690 
00691         if (!prs_align(ps))
00692                 return False;
00693 
00694         if (!prs_uint32("percent_full", ps, depth, &d_q->percent_full))
00695                 return False;
00696         if (!prs_uint32("log_size", ps, depth, &d_q->log_size))
00697                 return False;
00698         if (!smb_io_nttime("retention_time", ps, depth, &d_q->retention_time))
00699                 return False;
00700         if (!prs_uint8("shutdown_in_progress", ps, depth, &d_q->shutdown_in_progress))
00701                 return False;
00702         if (!smb_io_nttime("time_to_shutdown", ps, depth, &d_q->time_to_shutdown))
00703                 return False;
00704         if (!prs_uint32("next_audit_record", ps, depth, &d_q->next_audit_record))
00705                 return False;
00706         if (!prs_uint32("unknown", ps, depth, &d_q->unknown))
00707                 return False;
00708 
00709         return True;
00710 }

static BOOL lsa_io_dom_query_2 ( const char *  desc,
DOM_QUERY_2 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c716 行で定義されています。

参照先 dom_query_2::auditing_enableddom_query_2::auditsettingsdom_query_2::count1dom_query_2::count2_prs_struct::mem_ctxprs_debug()dom_query_2::ptr.

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00717 {
00718         if (d_q == NULL)
00719                 return False;
00720 
00721         prs_debug(ps, depth, desc, "lsa_io_dom_query_2");
00722         depth++;
00723 
00724         if (!prs_align(ps))
00725                 return False;
00726 
00727         if (!prs_uint32("auditing_enabled", ps, depth, &d_q->auditing_enabled))
00728                 return False;
00729         if (!prs_uint32("ptr   ", ps, depth, &d_q->ptr))
00730                 return False;
00731         if (!prs_uint32("count1", ps, depth, &d_q->count1))
00732                 return False;
00733 
00734         if (d_q->ptr) {
00735 
00736                 if (!prs_uint32("count2", ps, depth, &d_q->count2))
00737                         return False;
00738 
00739                 if (d_q->count1 != d_q->count2)
00740                         return False;
00741 
00742                 if (UNMARSHALLING(ps)) {
00743                         if (d_q->count2) {
00744                                 d_q->auditsettings = TALLOC_ZERO_ARRAY(ps->mem_ctx, uint32, d_q->count2);
00745                                 if (!d_q->auditsettings) {
00746                                         return False;
00747                                 }
00748                         } else {
00749                                 d_q->auditsettings = NULL;
00750                         }
00751                 }
00752 
00753                 if (!prs_uint32s(False, "auditsettings", ps, depth, d_q->auditsettings, d_q->count2))
00754                         return False;
00755         }
00756 
00757         return True;
00758 }

static BOOL lsa_io_dom_query_3 ( const char *  desc,
DOM_QUERY_3 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c764 行で定義されています。

参照先 dom_query_info_3::buffer_dom_namedom_query_info_3::buffer_dom_siddom_query_info_3::dom_sidprs_debug()smb_io_dom_sid2()smb_io_unistr2()dom_query_info_3::uni_dom_max_lendom_query_info_3::uni_dom_str_lendom_query_info_3::uni_domain_name.

参照元 lsa_io_dom_query_5()lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00765 {
00766         if (d_q == NULL)
00767                 return False;
00768 
00769         prs_debug(ps, depth, desc, "lsa_io_dom_query_3");
00770         depth++;
00771 
00772         if(!prs_align(ps))
00773                 return False;
00774 
00775         if(!prs_uint16("uni_dom_max_len", ps, depth, &d_q->uni_dom_max_len)) /* domain name string length * 2 */
00776                 return False;
00777         if(!prs_uint16("uni_dom_str_len", ps, depth, &d_q->uni_dom_str_len)) /* domain name string length * 2 */
00778                 return False;
00779 
00780         if(!prs_uint32("buffer_dom_name", ps, depth, &d_q->buffer_dom_name)) /* undocumented domain name string buffer pointer */
00781                 return False;
00782         if(!prs_uint32("buffer_dom_sid ", ps, depth, &d_q->buffer_dom_sid)) /* undocumented domain SID string buffer pointer */
00783                 return False;
00784 
00785         if(!smb_io_unistr2("unistr2", &d_q->uni_domain_name, d_q->buffer_dom_name, ps, depth)) /* domain name (unicode string) */
00786                 return False;
00787 
00788         if(!prs_align(ps))
00789                 return False;
00790 
00791         if (d_q->buffer_dom_sid != 0) {
00792                 if(!smb_io_dom_sid2("", &d_q->dom_sid, ps, depth)) /* domain SID */
00793                         return False;
00794         } else {
00795                 memset((char *)&d_q->dom_sid, '\0', sizeof(d_q->dom_sid));
00796         }
00797 
00798         return True;
00799 }

static BOOL lsa_io_dom_query_5 ( const char *  desc,
DOM_QUERY_5 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c805 行で定義されています。

参照先 lsa_io_dom_query_3().

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00806 {
00807         return lsa_io_dom_query_3("", d_q, ps, depth);
00808 }

static BOOL lsa_io_dom_query_6 ( const char *  desc,
DOM_QUERY_6 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c814 行で定義されています。

参照先 prs_debug()dom_query_6::server_role.

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00815 {
00816         if (d_q == NULL)
00817                 return False;
00818 
00819         prs_debug(ps, depth, desc, "lsa_io_dom_query_6");
00820         depth++;
00821 
00822         if (!prs_uint16("server_role", ps, depth, &d_q->server_role))
00823                 return False;
00824 
00825         return True;
00826 }

static BOOL lsa_io_dom_query_10 ( const char *  desc,
DOM_QUERY_10 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c832 行で定義されています。

参照先 prs_debug()dom_query_10::shutdown_on_full.

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00833 {
00834         if (d_q == NULL)
00835                 return False;
00836 
00837         prs_debug(ps, depth, desc, "lsa_io_dom_query_10");
00838         depth++;
00839 
00840         if (!prs_uint8("shutdown_on_full", ps, depth, &d_q->shutdown_on_full))
00841                 return False;
00842 
00843         return True;
00844 }

static BOOL lsa_io_dom_query_11 ( const char *  desc,
DOM_QUERY_11 d_q,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c850 行で定義されています。

参照先 dom_query_11::log_is_fullprs_debug()dom_query_11::shutdown_on_fulldom_query_11::unknown.

参照元 lsa_io_query_info_ctr()lsa_io_query_info_ctr2().

00851 {
00852         if (d_q == NULL)
00853                 return False;
00854 
00855         prs_debug(ps, depth, desc, "lsa_io_dom_query_11");
00856         depth++;
00857 
00858         if (!prs_uint16("unknown", ps, depth, &d_q->unknown))
00859                 return False;
00860         if (!prs_uint8("shutdown_on_full", ps, depth, &d_q->shutdown_on_full))
00861                 return False;
00862         if (!prs_uint8("log_is_full", ps, depth, &d_q->log_is_full))
00863                 return False;
00864 
00865         return True;
00866 }

BOOL lsa_io_dom_query_12 ( const char *  desc,
DOM_QUERY_12 info,
prs_struct ps,
int  depth 
)

parse_lsa.c872 行で定義されています。

参照先 UNIHDR::bufferlsa_dns_dom_info::dom_guidlsa_dns_dom_info::dom_sidlsa_dns_dom_info::hdr_dns_dom_namelsa_dns_dom_info::hdr_forest_namelsa_dns_dom_info::hdr_nb_dom_nameprs_debug()lsa_dns_dom_info::ptr_dom_sidsmb_io_dom_sid2()smb_io_unihdr()smb_io_unistr2()smb_io_uuid()lsa_dns_dom_info::uni_dns_dom_namelsa_dns_dom_info::uni_forest_namelsa_dns_dom_info::uni_nb_dom_name.

参照元 lsa_io_query_info_ctr2().

00873 {
00874         prs_debug(ps, depth, desc, "lsa_io_dom_query_12");
00875         depth++;
00876 
00877         if(!prs_align(ps))
00878                 return False;
00879         if(!smb_io_unihdr("nb_name", &info->hdr_nb_dom_name, ps, depth))
00880                 return False;
00881         if(!smb_io_unihdr("dns_name", &info->hdr_dns_dom_name, ps, depth))
00882                 return False;
00883         if(!smb_io_unihdr("forest", &info->hdr_forest_name, ps, depth))
00884                 return False;
00885 
00886         if(!prs_align(ps))
00887                 return False;
00888         if ( !smb_io_uuid("dom_guid", &info->dom_guid, ps, depth) )
00889                 return False;
00890 
00891         if(!prs_align(ps))
00892                 return False;
00893         if(!prs_uint32("dom_sid", ps, depth, &info->ptr_dom_sid))
00894                 return False;
00895 
00896         if(!smb_io_unistr2("nb_name", &info->uni_nb_dom_name,
00897                            info->hdr_nb_dom_name.buffer, ps, depth))
00898                 return False;
00899         if(!smb_io_unistr2("dns_name", &info->uni_dns_dom_name, 
00900                            info->hdr_dns_dom_name.buffer, ps, depth))
00901                 return False;
00902         if(!smb_io_unistr2("forest", &info->uni_forest_name, 
00903                            info->hdr_forest_name.buffer, ps, depth))
00904                 return False;
00905 
00906         if(!smb_io_dom_sid2("dom_sid", &info->dom_sid, ps, depth))
00907                 return False;
00908 
00909         return True;
00910         
00911 }

void init_q_set ( LSA_Q_SET_INFO in,
POLICY_HND hnd,
uint16  info_class,
LSA_INFO_CTR  ctr 
)

parse_lsa.c917 行で定義されています。

参照先 lsa_set_info::ctrlsa_info_ctr::info_classlsa_set_info::info_classlsa_set_info::pol.

参照元 rpccli_lsa_set_info_policy().

00918 {
00919         DEBUG(5,("init_q_set\n"));
00920 
00921         in->info_class = info_class;
00922 
00923         in->pol = *hnd;
00924 
00925         in->ctr = ctr;
00926         in->ctr.info_class = info_class;
00927 }

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

parse_lsa.c933 行で定義されています。

参照先 lsa_info_ctr::id1lsa_info_ctr::id10lsa_info_ctr::id11lsa_info_ctr::id12lsa_info_ctr::id2lsa_info_ctr::id3lsa_info_ctr::id5lsa_info_ctr::id6lsa_info_ctr::infolsa_info_ctr::info_classlsa_io_dom_query_1()lsa_io_dom_query_10()lsa_io_dom_query_11()lsa_io_dom_query_12()lsa_io_dom_query_2()lsa_io_dom_query_3()lsa_io_dom_query_5()lsa_io_dom_query_6()prs_debug().

参照元 lsa_io_r_query_info2().

00934 {
00935         prs_debug(ps, depth, desc, "lsa_io_query_info_ctr2");
00936         depth++;
00937 
00938         if(!prs_uint16("info_class", ps, depth, &ctr->info_class))
00939                 return False;
00940 
00941         switch (ctr->info_class) {
00942         case 1:
00943                 if(!lsa_io_dom_query_1("", &ctr->info.id1, ps, depth))
00944                         return False;
00945                 break;
00946         case 2:
00947                 if(!lsa_io_dom_query_2("", &ctr->info.id2, ps, depth))
00948                         return False;
00949                 break;
00950         case 3:
00951                 if(!lsa_io_dom_query_3("", &ctr->info.id3, ps, depth))
00952                         return False;
00953                 break;
00954         case 5:
00955                 if(!lsa_io_dom_query_5("", &ctr->info.id5, ps, depth))
00956                         return False;
00957                 break;
00958         case 6:
00959                 if(!lsa_io_dom_query_6("", &ctr->info.id6, ps, depth))
00960                         return False;
00961                 break;
00962         case 10:
00963                 if(!lsa_io_dom_query_10("", &ctr->info.id10, ps, depth))
00964                         return False;
00965                 break;
00966         case 11:
00967                 if(!lsa_io_dom_query_11("", &ctr->info.id11, ps, depth))
00968                         return False;
00969                 break;
00970         case 12:
00971                 if(!lsa_io_dom_query_12("", &ctr->info.id12, ps, depth))
00972                         return False;
00973                 break;
00974         default:
00975                 DEBUG(0,("invalid info_class: %d\n", ctr->info_class));
00976                 return False;
00977                 break;
00978         }
00979 
00980         return True;
00981 }

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

parse_lsa.c988 行で定義されています。

参照先 lsa_info_ctr::id1lsa_info_ctr::id10lsa_info_ctr::id11lsa_info_ctr::id2lsa_info_ctr::id3lsa_info_ctr::id5lsa_info_ctr::id6lsa_info_ctr::infolsa_info_ctr::info_classlsa_io_dom_query_1()lsa_io_dom_query_10()lsa_io_dom_query_11()lsa_io_dom_query_2()lsa_io_dom_query_3()lsa_io_dom_query_5()lsa_io_dom_query_6()prs_debug().

参照元 lsa_io_q_set()lsa_io_r_query().

00989 {
00990         prs_debug(ps, depth, desc, "lsa_io_query_info_ctr");
00991         depth++;
00992 
00993         if(!prs_uint16("info_class", ps, depth, &ctr->info_class))
00994                 return False;
00995 
00996         if(!prs_align(ps))
00997                 return False;
00998 
00999         switch (ctr->info_class) {
01000         case 1:
01001                 if(!lsa_io_dom_query_1("", &ctr->info.id1, ps, depth))
01002                         return False;
01003                 break;
01004         case 2:
01005                 if(!lsa_io_dom_query_2("", &ctr->info.id2, ps, depth))
01006                         return False;
01007                 break;
01008         case 3:
01009                 if(!lsa_io_dom_query_3("", &ctr->info.id3, ps, depth))
01010                         return False;
01011                 break;
01012         case 5:
01013                 if(!lsa_io_dom_query_5("", &ctr->info.id5, ps, depth))
01014                         return False;
01015                 break;
01016         case 6:
01017                 if(!lsa_io_dom_query_6("", &ctr->info.id6, ps, depth))
01018                         return False;
01019                 break;
01020         case 10:
01021                 if(!lsa_io_dom_query_10("", &ctr->info.id10, ps, depth))
01022                         return False;
01023                 break;
01024         case 11:
01025                 if(!lsa_io_dom_query_11("", &ctr->info.id11, ps, depth))
01026                         return False;
01027                 break;
01028         default:
01029                 DEBUG(0,("invalid info_class: %d\n", ctr->info_class));
01030                 return False;
01031                 break;
01032         }
01033 
01034         return True;
01035 }

BOOL lsa_io_r_query ( const char *  desc,
LSA_R_QUERY_INFO out,
prs_struct ps,
int  depth 
)

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

参照先 lsa_r_query_info::ctrlsa_r_query_info::dom_ptrlsa_io_query_info_ctr()prs_debug()lsa_r_query_info::status.

参照元 api_lsa_query_info()rpccli_lsa_query_info_policy()rpccli_lsa_query_info_policy_new().

01042 {
01043 
01044         prs_debug(ps, depth, desc, "lsa_io_r_query");
01045         depth++;
01046 
01047         if(!prs_align(ps))
01048                 return False;
01049 
01050         if(!prs_uint32("dom_ptr", ps, depth, &out->dom_ptr))
01051                 return False;
01052 
01053         if (out->dom_ptr) {
01054 
01055                 if(!lsa_io_query_info_ctr("", ps, depth, &out->ctr))
01056                         return False;
01057         }
01058 
01059         if(!prs_align(ps))
01060                 return False;
01061 
01062         if(!prs_ntstatus("status", ps, depth, &out->status))
01063                 return False;
01064 
01065         return True;
01066 }

BOOL lsa_io_q_set ( const char *  desc,
LSA_Q_SET_INFO in,
prs_struct ps,
int  depth 
)

parse_lsa.c1072 行で定義されています。

参照先 lsa_set_info::ctrlsa_set_info::info_classlsa_io_query_info_ctr()lsa_set_info::polprs_debug()smb_io_pol_hnd().

参照元 rpccli_lsa_set_info_policy().

01074 {
01075         prs_debug(ps, depth, desc, "lsa_io_q_set");
01076         depth++;
01077 
01078         if(!prs_align(ps))
01079                 return False;
01080 
01081         if(!smb_io_pol_hnd("", &in->pol, ps, depth))
01082                 return False;
01083 
01084         if(!prs_uint16("info_class", ps, depth, &in->info_class))
01085                 return False;
01086 
01087         if(!lsa_io_query_info_ctr("", ps, depth, &in->ctr))
01088                 return False;
01089 
01090         return True;
01091 }

BOOL lsa_io_r_set ( const char *  desc,
LSA_R_SET_INFO out,
prs_struct ps,
int  depth 
)

parse_lsa.c1097 行で定義されています。

参照先 prs_debug()lsa_r_set_info::status.

参照元 rpccli_lsa_set_info_policy().

01098 {
01099         prs_debug(ps, depth, desc, "lsa_io_r_set");
01100         depth++;
01101 
01102         if(!prs_align(ps))
01103                 return False;
01104 
01105         if(!prs_ntstatus("status", ps, depth, &out->status))
01106                 return False;
01107 
01108         return True;
01109 }

static void init_lsa_sid_enum ( TALLOC_CTX mem_ctx,
LSA_SID_ENUM sen,
int  num_entries,
const DOM_SID sids 
) [static]

parse_lsa.c1115 行で定義されています。

参照先 init_dom_sid2()lsa_sid_enum_info::num_entrieslsa_sid_enum_info::num_entries2lsa_sid_enum_info::ptr_sidlsa_sid_enum_info::ptr_sid_enumlsa_sid_enum_info::sid.

参照元 init_q_lookup_sids().

01117 {
01118         int i;
01119 
01120         DEBUG(5, ("init_lsa_sid_enum\n"));
01121 
01122         sen->num_entries  = num_entries;
01123         sen->ptr_sid_enum = (num_entries != 0);
01124         sen->num_entries2 = num_entries;
01125 
01126         /* Allocate memory for sids and sid pointers */
01127 
01128         if (num_entries) {
01129                 if ((sen->ptr_sid = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_entries )) == NULL) {
01130                         DEBUG(3, ("init_lsa_sid_enum(): out of memory for ptr_sid\n"));
01131                         return;
01132                 }
01133 
01134                 if ((sen->sid = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID2, num_entries)) == NULL) {
01135                         DEBUG(3, ("init_lsa_sid_enum(): out of memory for sids\n"));
01136                         return;
01137                 }
01138         }
01139 
01140         /* Copy across SIDs and SID pointers */
01141 
01142         for (i = 0; i < num_entries; i++) {
01143                 sen->ptr_sid[i] = 1;
01144                 init_dom_sid2(&sen->sid[i], &sids[i]);
01145         }
01146 }

static BOOL lsa_io_sid_enum ( const char *  desc,
LSA_SID_ENUM sen,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c1152 行で定義されています。

参照先 lsa_sid_enum_info::num_entrieslsa_sid_enum_info::num_entries2prs_debug()lsa_sid_enum_info::ptr_sidlsa_sid_enum_info::ptr_sid_enumlsa_sid_enum_info::sidsmb_io_dom_sid2().

参照元 lsa_io_q_lookup_sids()lsa_io_q_lookup_sids2()lsa_io_q_lookup_sids3()lsa_io_r_enum_accounts().

01154 {
01155         unsigned int i;
01156 
01157         prs_debug(ps, depth, desc, "lsa_io_sid_enum");
01158         depth++;
01159 
01160         if(!prs_align(ps))
01161                 return False;
01162         
01163         if(!prs_uint32("num_entries ", ps, depth, &sen->num_entries))
01164                 return False;
01165         if(!prs_uint32("ptr_sid_enum", ps, depth, &sen->ptr_sid_enum))
01166                 return False;
01167 
01168         /*
01169            if the ptr is NULL, leave here. checked from a real w2k trace.
01170            JFM, 11/23/2001
01171          */
01172         
01173         if (sen->ptr_sid_enum==0)
01174                 return True;
01175 
01176         if(!prs_uint32("num_entries2", ps, depth, &sen->num_entries2))
01177                 return False;
01178 
01179         /* Mallocate memory if we're unpacking from the wire */
01180 
01181         if (UNMARSHALLING(ps) && sen->num_entries) {
01182                 if ((sen->ptr_sid = PRS_ALLOC_MEM( ps, uint32, sen->num_entries)) == NULL) {
01183                         DEBUG(3, ("init_lsa_sid_enum(): out of memory for "
01184                                   "ptr_sid\n"));
01185                         return False;
01186                 }
01187 
01188                 if ((sen->sid = PRS_ALLOC_MEM( ps, DOM_SID2, sen->num_entries)) == NULL) {
01189                         DEBUG(3, ("init_lsa_sid_enum(): out of memory for "
01190                                   "sids\n"));
01191                         return False;
01192                 }
01193         }
01194 
01195         for (i = 0; i < sen->num_entries; i++) {        
01196                 fstring temp;
01197 
01198                 slprintf(temp, sizeof(temp) - 1, "ptr_sid[%d]", i);
01199                 if(!prs_uint32(temp, ps, depth, &sen->ptr_sid[i])) {
01200                         return False;
01201                 }
01202         }
01203 
01204         for (i = 0; i < sen->num_entries; i++) {
01205                 fstring temp;
01206 
01207                 slprintf(temp, sizeof(temp) - 1, "sid[%d]", i);
01208                 if(!smb_io_dom_sid2(temp, &sen->sid[i], ps, depth)) {
01209                         return False;
01210                 }
01211         }
01212 
01213         return True;
01214 }

void init_q_lookup_sids ( TALLOC_CTX mem_ctx,
LSA_Q_LOOKUP_SIDS q_l,
POLICY_HND hnd,
int  num_sids,
const DOM_SID sids,
uint16  level 
)

parse_lsa.c1220 行で定義されています。

参照先 init_lsa_sid_enum()lsa_q_lookup_sids::levellsa_q_lookup_sids::pollsa_q_lookup_sids::sids.

参照元 rpccli_lsa_lookup_sids().

01223 {
01224         DEBUG(5, ("init_q_lookup_sids\n"));
01225 
01226         ZERO_STRUCTP(q_l);
01227 
01228         memcpy(&q_l->pol, hnd, sizeof(q_l->pol));
01229         init_lsa_sid_enum(mem_ctx, &q_l->sids, num_sids, sids);
01230         
01231         q_l->level = level;
01232 }

BOOL lsa_io_q_lookup_sids ( const char *  desc,
LSA_Q_LOOKUP_SIDS q_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1238 行で定義されています。

参照先 lsa_q_lookup_sids::levellsa_io_sid_enum()lsa_io_trans_names()lsa_q_lookup_sids::mapped_countlsa_q_lookup_sids::nameslsa_q_lookup_sids::polprs_debug()lsa_q_lookup_sids::sidssmb_io_pol_hnd().

参照元 api_lsa_lookup_sids()rpccli_lsa_lookup_sids().

01240 {
01241         prs_debug(ps, depth, desc, "lsa_io_q_lookup_sids");
01242         depth++;
01243 
01244         if(!prs_align(ps))
01245                 return False;
01246         
01247         if(!smb_io_pol_hnd("pol_hnd", &q_s->pol, ps, depth)) /* policy handle */
01248                 return False;
01249         if(!lsa_io_sid_enum("sids   ", &q_s->sids, ps, depth)) /* sids to be looked up */
01250                 return False;
01251         if(!lsa_io_trans_names("names  ", &q_s->names, ps, depth)) /* translated names */
01252                 return False;
01253 
01254         if(!prs_uint16("level", ps, depth, &q_s->level)) /* lookup level */
01255                 return False;
01256         if(!prs_align(ps))
01257                 return False;
01258 
01259         if(!prs_uint32("mapped_count", ps, depth, &q_s->mapped_count))
01260                 return False;
01261 
01262         return True;
01263 }

BOOL lsa_io_q_lookup_sids2 ( const char *  desc,
LSA_Q_LOOKUP_SIDS2 q_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1269 行で定義されています。

参照先 lsa_q_lookup_sids2::levellsa_io_sid_enum()lsa_io_trans_names2()lsa_q_lookup_sids2::mapped_countlsa_q_lookup_sids2::nameslsa_q_lookup_sids2::polprs_debug()lsa_q_lookup_sids2::sidssmb_io_pol_hnd()lsa_q_lookup_sids2::unknown1lsa_q_lookup_sids2::unknown2.

参照元 api_lsa_lookup_sids2().

01271 {
01272         prs_debug(ps, depth, desc, "lsa_io_q_lookup_sids2");
01273         depth++;
01274 
01275         if(!prs_align(ps))
01276                 return False;
01277         
01278         if(!smb_io_pol_hnd("pol_hnd", &q_s->pol, ps, depth)) /* policy handle */
01279                 return False;
01280         if(!lsa_io_sid_enum("sids   ", &q_s->sids, ps, depth)) /* sids to be looked up */
01281                 return False;
01282         if(!lsa_io_trans_names2("names  ", &q_s->names, ps, depth)) /* translated names */
01283                 return False;
01284 
01285         if(!prs_uint16("level", ps, depth, &q_s->level)) /* lookup level */
01286                 return False;
01287         if(!prs_align(ps))
01288                 return False;
01289 
01290         if(!prs_uint32("mapped_count", ps, depth, &q_s->mapped_count))
01291                 return False;
01292         if(!prs_uint32("unknown1", ps, depth, &q_s->unknown1))
01293                 return False;
01294         if(!prs_uint32("unknown2", ps, depth, &q_s->unknown2))
01295                 return False;
01296 
01297         return True;
01298 }

BOOL lsa_io_q_lookup_sids3 ( const char *  desc,
LSA_Q_LOOKUP_SIDS3 q_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1304 行で定義されています。

参照先 lsa_q_lookup_sids3::levellsa_io_sid_enum()lsa_io_trans_names2()lsa_q_lookup_sids3::mapped_countlsa_q_lookup_sids3::namesprs_debug()lsa_q_lookup_sids3::sidslsa_q_lookup_sids3::unknown1lsa_q_lookup_sids3::unknown2.

参照元 api_lsa_lookup_sids3().

01306 {
01307         prs_debug(ps, depth, desc, "lsa_io_q_lookup_sids3");
01308         depth++;
01309 
01310         if(!prs_align(ps))
01311                 return False;
01312         
01313         if(!lsa_io_sid_enum("sids   ", &q_s->sids, ps, depth)) /* sids to be looked up */
01314                 return False;
01315         if(!lsa_io_trans_names2("names  ", &q_s->names, ps, depth)) /* translated names */
01316                 return False;
01317 
01318         if(!prs_uint16("level", ps, depth, &q_s->level)) /* lookup level */
01319                 return False;
01320         if(!prs_align(ps))
01321                 return False;
01322 
01323         if(!prs_uint32("mapped_count", ps, depth, &q_s->mapped_count))
01324                 return False;
01325         if(!prs_uint32("unknown1", ps, depth, &q_s->unknown1))
01326                 return False;
01327         if(!prs_uint32("unknown2", ps, depth, &q_s->unknown2))
01328                 return False;
01329 
01330         return True;
01331 }

BOOL lsa_io_r_lookup_sids ( const char *  desc,
LSA_R_LOOKUP_SIDS r_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1463 行で定義されています。

参照先 lsa_r_lookup_sids::dom_reflsa_io_dom_r_ref()lsa_io_trans_names()lsa_r_lookup_sids::mapped_countlsa_r_lookup_sids::namesprs_debug()lsa_r_lookup_sids::ptr_dom_reflsa_r_lookup_sids::status.

参照元 api_lsa_lookup_sids()rpccli_lsa_lookup_sids().

01465 {
01466         prs_debug(ps, depth, desc, "lsa_io_r_lookup_sids");
01467         depth++;
01468 
01469         if(!prs_align(ps))
01470                 return False;
01471         
01472         if(!prs_uint32("ptr_dom_ref", ps, depth, &r_s->ptr_dom_ref))
01473                 return False;
01474 
01475         if (r_s->ptr_dom_ref != 0)
01476                 if(!lsa_io_dom_r_ref ("dom_ref", r_s->dom_ref, ps, depth)) /* domain reference info */
01477                         return False;
01478 
01479         if(!lsa_io_trans_names("names  ", &r_s->names, ps, depth)) /* translated names */
01480                 return False;
01481 
01482         if(!prs_align(ps))
01483                 return False;
01484 
01485         if(!prs_uint32("mapped_count", ps, depth, &r_s->mapped_count))
01486                 return False;
01487 
01488         if(!prs_ntstatus("status      ", ps, depth, &r_s->status))
01489                 return False;
01490 
01491         return True;
01492 }

BOOL lsa_io_r_lookup_sids2 ( const char *  desc,
LSA_R_LOOKUP_SIDS2 r_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1498 行で定義されています。

参照先 lsa_r_lookup_sids2::dom_reflsa_io_dom_r_ref()lsa_io_trans_names2()lsa_r_lookup_sids2::mapped_countlsa_r_lookup_sids2::namesprs_debug()lsa_r_lookup_sids2::ptr_dom_reflsa_r_lookup_sids2::status.

参照元 api_lsa_lookup_sids2().

01500 {
01501         prs_debug(ps, depth, desc, "lsa_io_r_lookup_sids2");
01502         depth++;
01503 
01504         if(!prs_align(ps))
01505                 return False;
01506         
01507         if(!prs_uint32("ptr_dom_ref", ps, depth, &r_s->ptr_dom_ref))
01508                 return False;
01509 
01510         if (r_s->ptr_dom_ref != 0)
01511                 if(!lsa_io_dom_r_ref ("dom_ref", r_s->dom_ref, ps, depth)) /* domain reference info */
01512                         return False;
01513 
01514         if(!lsa_io_trans_names2("names  ", &r_s->names, ps, depth)) /* translated names */
01515                 return False;
01516 
01517         if(!prs_align(ps))
01518                 return False;
01519 
01520         if(!prs_uint32("mapped_count", ps, depth, &r_s->mapped_count))
01521                 return False;
01522 
01523         if(!prs_ntstatus("status      ", ps, depth, &r_s->status))
01524                 return False;
01525 
01526         return True;
01527 }

BOOL lsa_io_r_lookup_sids3 ( const char *  desc,
LSA_R_LOOKUP_SIDS3 r_s,
prs_struct ps,
int  depth 
)

parse_lsa.c1534 行で定義されています。

参照先 lsa_r_lookup_sids3::dom_reflsa_io_dom_r_ref()lsa_io_trans_names2()lsa_r_lookup_sids3::mapped_countlsa_r_lookup_sids3::namesprs_debug()lsa_r_lookup_sids3::ptr_dom_reflsa_r_lookup_sids3::status.

参照元 api_lsa_lookup_sids3().

01536 {
01537         prs_debug(ps, depth, desc, "lsa_io_r_lookup_sids3");
01538         depth++;
01539 
01540         if(!prs_align(ps))
01541                 return False;
01542         
01543         if(!prs_uint32("ptr_dom_ref", ps, depth, &r_s->ptr_dom_ref))
01544                 return False;
01545 
01546         if (r_s->ptr_dom_ref != 0)
01547                 if(!lsa_io_dom_r_ref ("dom_ref", r_s->dom_ref, ps, depth)) /* domain reference info */
01548                         return False;
01549 
01550         if(!lsa_io_trans_names2("names  ", &r_s->names, ps, depth)) /* translated names */
01551                 return False;
01552 
01553         if(!prs_align(ps))
01554                 return False;
01555 
01556         if(!prs_uint32("mapped_count", ps, depth, &r_s->mapped_count))
01557                 return False;
01558 
01559         if(!prs_ntstatus("status      ", ps, depth, &r_s->status))
01560                 return False;
01561 
01562         return True;
01563 }

void init_q_lookup_names ( TALLOC_CTX mem_ctx,
LSA_Q_LOOKUP_NAMES q_l,
POLICY_HND hnd,
int  num_names,
const char **  names 
)

parse_lsa.c1569 行で定義されています。

参照先 lsa_q_lookup_names::hdr_nameinit_uni_hdr()init_unistr2()lsa_q_lookup_names::lookup_levellsa_q_lookup_names::num_entrieslsa_q_lookup_names::num_entries2lsa_q_lookup_names::polUNI_FLAGS_NONElsa_q_lookup_names::uni_name.

参照元 rpccli_lsa_lookup_names().

01571 {
01572         unsigned int i;
01573 
01574         DEBUG(5, ("init_q_lookup_names\n"));
01575 
01576         ZERO_STRUCTP(q_l);
01577 
01578         q_l->pol = *hnd;
01579         q_l->num_entries = num_names;
01580         q_l->num_entries2 = num_names;
01581         q_l->lookup_level = 1;
01582 
01583         if (num_names) {
01584                 if ((q_l->uni_name = TALLOC_ZERO_ARRAY(mem_ctx, UNISTR2, num_names)) == NULL) {
01585                         DEBUG(3, ("init_q_lookup_names(): out of memory\n"));
01586                         return;
01587                 }
01588 
01589                 if ((q_l->hdr_name = TALLOC_ZERO_ARRAY(mem_ctx, UNIHDR, num_names)) == NULL) {
01590                         DEBUG(3, ("init_q_lookup_names(): out of memory\n"));
01591                         return;
01592                 }
01593         } else {
01594                 q_l->uni_name = NULL;
01595                 q_l->hdr_name = NULL;
01596         }
01597 
01598         for (i = 0; i < num_names; i++) {
01599                 init_unistr2(&q_l->uni_name[i], names[i], UNI_FLAGS_NONE);
01600                 init_uni_hdr(&q_l->hdr_name[i], &q_l->uni_name[i]);
01601         }
01602 }

BOOL lsa_io_q_lookup_names ( const char *  desc,
LSA_Q_LOOKUP_NAMES q_r,
prs_struct ps,
int  depth 
)

parse_lsa.c1608 行で定義されています。

参照先 UNIHDR::bufferlsa_q_lookup_names::hdr_namelsa_q_lookup_names::lookup_levellsa_q_lookup_names::mapped_countlsa_q_lookup_names::num_entrieslsa_q_lookup_names::num_entries2lsa_q_lookup_names::num_trans_entrieslsa_q_lookup_names::polprs_debug()lsa_q_lookup_names::ptr_trans_sidssmb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()lsa_q_lookup_names::uni_name.

参照元 api_lsa_lookup_names()rpccli_lsa_lookup_names().

01610 {
01611         unsigned int i;
01612 
01613         prs_debug(ps, depth, desc, "lsa_io_q_lookup_names");
01614         depth++;
01615 
01616         if(!prs_align(ps))
01617                 return False;
01618 
01619         if(!smb_io_pol_hnd("", &q_r->pol, ps, depth)) /* policy handle */
01620                 return False;
01621 
01622         if(!prs_align(ps))
01623                 return False;
01624         if(!prs_uint32("num_entries    ", ps, depth, &q_r->num_entries))
01625                 return False;
01626         if(!prs_uint32("num_entries2   ", ps, depth, &q_r->num_entries2))
01627                 return False;
01628 
01629         if (UNMARSHALLING(ps)) {
01630                 if (q_r->num_entries) {
01631                         if ((q_r->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_r->num_entries)) == NULL)
01632                                 return False;
01633                         if ((q_r->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_r->num_entries)) == NULL)
01634                                 return False;
01635                 }
01636         }
01637 
01638         for (i = 0; i < q_r->num_entries; i++) {
01639                 if(!prs_align(ps))
01640                         return False;
01641                 if(!smb_io_unihdr("hdr_name", &q_r->hdr_name[i], ps, depth)) /* pointer names */
01642                         return False;
01643         }
01644 
01645         for (i = 0; i < q_r->num_entries; i++) {
01646                 if(!prs_align(ps))
01647                         return False;
01648                 if(!smb_io_unistr2("dom_name", &q_r->uni_name[i], q_r->hdr_name[i].buffer, ps, depth)) /* names to be looked up */
01649                         return False;
01650         }
01651 
01652         if(!prs_align(ps))
01653                 return False;
01654         if(!prs_uint32("num_trans_entries ", ps, depth, &q_r->num_trans_entries))
01655                 return False;
01656         if(!prs_uint32("ptr_trans_sids ", ps, depth, &q_r->ptr_trans_sids))
01657                 return False;
01658         if(!prs_uint16("lookup_level   ", ps, depth, &q_r->lookup_level))
01659                 return False;
01660         if(!prs_align(ps))
01661                 return False;
01662         if(!prs_uint32("mapped_count   ", ps, depth, &q_r->mapped_count))
01663                 return False;
01664 
01665         return True;
01666 }

BOOL lsa_io_r_lookup_names ( const char *  desc,
LSA_R_LOOKUP_NAMES out,
prs_struct ps,
int  depth 
)

parse_lsa.c1672 行で定義されています。

参照先 lsa_r_lookup_names::dom_reflsa_r_lookup_names::dom_ridlsa_io_dom_r_ref()lsa_r_lookup_names::mapped_countlsa_r_lookup_names::num_entrieslsa_r_lookup_names::num_entries2prs_debug()lsa_r_lookup_names::ptr_dom_reflsa_r_lookup_names::ptr_entriessmb_io_dom_rid()lsa_r_lookup_names::status.

参照元 api_lsa_lookup_names()rpccli_lsa_lookup_names().

01673 {
01674         unsigned int i;
01675 
01676         prs_debug(ps, depth, desc, "lsa_io_r_lookup_names");
01677         depth++;
01678 
01679         if(!prs_align(ps))
01680                 return False;
01681 
01682         if(!prs_uint32("ptr_dom_ref", ps, depth, &out->ptr_dom_ref))
01683                 return False;
01684 
01685         if (out->ptr_dom_ref != 0)
01686                 if(!lsa_io_dom_r_ref("", out->dom_ref, ps, depth))
01687                         return False;
01688 
01689         if(!prs_uint32("num_entries", ps, depth, &out->num_entries))
01690                 return False;
01691         if(!prs_uint32("ptr_entries", ps, depth, &out->ptr_entries))
01692                 return False;
01693 
01694         if (out->ptr_entries != 0) {
01695                 if(!prs_uint32("num_entries2", ps, depth, &out->num_entries2))
01696                         return False;
01697 
01698                 if (out->num_entries2 != out->num_entries) {
01699                         /* RPC fault */
01700                         return False;
01701                 }
01702 
01703                 if (UNMARSHALLING(ps) && out->num_entries2) {
01704                         if ((out->dom_rid = PRS_ALLOC_MEM(ps, DOM_RID, out->num_entries2))
01705                             == NULL) {
01706                                 DEBUG(3, ("lsa_io_r_lookup_names(): out of memory\n"));
01707                                 return False;
01708                         }
01709                 }
01710 
01711                 for (i = 0; i < out->num_entries2; i++)
01712                         if(!smb_io_dom_rid("", &out->dom_rid[i], ps, depth)) /* domain RIDs being looked up */
01713                                 return False;
01714         }
01715 
01716         if(!prs_uint32("mapped_count", ps, depth, &out->mapped_count))
01717                 return False;
01718 
01719         if(!prs_ntstatus("status      ", ps, depth, &out->status))
01720                 return False;
01721 
01722         return True;
01723 }

BOOL lsa_io_q_lookup_names2 ( const char *  desc,
LSA_Q_LOOKUP_NAMES2 q_r,
prs_struct ps,
int  depth 
)

parse_lsa.c1729 行で定義されています。

参照先 UNIHDR::bufferlsa_q_lookup_names2::hdr_namelsa_q_lookup_names2::lookup_levellsa_q_lookup_names2::mapped_countlsa_q_lookup_names2::num_entrieslsa_q_lookup_names2::num_entries2lsa_q_lookup_names2::num_trans_entrieslsa_q_lookup_names2::polprs_debug()lsa_q_lookup_names2::ptr_trans_sidssmb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()lsa_q_lookup_names2::uni_namelsa_q_lookup_names2::unknown1lsa_q_lookup_names2::unknown2.

参照元 api_lsa_lookup_names2().

01731 {
01732         unsigned int i;
01733 
01734         prs_debug(ps, depth, desc, "lsa_io_q_lookup_names2");
01735         depth++;
01736 
01737         if(!prs_align(ps))
01738                 return False;
01739 
01740         if(!smb_io_pol_hnd("", &q_r->pol, ps, depth)) /* policy handle */
01741                 return False;
01742 
01743         if(!prs_align(ps))
01744                 return False;
01745         if(!prs_uint32("num_entries    ", ps, depth, &q_r->num_entries))
01746                 return False;
01747         if(!prs_uint32("num_entries2   ", ps, depth, &q_r->num_entries2))
01748                 return False;
01749 
01750         if (UNMARSHALLING(ps)) {
01751                 if (q_r->num_entries) {
01752                         if ((q_r->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_r->num_entries)) == NULL)
01753                                 return False;
01754                         if ((q_r->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_r->num_entries)) == NULL)
01755                                 return False;
01756                 }
01757         }
01758 
01759         for (i = 0; i < q_r->num_entries; i++) {
01760                 if(!prs_align(ps))
01761                         return False;
01762                 if(!smb_io_unihdr("hdr_name", &q_r->hdr_name[i], ps, depth)) /* pointer names */
01763                         return False;
01764         }
01765 
01766         for (i = 0; i < q_r->num_entries; i++) {
01767                 if(!prs_align(ps))
01768                         return False;
01769                 if(!smb_io_unistr2("dom_name", &q_r->uni_name[i], q_r->hdr_name[i].buffer, ps, depth)) /* names to be looked up */
01770                         return False;
01771         }
01772 
01773         if(!prs_align(ps))
01774                 return False;
01775         if(!prs_uint32("num_trans_entries ", ps, depth, &q_r->num_trans_entries))
01776                 return False;
01777         if(!prs_uint32("ptr_trans_sids ", ps, depth, &q_r->ptr_trans_sids))
01778                 return False;
01779         if(!prs_uint16("lookup_level   ", ps, depth, &q_r->lookup_level))
01780                 return False;
01781         if(!prs_align(ps))
01782                 return False;
01783         if(!prs_uint32("mapped_count   ", ps, depth, &q_r->mapped_count))
01784                 return False;
01785         if(!prs_uint32("unknown1   ", ps, depth, &q_r->unknown1))
01786                 return False;
01787         if(!prs_uint32("unknown2   ", ps, depth, &q_r->unknown2))
01788                 return False;
01789 
01790         return True;
01791 }

BOOL lsa_io_r_lookup_names2 ( const char *  desc,
LSA_R_LOOKUP_NAMES2 out,
prs_struct ps,
int  depth 
)

parse_lsa.c1797 行で定義されています。

参照先 lsa_r_lookup_names2::dom_reflsa_r_lookup_names2::dom_ridlsa_io_dom_r_ref()lsa_r_lookup_names2::mapped_countlsa_r_lookup_names2::num_entrieslsa_r_lookup_names2::num_entries2prs_debug()lsa_r_lookup_names2::ptr_dom_reflsa_r_lookup_names2::ptr_entriessmb_io_dom_rid2()lsa_r_lookup_names2::status.

参照元 api_lsa_lookup_names2().

01798 {
01799         unsigned int i;
01800 
01801         prs_debug(ps, depth, desc, "lsa_io_r_lookup_names2");
01802         depth++;
01803 
01804         if(!prs_align(ps))
01805                 return False;
01806 
01807         if(!prs_uint32("ptr_dom_ref", ps, depth, &out->ptr_dom_ref))
01808                 return False;
01809 
01810         if (out->ptr_dom_ref != 0)
01811                 if(!lsa_io_dom_r_ref("", out->dom_ref, ps, depth))
01812                         return False;
01813 
01814         if(!prs_uint32("num_entries", ps, depth, &out->num_entries))
01815                 return False;
01816         if(!prs_uint32("ptr_entries", ps, depth, &out->ptr_entries))
01817                 return False;
01818 
01819         if (out->ptr_entries != 0) {
01820                 if(!prs_uint32("num_entries2", ps, depth, &out->num_entries2))
01821                         return False;
01822 
01823                 if (out->num_entries2 != out->num_entries) {
01824                         /* RPC fault */
01825                         return False;
01826                 }
01827 
01828                 if (UNMARSHALLING(ps) && out->num_entries2) {
01829                         if ((out->dom_rid = PRS_ALLOC_MEM(ps, DOM_RID2, out->num_entries2))
01830                             == NULL) {
01831                                 DEBUG(3, ("lsa_io_r_lookup_names2(): out of memory\n"));
01832                                 return False;
01833                         }
01834                 }
01835 
01836                 for (i = 0; i < out->num_entries2; i++)
01837                         if(!smb_io_dom_rid2("", &out->dom_rid[i], ps, depth)) /* domain RIDs being looked up */
01838                                 return False;
01839         }
01840 
01841         if(!prs_uint32("mapped_count", ps, depth, &out->mapped_count))
01842                 return False;
01843 
01844         if(!prs_ntstatus("status      ", ps, depth, &out->status))
01845                 return False;
01846 
01847         return True;
01848 }

BOOL smb_io_lsa_translated_sids3 ( const char *  desc,
LSA_TRANSLATED_SID3 q_r,
prs_struct ps,
int  depth 
)

parse_lsa.c1855 行で定義されています。

参照先 prs_debug()lsa_translatedsid3::sid2lsa_translatedsid3::sid_idxlsa_translatedsid3::sid_typesmb_io_dom_sid2_p()lsa_translatedsid3::unknown.

参照元 lsa_io_r_lookup_names3()lsa_io_r_lookup_names4().

01857 {
01858         prs_debug(ps, depth, desc, "smb_io_lsa_translated_sids3");
01859         depth++;
01860 
01861         if(!prs_align(ps))
01862                 return False;
01863         if(!prs_uint8 ("sid_type ", ps, depth, &q_r->sid_type ))
01864                 return False;
01865         if(!prs_align(ps))
01866                 return False;
01867         /* Second pass will read/write these. */
01868         if (!smb_io_dom_sid2_p("sid_header", ps, depth, &q_r->sid2))
01869                 return False;
01870         if(!prs_uint32("sid_idx ", ps, depth, &q_r->sid_idx ))
01871                 return False;
01872         if(!prs_uint32("unknown ", ps, depth, &q_r->unknown ))
01873                 return False;
01874         
01875         return True;
01876 }

BOOL lsa_io_q_lookup_names3 ( const char *  desc,
LSA_Q_LOOKUP_NAMES3 q_r,
prs_struct ps,
int  depth 
)

parse_lsa.c1882 行で定義されています。

参照先 UNIHDR::bufferlsa_q_lookup_names3::hdr_namelsa_q_lookup_names3::lookup_levellsa_q_lookup_names3::mapped_countlsa_q_lookup_names3::num_entrieslsa_q_lookup_names3::num_entries2lsa_q_lookup_names3::num_trans_entrieslsa_q_lookup_names3::polprs_debug()lsa_q_lookup_names3::ptr_trans_sidssmb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2()lsa_q_lookup_names3::uni_namelsa_q_lookup_names3::unknown1lsa_q_lookup_names3::unknown2.

参照元 api_lsa_lookup_names3().

01884 {
01885         unsigned int i;
01886 
01887         prs_debug(ps, depth, desc, "lsa_io_q_lookup_names3");
01888         depth++;
01889 
01890         if(!prs_align(ps))
01891                 return False;
01892 
01893         if(!smb_io_pol_hnd("", &q_r->pol, ps, depth)) /* policy handle */
01894                 return False;
01895 
01896         if(!prs_align(ps))
01897                 return False;
01898         if(!prs_uint32("num_entries    ", ps, depth, &q_r->num_entries))
01899                 return False;
01900         if(!prs_uint32("num_entries2   ", ps, depth, &q_r->num_entries2))
01901                 return False;
01902 
01903         if (UNMARSHALLING(ps)) {
01904                 if (q_r->num_entries) {
01905                         if ((q_r->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_r->num_entries)) == NULL)
01906                                 return False;
01907                         if ((q_r->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_r->num_entries)) == NULL)
01908                                 return False;
01909                 }
01910         }
01911 
01912         for (i = 0; i < q_r->num_entries; i++) {
01913                 if(!prs_align(ps))
01914                         return False;
01915                 if(!smb_io_unihdr("hdr_name", &q_r->hdr_name[i], ps, depth)) /* pointer names */
01916                         return False;
01917         }
01918 
01919         for (i = 0; i < q_r->num_entries; i++) {
01920                 if(!prs_align(ps))
01921                         return False;
01922                 if(!smb_io_unistr2("dom_name", &q_r->uni_name[i], q_r->hdr_name[i].buffer, ps, depth)) /* names to be looked up */
01923                         return False;
01924         }
01925 
01926         if(!prs_align(ps))
01927                 return False;
01928         if(!prs_uint32("num_trans_entries ", ps, depth, &q_r->num_trans_entries))
01929                 return False;
01930         if(!prs_uint32("ptr_trans_sids ", ps, depth, &q_r->ptr_trans_sids))
01931                 return False;
01932         if(!prs_uint16("lookup_level   ", ps, depth, &q_r->lookup_level))
01933                 return False;
01934         if(!prs_align(ps))
01935                 return False;
01936         if(!prs_uint32("mapped_count   ", ps, depth, &q_r->mapped_count))
01937                 return False;
01938         if(!prs_uint32("unknown1   ", ps, depth, &q_r->unknown1))
01939                 return False;
01940         if(!prs_uint32("unknown2   ", ps, depth, &q_r->unknown2))
01941                 return False;
01942 
01943         return True;
01944 }

BOOL lsa_io_r_lookup_names3 ( const char *  desc,
LSA_R_LOOKUP_NAMES3 out,
prs_struct ps,
int  depth 
)

parse_lsa.c1950 行で定義されています。

参照先 lsa_r_lookup_names3::dom_reflsa_io_dom_r_ref()lsa_r_lookup_names3::num_entrieslsa_r_lookup_names3::num_entries2prs_debug()lsa_r_lookup_names3::ptr_dom_reflsa_r_lookup_names3::ptr_entrieslsa_translatedsid3::sid2smb_io_dom_sid2()smb_io_lsa_translated_sids3()lsa_r_lookup_names3::trans_sids.

参照元 api_lsa_lookup_names3().

01951 {
01952         unsigned int i;
01953 
01954         prs_debug(ps, depth, desc, "lsa_io_r_lookup_names3");
01955         depth++;
01956 
01957         if(!prs_align(ps))
01958                 return False;
01959 
01960         if(!prs_uint32("ptr_dom_ref", ps, depth, &out->ptr_dom_ref))
01961                 return False;
01962 
01963         if (out->ptr_dom_ref != 0)
01964                 if(!lsa_io_dom_r_ref("", out->dom_ref, ps, depth))
01965                         return False;
01966 
01967         if(!prs_uint32("num_entries", ps, depth, &out->num_entries))
01968                 return False;
01969         if(!prs_uint32("ptr_entries", ps, depth, &out->ptr_entries))
01970                 return False;
01971 
01972         if (out->ptr_entries != 0) {
01973                 if(!prs_uint32("num_entries2", ps, depth, &out->num_entries2))
01974                         return False;
01975 
01976                 if (out->num_entries2 != out->num_entries) {
01977                         /* RPC fault */
01978                         return False;
01979                 }
01980 
01981                 if (UNMARSHALLING(ps) && out->num_entries2) {
01982                         if ((out->trans_sids = PRS_ALLOC_MEM(ps, LSA_TRANSLATED_SID3, out->num_entries2))
01983                             == NULL) {
01984                                 DEBUG(3, ("lsa_io_r_lookup_names3(): out of memory\n"));
01985                                 return False;
01986                         }
01987                 }
01988 
01989                 for (i = 0; i < out->num_entries2; i++) {
01990                         if(!smb_io_lsa_translated_sids3("", &out->trans_sids[i], ps, depth)) {
01991                                 return False;
01992                         }
01993                 }
01994                 /* Now process the DOM_SID2 entries. */
01995                 for (i = 0; i < out->num_entries2; i++) {
01996                         if (out->trans_sids[i].sid2) {
01997                                 if( !smb_io_dom_sid2("sid2", out->trans_sids[i].sid2, ps, depth) ) {
01998                                         return False;
01999                                 }
02000                         }
02001                 }
02002         }
02003 
02004         if(!prs_uint32("mapped_count", ps, depth, &out->mapped_count))
02005                 return False;
02006 
02007         if(!prs_ntstatus("status      ", ps, depth, &out->status))
02008                 return False;
02009 
02010         return True;
02011 }

BOOL lsa_io_q_lookup_names4 ( const char *  desc,
LSA_Q_LOOKUP_NAMES4 q_r,
prs_struct ps,
int  depth 
)

parse_lsa.c2016 行で定義されています。

参照先 UNIHDR::bufferlsa_q_lookup_names4::hdr_namelsa_q_lookup_names4::lookup_levellsa_q_lookup_names4::mapped_countlsa_q_lookup_names4::num_entrieslsa_q_lookup_names4::num_entries2lsa_q_lookup_names4::num_trans_entriesprs_debug()lsa_q_lookup_names4::ptr_trans_sidssmb_io_unihdr()smb_io_unistr2()lsa_q_lookup_names4::uni_namelsa_q_lookup_names4::unknown1lsa_q_lookup_names4::unknown2.

参照元 api_lsa_lookup_names4().

02018 {
02019         unsigned int i;
02020 
02021         prs_debug(ps, depth, desc, "lsa_io_q_lookup_names4");
02022         depth++;
02023 
02024         if(!prs_align(ps))
02025                 return False;
02026 
02027         if(!prs_uint32("num_entries    ", ps, depth, &q_r->num_entries))
02028                 return False;
02029         if(!prs_uint32("num_entries2   ", ps, depth, &q_r->num_entries2))
02030                 return False;
02031 
02032         if (UNMARSHALLING(ps)) {
02033                 if (q_r->num_entries) {
02034                         if ((q_r->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_r->num_entries)) == NULL)
02035                                 return False;
02036                         if ((q_r->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_r->num_entries)) == NULL)
02037                                 return False;
02038                 }
02039         }
02040 
02041         for (i = 0; i < q_r->num_entries; i++) {
02042                 if(!prs_align(ps))
02043                         return False;
02044                 if(!smb_io_unihdr("hdr_name", &q_r->hdr_name[i], ps, depth)) /* pointer names */
02045                         return False;
02046         }
02047 
02048         for (i = 0; i < q_r->num_entries; i++) {
02049                 if(!prs_align(ps))
02050                         return False;
02051                 if(!smb_io_unistr2("dom_name", &q_r->uni_name[i], q_r->hdr_name[i].buffer, ps, depth)) /* names to be looked up */
02052                         return False;
02053         }
02054 
02055         if(!prs_align(ps))
02056                 return False;
02057         if(!prs_uint32("num_trans_entries ", ps, depth, &q_r->num_trans_entries))
02058                 return False;
02059         if(!prs_uint32("ptr_trans_sids ", ps, depth, &q_r->ptr_trans_sids))
02060                 return False;
02061         if(!prs_uint16("lookup_level   ", ps, depth, &q_r->lookup_level))
02062                 return False;
02063         if(!prs_align(ps))
02064                 return False;
02065         if(!prs_uint32("mapped_count   ", ps, depth, &q_r->mapped_count))
02066                 return False;
02067         if(!prs_uint32("unknown1   ", ps, depth, &q_r->unknown1))
02068                 return False;
02069         if(!prs_uint32("unknown2   ", ps, depth, &q_r->unknown2))
02070                 return False;
02071 
02072         return True;
02073 }

BOOL lsa_io_r_lookup_names4 ( const char *  desc,
LSA_R_LOOKUP_NAMES4 out,
prs_struct ps,
int  depth 
)

parse_lsa.c2079 行で定義されています。

参照先 lsa_r_lookup_names4::dom_reflsa_io_dom_r_ref()lsa_r_lookup_names4::num_entrieslsa_r_lookup_names4::num_entries2prs_debug()lsa_r_lookup_names4::ptr_dom_reflsa_r_lookup_names4::ptr_entrieslsa_translatedsid3::sid2smb_io_dom_sid2()smb_io_lsa_translated_sids3()lsa_r_lookup_names4::trans_sids.

参照元 api_lsa_lookup_names4().

02080 {
02081         unsigned int i;
02082 
02083         prs_debug(ps, depth, desc, "lsa_io_r_lookup_names4");
02084         depth++;
02085 
02086         if(!prs_align(ps))
02087                 return False;
02088 
02089         if(!prs_uint32("ptr_dom_ref", ps, depth, &out->ptr_dom_ref))
02090                 return False;
02091 
02092         if (out->ptr_dom_ref != 0)
02093                 if(!lsa_io_dom_r_ref("", out->dom_ref, ps, depth))
02094                         return False;
02095 
02096         if(!prs_uint32("num_entries", ps, depth, &out->num_entries))
02097                 return False;
02098         if(!prs_uint32("ptr_entries", ps, depth, &out->ptr_entries))
02099                 return False;
02100 
02101         if (out->ptr_entries != 0) {
02102                 if(!prs_uint32("num_entries2", ps, depth, &out->num_entries2))
02103                         return False;
02104 
02105                 if (out->num_entries2 != out->num_entries) {
02106                         /* RPC fault */
02107                         return False;
02108                 }
02109 
02110                 if (UNMARSHALLING(ps) && out->num_entries2) {
02111                         if ((out->trans_sids = PRS_ALLOC_MEM(ps, LSA_TRANSLATED_SID3, out->num_entries2))
02112                             == NULL) {
02113                                 DEBUG(3, ("lsa_io_r_lookup_names4(): out of memory\n"));
02114                                 return False;
02115                         }
02116                 }
02117 
02118                 for (i = 0; i < out->num_entries2; i++) {
02119                         if(!smb_io_lsa_translated_sids3("", &out->trans_sids[i], ps, depth)) {
02120                                 return False;
02121                         }
02122                 }
02123                 /* Now process the DOM_SID2 entries. */
02124                 for (i = 0; i < out->num_entries2; i++) {
02125                         if (out->trans_sids[i].sid2) {
02126                                 if( !smb_io_dom_sid2("sid2", out->trans_sids[i].sid2, ps, depth) ) {
02127                                         return False;
02128                                 }
02129                         }
02130                 }
02131         }
02132 
02133         if(!prs_uint32("mapped_count", ps, depth, &out->mapped_count))
02134                 return False;
02135 
02136         if(!prs_ntstatus("status      ", ps, depth, &out->status))
02137                 return False;
02138 
02139         return True;
02140 }

void init_lsa_q_close ( LSA_Q_CLOSE in,
POLICY_HND hnd 
)

parse_lsa.c2146 行で定義されています。

参照先 lsa_q_close_info::pol.

参照元 rpccli_lsa_close().

02147 {
02148         DEBUG(5, ("init_lsa_q_close\n"));
02149 
02150         memcpy(&in->pol, hnd, sizeof(in->pol));
02151 }

BOOL lsa_io_q_close ( const char *  desc,
LSA_Q_CLOSE in,
prs_struct ps,
int  depth 
)

parse_lsa.c2157 行で定義されています。

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

参照元 api_lsa_close()rpccli_lsa_close().

02158 {
02159         prs_debug(ps, depth, desc, "lsa_io_q_close");
02160         depth++;
02161 
02162         if(!smb_io_pol_hnd("", &in->pol, ps, depth))
02163                 return False;
02164 
02165         return True;
02166 }

BOOL lsa_io_r_close ( const char *  desc,
LSA_R_CLOSE out,
prs_struct ps,
int  depth 
)

parse_lsa.c2172 行で定義されています。

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

参照元 api_lsa_close()rpccli_lsa_close().

02173 {
02174         prs_debug(ps, depth, desc, "lsa_io_r_close");
02175         depth++;
02176 
02177         if(!smb_io_pol_hnd("", &out->pol, ps, depth))
02178                 return False;
02179 
02180         if(!prs_ntstatus("status", ps, depth, &out->status))
02181                 return False;
02182 
02183         return True;
02184 }

BOOL lsa_io_q_open_secret ( const char *  desc,
LSA_Q_OPEN_SECRET in,
prs_struct ps,
int  depth 
)

parse_lsa.c2190 行で定義されています。

参照先 LSA_Q_OPEN_SECRET::accessLSA_Q_OPEN_SECRET::handleprs_debug()prs_unistr4()LSA_Q_OPEN_SECRET::secretnamesmb_io_pol_hnd().

参照元 api_lsa_open_secret().

02191 {
02192         prs_debug(ps, depth, desc, "lsa_io_q_open_secret");
02193         depth++;
02194 
02195         if(!prs_align(ps))
02196                 return False;
02197 
02198         if(!smb_io_pol_hnd("", &in->handle, ps, depth))
02199                 return False;
02200 
02201         if(!prs_unistr4 ("secretname", ps, depth, &in->secretname))
02202                 return False;
02203         if(!prs_align(ps))
02204                 return False;
02205 
02206         if(!prs_uint32("access", ps, depth, &in->access))
02207                 return False;
02208 
02209         return True;
02210 }

BOOL lsa_io_r_open_secret ( const char *  desc,
LSA_R_OPEN_SECRET out,
prs_struct ps,
int  depth 
)

parse_lsa.c2216 行で定義されています。

参照先 LSA_R_OPEN_SECRET::handleprs_debug()smb_io_pol_hnd()LSA_R_OPEN_SECRET::status.

参照元 api_lsa_open_secret().

02217 {
02218         prs_debug(ps, depth, desc, "lsa_io_r_open_secret");
02219         depth++;
02220 
02221         if(!prs_align(ps))
02222                 return False;
02223    
02224         if(!smb_io_pol_hnd("", &out->handle, ps, depth))
02225                 return False;
02226 
02227         if(!prs_ntstatus("status", ps, depth, &out->status))
02228                 return False;
02229 
02230         return True;
02231 }

void init_q_enum_privs ( LSA_Q_ENUM_PRIVS in,
POLICY_HND hnd,
uint32  enum_context,
uint32  pref_max_length 
)

parse_lsa.c2237 行で定義されています。

参照先 lsa_q_enum_privs::enum_contextlsa_q_enum_privs::pollsa_q_enum_privs::pref_max_length.

参照元 rpccli_lsa_enum_privilege().

02238 {
02239         DEBUG(5, ("init_q_enum_privs\n"));
02240 
02241         memcpy(&in->pol, hnd, sizeof(in->pol));
02242 
02243         in->enum_context = enum_context;
02244         in->pref_max_length = pref_max_length;
02245 }

BOOL lsa_io_q_enum_privs ( const char *  desc,
LSA_Q_ENUM_PRIVS in,
prs_struct ps,
int  depth 
)

parse_lsa.c2250 行で定義されています。

参照先 lsa_q_enum_privs::enum_contextlsa_q_enum_privs::pollsa_q_enum_privs::pref_max_lengthprs_debug()smb_io_pol_hnd().

参照元 api_lsa_enum_privs()rpccli_lsa_enum_privilege().

02251 {
02252         if (in == NULL)
02253                 return False;
02254 
02255         prs_debug(ps, depth, desc, "lsa_io_q_enum_privs");
02256         depth++;
02257 
02258         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
02259                 return False;
02260 
02261         if(!prs_uint32("enum_context   ", ps, depth, &in->enum_context))
02262                 return False;
02263         if(!prs_uint32("pref_max_length", ps, depth, &in->pref_max_length))
02264                 return False;
02265 
02266         return True;
02267 }

static BOOL lsa_io_priv_entries ( const char *  desc,
LSA_PRIV_ENTRY entries,
uint32  count,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c2272 行で定義されています。

参照先 nameprs_debug()smb_io_unihdr()smb_io_unistr2().

参照元 lsa_io_r_enum_privs().

02273 {
02274         uint32 i;
02275 
02276         if (entries == NULL)
02277                 return False;
02278 
02279         prs_debug(ps, depth, desc, "lsa_io_priv_entries");
02280         depth++;
02281 
02282         if(!prs_align(ps))
02283                 return False;
02284 
02285         for (i = 0; i < count; i++) {
02286                 if (!smb_io_unihdr("", &entries[i].hdr_name, ps, depth))
02287                         return False;
02288                 if(!prs_uint32("luid_low ", ps, depth, &entries[i].luid_low))
02289                         return False;
02290                 if(!prs_uint32("luid_high", ps, depth, &entries[i].luid_high))
02291                         return False;
02292         }
02293 
02294         for (i = 0; i < count; i++)
02295                 if (!smb_io_unistr2("", &entries[i].name, entries[i].hdr_name.buffer, ps, depth))
02296                         return False;
02297 
02298         return True;
02299 }

void init_lsa_r_enum_privs ( LSA_R_ENUM_PRIVS out,
uint32  enum_context,
uint32  count,
LSA_PRIV_ENTRY entries 
)

parse_lsa.c2305 行で定義されています。

参照先 lsa_r_enum_privs::countlsa_r_enum_privs::count1lsa_r_enum_privs::enum_contextlsa_r_enum_privs::privslsa_r_enum_privs::ptr.

参照元 _lsa_enum_privs().

02307 {
02308         DEBUG(5, ("init_lsa_r_enum_privs\n"));
02309 
02310         out->enum_context=enum_context;
02311         out->count=count;
02312         
02313         if (entries!=NULL) {
02314                 out->ptr=1;
02315                 out->count1=count;
02316                 out->privs=entries;
02317         } else {
02318                 out->ptr=0;
02319                 out->count1=0;
02320                 out->privs=NULL;
02321         }               
02322 }

BOOL lsa_io_r_enum_privs ( const char *  desc,
LSA_R_ENUM_PRIVS out,
prs_struct ps,
int  depth 
)

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

参照先 lsa_r_enum_privs::countlsa_r_enum_privs::count1lsa_r_enum_privs::enum_contextlsa_io_priv_entries()lsa_r_enum_privs::privsprs_debug()lsa_r_enum_privs::ptrlsa_r_enum_privs::status.

参照元 api_lsa_enum_privs()rpccli_lsa_enum_privilege().

02328 {
02329         if (out == NULL)
02330                 return False;
02331 
02332         prs_debug(ps, depth, desc, "lsa_io_r_enum_privs");
02333         depth++;
02334 
02335         if(!prs_align(ps))
02336                 return False;
02337 
02338         if(!prs_uint32("enum_context", ps, depth, &out->enum_context))
02339                 return False;
02340         if(!prs_uint32("count", ps, depth, &out->count))
02341                 return False;
02342         if(!prs_uint32("ptr", ps, depth, &out->ptr))
02343                 return False;
02344 
02345         if (out->ptr) {
02346                 if(!prs_uint32("count1", ps, depth, &out->count1))
02347                         return False;
02348 
02349                 if (UNMARSHALLING(ps) && out->count1)
02350                         if (!(out->privs = PRS_ALLOC_MEM(ps, LSA_PRIV_ENTRY, out->count1)))
02351                                 return False;
02352 
02353                 if (!lsa_io_priv_entries("", out->privs, out->count1, ps, depth))
02354                         return False;
02355         }
02356 
02357         if(!prs_align(ps))
02358                 return False;
02359 
02360         if(!prs_ntstatus("status", ps, depth, &out->status))
02361                 return False;
02362 
02363         return True;
02364 }

void init_lsa_priv_get_dispname ( LSA_Q_PRIV_GET_DISPNAME trn,
POLICY_HND hnd,
const char *  name,
uint16  lang_id,
uint16  lang_id_sys 
)

parse_lsa.c2366 行で定義されています。

参照先 lsa_q_priv_get_dispname::hdr_nameinit_uni_hdr()init_unistr2()lsa_q_priv_get_dispname::lang_idlsa_q_priv_get_dispname::lang_id_syslsa_q_priv_get_dispname::namelsa_q_priv_get_dispname::polUNI_FLAGS_NONE.

参照元 rpccli_lsa_get_dispname().

02367 {
02368         memcpy(&trn->pol, hnd, sizeof(trn->pol));
02369 
02370         init_unistr2(&trn->name, name, UNI_FLAGS_NONE);
02371         init_uni_hdr(&trn->hdr_name, &trn->name);
02372         trn->lang_id = lang_id;
02373         trn->lang_id_sys = lang_id_sys;
02374 }

BOOL lsa_io_q_priv_get_dispname ( const char *  desc,
LSA_Q_PRIV_GET_DISPNAME in,
prs_struct ps,
int  depth 
)

parse_lsa.c2379 行で定義されています。

参照先 UNIHDR::bufferlsa_q_priv_get_dispname::hdr_namelsa_q_priv_get_dispname::lang_idlsa_q_priv_get_dispname::lang_id_syslsa_q_priv_get_dispname::namelsa_q_priv_get_dispname::polprs_debug()smb_io_pol_hnd()smb_io_unihdr()smb_io_unistr2().

参照元 api_lsa_priv_get_dispname()rpccli_lsa_get_dispname().

02380 {
02381         if (in == NULL)
02382                 return False;
02383 
02384         prs_debug(ps, depth, desc, "lsa_io_q_priv_get_dispname");
02385         depth++;
02386 
02387         if(!prs_align(ps))
02388                 return False;
02389 
02390         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
02391                 return False;
02392 
02393         if (!smb_io_unihdr("hdr_name", &in->hdr_name, ps, depth))
02394                 return False;
02395 
02396         if (!smb_io_unistr2("name", &in->name, in->hdr_name.buffer, ps, depth))
02397                 return False;
02398 
02399         if(!prs_uint16("lang_id    ", ps, depth, &in->lang_id))
02400                 return False;
02401         if(!prs_uint16("lang_id_sys", ps, depth, &in->lang_id_sys))
02402                 return False;
02403 
02404         return True;
02405 }

BOOL lsa_io_r_priv_get_dispname ( const char *  desc,
LSA_R_PRIV_GET_DISPNAME out,
prs_struct ps,
int  depth 
)

parse_lsa.c2410 行で定義されています。

参照先 UNIHDR::bufferlsa_r_priv_get_dispname::desclsa_r_priv_get_dispname::hdr_desclsa_r_priv_get_dispname::lang_idprs_debug()lsa_r_priv_get_dispname::ptr_infosmb_io_unihdr()smb_io_unistr2()lsa_r_priv_get_dispname::status.

参照元 api_lsa_priv_get_dispname()rpccli_lsa_get_dispname().

02411 {
02412         if (out == NULL)
02413                 return False;
02414 
02415         prs_debug(ps, depth, desc, "lsa_io_r_priv_get_dispname");
02416         depth++;
02417 
02418         if (!prs_align(ps))
02419                 return False;
02420 
02421         if (!prs_uint32("ptr_info", ps, depth, &out->ptr_info))
02422                 return False;
02423 
02424         if (out->ptr_info){
02425                 if (!smb_io_unihdr("hdr_name", &out->hdr_desc, ps, depth))
02426                         return False;
02427 
02428                 if (!smb_io_unistr2("desc", &out->desc, out->hdr_desc.buffer, ps, depth))
02429                         return False;
02430         }
02431 /*
02432         if(!prs_align(ps))
02433                 return False;
02434 */
02435         if(!prs_uint16("lang_id", ps, depth, &out->lang_id))
02436                 return False;
02437 
02438         if(!prs_align(ps))
02439                 return False;
02440         if(!prs_ntstatus("status", ps, depth, &out->status))
02441                 return False;
02442 
02443         return True;
02444 }

void init_lsa_q_enum_accounts ( LSA_Q_ENUM_ACCOUNTS trn,
POLICY_HND hnd,
uint32  enum_context,
uint32  pref_max_length 
)

parse_lsa.c2449 行で定義されています。

参照先 lsa_q_enum_accounts::enum_contextlsa_q_enum_accounts::pollsa_q_enum_accounts::pref_max_length.

参照元 rpccli_lsa_enum_sids().

02450 {
02451         memcpy(&trn->pol, hnd, sizeof(trn->pol));
02452 
02453         trn->enum_context = enum_context;
02454         trn->pref_max_length = pref_max_length;
02455 }

BOOL lsa_io_q_enum_accounts ( const char *  desc,
LSA_Q_ENUM_ACCOUNTS in,
prs_struct ps,
int  depth 
)

parse_lsa.c2460 行で定義されています。

参照先 lsa_q_enum_accounts::enum_contextlsa_q_enum_accounts::pollsa_q_enum_accounts::pref_max_lengthprs_debug()smb_io_pol_hnd().

参照元 api_lsa_enum_accounts()rpccli_lsa_enum_sids().

02461 {
02462         if (in == NULL)
02463                 return False;
02464 
02465         prs_debug(ps, depth, desc, "lsa_io_q_enum_accounts");
02466         depth++;
02467 
02468         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
02469                 return False;
02470 
02471         if(!prs_uint32("enum_context   ", ps, depth, &in->enum_context))
02472                 return False;
02473         if(!prs_uint32("pref_max_length", ps, depth, &in->pref_max_length))
02474                 return False;
02475 
02476         return True;
02477 }

void init_lsa_r_enum_accounts ( LSA_R_ENUM_ACCOUNTS out,
uint32  enum_context 
)

parse_lsa.c2484 行で定義されています。

参照先 lsa_r_enum_accounts::enum_contextlsa_sid_enum_info::num_entrieslsa_sid_enum_info::num_entries2lsa_sid_enum_info::ptr_sid_enumlsa_r_enum_accounts::sids.

参照元 _lsa_enum_accounts().

02485 {
02486         DEBUG(5, ("init_lsa_r_enum_accounts\n"));
02487 
02488         out->enum_context=enum_context;
02489         if (out->enum_context!=0) {
02490                 out->sids.num_entries=enum_context;
02491                 out->sids.ptr_sid_enum=1;
02492                 out->sids.num_entries2=enum_context;
02493         } else {
02494                 out->sids.num_entries=0;
02495                 out->sids.ptr_sid_enum=0;
02496                 out->sids.num_entries2=0;
02497         }
02498 }

BOOL lsa_io_r_enum_accounts ( const char *  desc,
LSA_R_ENUM_ACCOUNTS out,
prs_struct ps,
int  depth 
)

parse_lsa.c2503 行で定義されています。

参照先 lsa_r_enum_accounts::enum_contextlsa_io_sid_enum()prs_debug()lsa_r_enum_accounts::sidslsa_r_enum_accounts::status.

参照元 api_lsa_enum_accounts()rpccli_lsa_enum_sids().

02504 {
02505         if (out == NULL)
02506                 return False;
02507 
02508         prs_debug(ps, depth, desc, "lsa_io_r_enum_accounts");
02509         depth++;
02510 
02511         if (!prs_align(ps))
02512                 return False;
02513 
02514         if(!prs_uint32("enum_context", ps, depth, &out->enum_context))
02515                 return False;
02516 
02517         if (!lsa_io_sid_enum("sids", &out->sids, ps, depth))
02518                 return False;
02519 
02520         if (!prs_align(ps))
02521                 return False;
02522 
02523         if(!prs_ntstatus("status", ps, depth, &out->status))
02524                 return False;
02525 
02526         return True;
02527 }

BOOL lsa_io_q_unk_get_connuser ( const char *  desc,
LSA_Q_UNK_GET_CONNUSER in,
prs_struct ps,
int  depth 
)

parse_lsa.c2534 行で定義されています。

参照先 prs_debug()lsa_q_unk_get_connuser::ptr_srvnamesmb_io_unistr2()lsa_q_unk_get_connuser::uni2_srvnamelsa_q_unk_get_connuser::unk1lsa_q_unk_get_connuser::unk2lsa_q_unk_get_connuser::unk3.

参照元 api_lsa_unk_get_connuser().

02535 {
02536         prs_debug(ps, depth, desc, "lsa_io_q_unk_get_connuser");
02537         depth++;
02538 
02539         if(!prs_align(ps))
02540                 return False;
02541    
02542         if(!prs_uint32("ptr_srvname", ps, depth, &in->ptr_srvname))
02543                 return False;
02544 
02545         if(!smb_io_unistr2("uni2_srvname", &in->uni2_srvname, in->ptr_srvname, ps, depth)) /* server name to be looked up */
02546                 return False;
02547 
02548         if (!prs_align(ps))
02549           return False;
02550 
02551         if(!prs_uint32("unk1", ps, depth, &in->unk1))
02552                 return False;
02553         if(!prs_uint32("unk2", ps, depth, &in->unk2))
02554                 return False;
02555         if(!prs_uint32("unk3", ps, depth, &in->unk3))
02556                 return False;
02557 
02558         /* Don't bother to read or write at present... */
02559         return True;
02560 }

BOOL lsa_io_r_unk_get_connuser ( const char *  desc,
LSA_R_UNK_GET_CONNUSER out,
prs_struct ps,
int  depth 
)

parse_lsa.c2566 行で定義されています。

参照先 lsa_r_unk_get_connuser::hdr_dom_namelsa_r_unk_get_connuser::hdr_user_nameprs_debug()lsa_r_unk_get_connuser::ptr_dom_namelsa_r_unk_get_connuser::ptr_user_namesmb_io_unihdr()smb_io_unistr2()lsa_r_unk_get_connuser::statuslsa_r_unk_get_connuser::uni2_dom_namelsa_r_unk_get_connuser::uni2_user_namelsa_r_unk_get_connuser::unk1.

参照元 api_lsa_unk_get_connuser().

02567 {
02568         prs_debug(ps, depth, desc, "lsa_io_r_unk_get_connuser");
02569         depth++;
02570 
02571         if(!prs_align(ps))
02572                 return False;
02573    
02574         if(!prs_uint32("ptr_user_name", ps, depth, &out->ptr_user_name))
02575                 return False;
02576         if(!smb_io_unihdr("hdr_user_name", &out->hdr_user_name, ps, depth))
02577                 return False;
02578         if(!smb_io_unistr2("uni2_user_name", &out->uni2_user_name, out->ptr_user_name, ps, depth))
02579                 return False;
02580 
02581         if (!prs_align(ps))
02582           return False;
02583         
02584         if(!prs_uint32("unk1", ps, depth, &out->unk1))
02585                 return False;
02586 
02587         if(!prs_uint32("ptr_dom_name", ps, depth, &out->ptr_dom_name))
02588                 return False;
02589         if(!smb_io_unihdr("hdr_dom_name", &out->hdr_dom_name, ps, depth))
02590                 return False;
02591         if(!smb_io_unistr2("uni2_dom_name", &out->uni2_dom_name, out->ptr_dom_name, ps, depth))
02592                 return False;
02593 
02594         if (!prs_align(ps))
02595           return False;
02596         
02597         if(!prs_ntstatus("status", ps, depth, &out->status))
02598                 return False;
02599 
02600         return True;
02601 }

void init_lsa_q_create_account ( LSA_Q_CREATEACCOUNT trn,
POLICY_HND hnd,
DOM_SID sid,
uint32  desired_access 
)

parse_lsa.c2603 行で定義されています。

参照先 lsa_q_createaccount::accessinit_dom_sid2()lsa_q_createaccount::pollsa_q_createaccount::sid.

参照元 rpccli_lsa_create_account().

02604 {
02605         memcpy(&trn->pol, hnd, sizeof(trn->pol));
02606 
02607         init_dom_sid2(&trn->sid, sid);
02608         trn->access = desired_access;
02609 }

BOOL lsa_io_q_create_account ( const char *  desc,
LSA_Q_CREATEACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2616 行で定義されています。

参照先 lsa_q_createaccount::accesslsa_q_createaccount::polprs_debug()lsa_q_createaccount::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_lsa_create_account()rpccli_lsa_create_account().

02617 {
02618         prs_debug(ps, depth, desc, "lsa_io_q_create_account");
02619         depth++;
02620 
02621         if(!prs_align(ps))
02622                 return False;
02623  
02624         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02625                 return False;
02626 
02627         if(!smb_io_dom_sid2("sid", &out->sid, ps, depth)) /* domain SID */
02628                 return False;
02629 
02630         if(!prs_uint32("access", ps, depth, &out->access))
02631                 return False;
02632   
02633         return True;
02634 }

BOOL lsa_io_r_create_account ( const char *  desc,
LSA_R_CREATEACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2640 行で定義されています。

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

参照元 api_lsa_create_account()rpccli_lsa_create_account().

02641 {
02642         prs_debug(ps, depth, desc, "lsa_io_r_open_account");
02643         depth++;
02644 
02645         if(!prs_align(ps))
02646                 return False;
02647  
02648         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02649                 return False;
02650 
02651         if(!prs_ntstatus("status", ps, depth, &out->status))
02652                 return False;
02653 
02654         return True;
02655 }

void init_lsa_q_open_account ( LSA_Q_OPENACCOUNT trn,
POLICY_HND hnd,
DOM_SID sid,
uint32  desired_access 
)

parse_lsa.c2658 行で定義されています。

参照先 lsa_q_openaccount::accessinit_dom_sid2()lsa_q_openaccount::pollsa_q_openaccount::sid.

参照元 rpccli_lsa_open_account().

02659 {
02660         memcpy(&trn->pol, hnd, sizeof(trn->pol));
02661 
02662         init_dom_sid2(&trn->sid, sid);
02663         trn->access = desired_access;
02664 }

BOOL lsa_io_q_open_account ( const char *  desc,
LSA_Q_OPENACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2670 行で定義されています。

参照先 lsa_q_openaccount::accesslsa_q_openaccount::polprs_debug()lsa_q_openaccount::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_lsa_open_account()rpccli_lsa_open_account().

02671 {
02672         prs_debug(ps, depth, desc, "lsa_io_q_open_account");
02673         depth++;
02674 
02675         if(!prs_align(ps))
02676                 return False;
02677  
02678         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02679                 return False;
02680 
02681         if(!smb_io_dom_sid2("sid", &out->sid, ps, depth)) /* domain SID */
02682                 return False;
02683 
02684         if(!prs_uint32("access", ps, depth, &out->access))
02685                 return False;
02686   
02687         return True;
02688 }

BOOL lsa_io_r_open_account ( const char *  desc,
LSA_R_OPENACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2694 行で定義されています。

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

参照元 api_lsa_open_account()rpccli_lsa_open_account().

02695 {
02696         prs_debug(ps, depth, desc, "lsa_io_r_open_account");
02697         depth++;
02698 
02699         if(!prs_align(ps))
02700                 return False;
02701  
02702         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02703                 return False;
02704 
02705         if(!prs_ntstatus("status", ps, depth, &out->status))
02706                 return False;
02707 
02708         return True;
02709 }

void init_lsa_q_enum_privsaccount ( LSA_Q_ENUMPRIVSACCOUNT trn,
POLICY_HND hnd 
)

parse_lsa.c2712 行で定義されています。

参照先 lsa_q_enumprivsaccount::pol.

参照元 rpccli_lsa_enum_privsaccount().

02713 {
02714         memcpy(&trn->pol, hnd, sizeof(trn->pol));
02715 
02716 }

BOOL lsa_io_q_enum_privsaccount ( const char *  desc,
LSA_Q_ENUMPRIVSACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2722 行で定義されています。

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

参照元 api_lsa_enum_privsaccount()rpccli_lsa_enum_privsaccount().

02723 {
02724         prs_debug(ps, depth, desc, "lsa_io_q_enum_privsaccount");
02725         depth++;
02726 
02727         if(!prs_align(ps))
02728                 return False;
02729  
02730         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02731                 return False;
02732 
02733         return True;
02734 }

static BOOL lsa_io_luid ( const char *  desc,
LUID out,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c2740 行で定義されています。

参照先 LUID::highLUID::lowprs_debug().

参照元 lsa_io_luid_attr()lsa_io_r_lookup_priv_value().

02741 {
02742         prs_debug(ps, depth, desc, "lsa_io_luid");
02743         depth++;
02744 
02745         if(!prs_align(ps))
02746                 return False;
02747  
02748         if(!prs_uint32("low", ps, depth, &out->low))
02749                 return False;
02750 
02751         if(!prs_uint32("high", ps, depth, &out->high))
02752                 return False;
02753 
02754         return True;
02755 }

static BOOL lsa_io_luid_attr ( const char *  desc,
LUID_ATTR out,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c2761 行で定義されています。

参照先 LUID_ATTR::attrlsa_io_luid()LUID_ATTR::luidprs_debug().

参照元 lsa_io_privilege_set().

02762 {
02763         prs_debug(ps, depth, desc, "lsa_io_luid_attr");
02764         depth++;
02765 
02766         if(!prs_align(ps))
02767                 return False;
02768  
02769         if (!lsa_io_luid(desc, &out->luid, ps, depth))
02770                 return False;
02771 
02772         if(!prs_uint32("attr", ps, depth, &out->attr))
02773                 return False;
02774 
02775         return True;
02776 }

static BOOL lsa_io_privilege_set ( const char *  desc,
PRIVILEGE_SET out,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c2782 行で定義されています。

参照先 PRIVILEGE_SET::controlPRIVILEGE_SET::countlsa_io_luid_attr()prs_debug()PRIVILEGE_SET::set.

参照元 lsa_io_q_addprivs()lsa_io_q_removeprivs()lsa_io_r_enum_privsaccount().

02783 {
02784         uint32 i, dummy;
02785 
02786         prs_debug(ps, depth, desc, "lsa_io_privilege_set");
02787         depth++;
02788 
02789         if(!prs_align(ps))
02790                 return False;
02791  
02792         if(!prs_uint32("count", ps, depth, &dummy))
02793                 return False;
02794         if(!prs_uint32("control", ps, depth, &out->control))
02795                 return False;
02796 
02797         for (i=0; i<out->count; i++) {
02798                 if (!lsa_io_luid_attr(desc, &out->set[i], ps, depth))
02799                         return False;
02800         }
02801         
02802         return True;
02803 }

NTSTATUS init_lsa_r_enum_privsaccount ( TALLOC_CTX mem_ctx,
LSA_R_ENUMPRIVSACCOUNT out,
LUID_ATTR set,
uint32  count,
uint32  control 
)

parse_lsa.c2805 行で定義されています。

参照先 PRIVILEGE_SET::countlsa_r_enumprivsaccount::countdup_luid_attr()PRIVILEGE_SET::mem_ctxprivilege_set_init_by_ctx()lsa_r_enumprivsaccount::ptrPRIVILEGE_SET::setlsa_r_enumprivsaccount::set.

参照元 _lsa_enum_privsaccount().

02806 {
02807         NTSTATUS ret = NT_STATUS_OK;
02808 
02809         out->ptr = 1;
02810         out->count = count;
02811 
02812         if ( !NT_STATUS_IS_OK(ret = privilege_set_init_by_ctx(mem_ctx, &(out->set))) )
02813                 return ret;
02814         
02815         out->set.count = count;
02816         
02817         if (!NT_STATUS_IS_OK(ret = dup_luid_attr(out->set.mem_ctx, &(out->set.set), set, count)))
02818                 return ret;
02819 
02820         DEBUG(10,("init_lsa_r_enum_privsaccount: %d privileges\n", out->count));
02821 
02822         return ret;
02823 }

BOOL lsa_io_r_enum_privsaccount ( const char *  desc,
LSA_R_ENUMPRIVSACCOUNT out,
prs_struct ps,
int  depth 
)

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

参照先 lsa_r_enumprivsaccount::countlsa_io_privilege_set()_prs_struct::mem_ctxprivilege_set_init_by_ctx()prs_debug()lsa_r_enumprivsaccount::ptrPRIVILEGE_SET::setlsa_r_enumprivsaccount::setlsa_r_enumprivsaccount::status.

参照元 api_lsa_enum_privsaccount()rpccli_lsa_enum_privsaccount().

02830 {
02831         prs_debug(ps, depth, desc, "lsa_io_r_enum_privsaccount");
02832         depth++;
02833 
02834         if(!prs_align(ps))
02835                 return False;
02836  
02837         if(!prs_uint32("ptr", ps, depth, &out->ptr))
02838                 return False;
02839 
02840         if (out->ptr!=0) {
02841                 if(!prs_uint32("count", ps, depth, &out->count))
02842                         return False;
02843 
02844                 /* malloc memory if unmarshalling here */
02845 
02846                 if (UNMARSHALLING(ps) && out->count != 0) {
02847                         if (!NT_STATUS_IS_OK(privilege_set_init_by_ctx(ps->mem_ctx, &(out->set))))
02848                                 return False;
02849 
02850                         if (!(out->set.set = PRS_ALLOC_MEM(ps,LUID_ATTR,out->count)))
02851                                 return False;
02852 
02853                 }
02854                 
02855                 if(!lsa_io_privilege_set(desc, &out->set, ps, depth))
02856                         return False;
02857         }
02858 
02859         if(!prs_ntstatus("status", ps, depth, &out->status))
02860                 return False;
02861 
02862         return True;
02863 }

BOOL lsa_io_q_getsystemaccount ( const char *  desc,
LSA_Q_GETSYSTEMACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2871 行で定義されています。

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

参照元 api_lsa_getsystemaccount().

02872 {
02873         prs_debug(ps, depth, desc, "lsa_io_q_getsystemaccount");
02874         depth++;
02875 
02876         if(!prs_align(ps))
02877                 return False;
02878  
02879         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02880                 return False;
02881 
02882         return True;
02883 }

BOOL lsa_io_r_getsystemaccount ( const char *  desc,
LSA_R_GETSYSTEMACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2889 行で定義されています。

参照先 lsa_r_getsystemaccount::accessprs_debug()lsa_r_getsystemaccount::status.

参照元 api_lsa_getsystemaccount().

02890 {
02891         prs_debug(ps, depth, desc, "lsa_io_r_getsystemaccount");
02892         depth++;
02893 
02894         if(!prs_align(ps))
02895                 return False;
02896  
02897         if(!prs_uint32("access", ps, depth, &out->access))
02898                 return False;
02899 
02900         if(!prs_ntstatus("status", ps, depth, &out->status))
02901                 return False;
02902 
02903         return True;
02904 }

BOOL lsa_io_q_setsystemaccount ( const char *  desc,
LSA_Q_SETSYSTEMACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2911 行で定義されています。

参照先 lsa_q_setsystemaccount::accesslsa_q_setsystemaccount::polprs_debug()smb_io_pol_hnd().

参照元 api_lsa_setsystemaccount().

02912 {
02913         prs_debug(ps, depth, desc, "lsa_io_q_setsystemaccount");
02914         depth++;
02915 
02916         if(!prs_align(ps))
02917                 return False;
02918  
02919         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02920                 return False;
02921 
02922         if(!prs_uint32("access", ps, depth, &out->access))
02923                 return False;
02924 
02925         return True;
02926 }

BOOL lsa_io_r_setsystemaccount ( const char *  desc,
LSA_R_SETSYSTEMACCOUNT out,
prs_struct ps,
int  depth 
)

parse_lsa.c2932 行で定義されています。

参照先 prs_debug()lsa_r_setsystemaccount::status.

参照元 api_lsa_setsystemaccount().

02933 {
02934         prs_debug(ps, depth, desc, "lsa_io_r_setsystemaccount");
02935         depth++;
02936 
02937         if(!prs_align(ps))
02938                 return False;
02939  
02940         if(!prs_ntstatus("status", ps, depth, &out->status))
02941                 return False;
02942 
02943         return True;
02944 }

void init_lsa_string ( LSA_STRING uni,
const char *  string 
)

parse_lsa.c2947 行で定義されています。

参照先 LSA_STRING::hdrinit_uni_hdr()init_unistr2()UNI_FLAGS_NONELSA_STRING::unistring.

参照元 init_lsa_q_lookup_priv_value()init_lsa_q_open_trusted_domain_by_name()init_q_query_trusted_domain_info_by_name()init_samr_q_get_dispenum_index().

02948 {
02949         init_unistr2(&uni->unistring, string, UNI_FLAGS_NONE);
02950         init_uni_hdr(&uni->hdr, &uni->unistring);
02951 }

void init_lsa_q_lookup_priv_value ( LSA_Q_LOOKUP_PRIV_VALUE q_u,
POLICY_HND hnd,
const char *  name 
)

parse_lsa.c2953 行で定義されています。

参照先 init_lsa_string()LSA_Q_LOOKUP_PRIV_VALUE::polLSA_Q_LOOKUP_PRIV_VALUE::privname.

参照元 rpccli_lsa_lookup_priv_value().

02954 {
02955         memcpy(&q_u->pol, hnd, sizeof(q_u->pol));
02956         init_lsa_string( &q_u->privname, name );
02957 }

BOOL smb_io_lsa_string ( const char *  desc,
LSA_STRING string,
prs_struct ps,
int  depth 
)

parse_lsa.c2959 行で定義されています。

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

参照元 lsa_io_q_lookup_priv_value()lsa_io_q_open_trusted_domain_by_name()lsa_io_q_query_trusted_domain_info_by_name()lsa_io_trustdom_query_1()samr_io_q_get_dispenum_index().

02960 {
02961         prs_debug(ps, depth, desc, "smb_io_lsa_string");
02962         depth++;
02963 
02964         if(!smb_io_unihdr ("hdr", &string->hdr, ps, depth))
02965                 return False;
02966         if(!smb_io_unistr2("unistring", &string->unistring, string->hdr.buffer, ps, depth))
02967                 return False;
02968         
02969         return True;
02970 }

BOOL lsa_io_q_lookup_priv_value ( const char *  desc,
LSA_Q_LOOKUP_PRIV_VALUE out,
prs_struct ps,
int  depth 
)

parse_lsa.c2976 行で定義されています。

参照先 LSA_Q_LOOKUP_PRIV_VALUE::polLSA_Q_LOOKUP_PRIV_VALUE::privnameprs_debug()smb_io_lsa_string()smb_io_pol_hnd().

参照元 api_lsa_lookup_priv_value()rpccli_lsa_lookup_priv_value().

02977 {
02978         prs_debug(ps, depth, desc, "lsa_io_q_lookup_priv_value");
02979         depth++;
02980 
02981         if(!prs_align(ps))
02982                 return False;
02983  
02984         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
02985                 return False;
02986         if(!smb_io_lsa_string("privname", &out->privname, ps, depth))
02987                 return False;
02988 
02989         return True;
02990 }

BOOL lsa_io_r_lookup_priv_value ( const char *  desc,
LSA_R_LOOKUP_PRIV_VALUE out,
prs_struct ps,
int  depth 
)

parse_lsa.c2996 行で定義されています。

参照先 lsa_io_luid()LSA_R_LOOKUP_PRIV_VALUE::luidprs_debug()LSA_R_LOOKUP_PRIV_VALUE::status.

参照元 api_lsa_lookup_priv_value()rpccli_lsa_lookup_priv_value().

02997 {
02998         prs_debug(ps, depth, desc, "lsa_io_r_lookup_priv_value");
02999         depth++;
03000 
03001         if(!prs_align(ps))
03002                 return False;
03003                 
03004         if(!lsa_io_luid("luid", &out->luid, ps, depth))
03005                 return False;
03006  
03007         if(!prs_ntstatus("status", ps, depth, &out->status))
03008                 return False;
03009 
03010         return True;
03011 }

BOOL lsa_io_q_addprivs ( const char *  desc,
LSA_Q_ADDPRIVS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3018 行で定義されています。

参照先 lsa_q_addprivs::countlsa_io_privilege_set()_prs_struct::mem_ctxlsa_q_addprivs::polprivilege_set_init_by_ctx()prs_debug()PRIVILEGE_SET::setlsa_q_addprivs::setsmb_io_pol_hnd().

参照元 api_lsa_addprivs().

03019 {
03020         prs_debug(ps, depth, desc, "lsa_io_q_addprivs");
03021         depth++;
03022 
03023         if(!prs_align(ps))
03024                 return False;
03025  
03026         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
03027                 return False;
03028         
03029         if(!prs_uint32("count", ps, depth, &out->count))
03030                 return False;
03031 
03032         if (UNMARSHALLING(ps) && out->count!=0) {
03033                 if (!NT_STATUS_IS_OK(privilege_set_init_by_ctx(ps->mem_ctx, &(out->set))))
03034                         return False;
03035                 
03036                 if (!(out->set.set = PRS_ALLOC_MEM(ps, LUID_ATTR, out->count)))
03037                         return False;
03038         }
03039         
03040         if(!lsa_io_privilege_set(desc, &out->set, ps, depth))
03041                 return False;
03042         
03043         return True;
03044 }

BOOL lsa_io_r_addprivs ( const char *  desc,
LSA_R_ADDPRIVS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3050 行で定義されています。

参照先 prs_debug()lsa_r_addprivs::status.

参照元 api_lsa_addprivs().

03051 {
03052         prs_debug(ps, depth, desc, "lsa_io_r_addprivs");
03053         depth++;
03054 
03055         if(!prs_align(ps))
03056                 return False;
03057  
03058         if(!prs_ntstatus("status", ps, depth, &out->status))
03059                 return False;
03060 
03061         return True;
03062 }

BOOL lsa_io_q_removeprivs ( const char *  desc,
LSA_Q_REMOVEPRIVS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3068 行で定義されています。

参照先 lsa_q_removeprivs::allrightslsa_q_removeprivs::countlsa_io_privilege_set()_prs_struct::mem_ctxlsa_q_removeprivs::polprivilege_set_init_by_ctx()prs_debug()lsa_q_removeprivs::ptrPRIVILEGE_SET::setlsa_q_removeprivs::setsmb_io_pol_hnd().

参照元 api_lsa_removeprivs().

03069 {
03070         prs_debug(ps, depth, desc, "lsa_io_q_removeprivs");
03071         depth++;
03072 
03073         if(!prs_align(ps))
03074                 return False;
03075  
03076         if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
03077                 return False;
03078         
03079         if(!prs_uint32("allrights", ps, depth, &out->allrights))
03080                 return False;
03081 
03082         if(!prs_uint32("ptr", ps, depth, &out->ptr))
03083                 return False;
03084 
03085         /* 
03086          * JFM: I'm not sure at all if the count is inside the ptr
03087          * never seen one with ptr=0
03088          */
03089 
03090         if (out->ptr!=0) {
03091                 if(!prs_uint32("count", ps, depth, &out->count))
03092                         return False;
03093 
03094                 if (UNMARSHALLING(ps) && out->count!=0) {
03095                         if (!NT_STATUS_IS_OK(privilege_set_init_by_ctx(ps->mem_ctx, &(out->set))))
03096                                 return False;
03097 
03098                         if (!(out->set.set = PRS_ALLOC_MEM(ps, LUID_ATTR, out->count)))
03099                                 return False;
03100                 }
03101 
03102                 if(!lsa_io_privilege_set(desc, &out->set, ps, depth))
03103                         return False;
03104         }
03105 
03106         return True;
03107 }

BOOL lsa_io_r_removeprivs ( const char *  desc,
LSA_R_REMOVEPRIVS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3113 行で定義されています。

参照先 prs_debug()lsa_r_removeprivs::status.

参照元 api_lsa_removeprivs().

03114 {
03115         prs_debug(ps, depth, desc, "lsa_io_r_removeprivs");
03116         depth++;
03117 
03118         if(!prs_align(ps))
03119                 return False;
03120  
03121         if(!prs_ntstatus("status", ps, depth, &out->status))
03122                 return False;
03123 
03124         return True;
03125 }

BOOL policy_handle_is_valid ( const POLICY_HND hnd  ) 

parse_lsa.c3127 行で定義されています。

03128 {
03129         POLICY_HND zero_pol;
03130 
03131         ZERO_STRUCT(zero_pol);
03132         return ((memcmp(&zero_pol, hnd, sizeof(POLICY_HND)) == 0) ? False : True );
03133 }

void init_q_query2 ( LSA_Q_QUERY_INFO2 in,
POLICY_HND hnd,
uint16  info_class 
)

parse_lsa.c3139 行で定義されています。

参照先 lsa_query_info::info_classlsa_query_info::pol.

参照元 rpccli_lsa_query_info_policy2()rpccli_lsa_query_info_policy2_new().

03140 {
03141         DEBUG(5, ("init_q_query2\n"));
03142 
03143         memcpy(&in->pol, hnd, sizeof(in->pol));
03144 
03145         in->info_class = info_class;
03146 }

BOOL lsa_io_q_query_info2 ( const char *  desc,
LSA_Q_QUERY_INFO2 in,
prs_struct ps,
int  depth 
)

parse_lsa.c3152 行で定義されています。

参照先 lsa_query_info::info_classlsa_query_info::polprs_debug()smb_io_pol_hnd().

参照元 api_lsa_query_info2()rpccli_lsa_query_info_policy2()rpccli_lsa_query_info_policy2_new().

03153 {
03154         prs_debug(ps, depth, desc, "lsa_io_q_query_info2");
03155         depth++;
03156 
03157         if(!prs_align(ps))
03158                 return False;
03159  
03160         if(!smb_io_pol_hnd("pol", &in->pol, ps, depth))
03161                 return False;
03162         
03163         if(!prs_uint16("info_class", ps, depth, &in->info_class))
03164                 return False;
03165 
03166         return True;
03167 }

BOOL lsa_io_r_query_info2 ( const char *  desc,
LSA_R_QUERY_INFO2 out,
prs_struct ps,
int  depth 
)

parse_lsa.c3173 行で定義されています。

参照先 lsa_r_query_info::ctrlsa_r_query_info::dom_ptrlsa_io_query_info_ctr2()prs_debug()lsa_r_query_info::status.

参照元 api_lsa_query_info2()rpccli_lsa_query_info_policy2()rpccli_lsa_query_info_policy2_new().

03175 {
03176         prs_debug(ps, depth, desc, "lsa_io_r_query_info2");
03177         depth++;
03178 
03179         if(!prs_align(ps))
03180                 return False;
03181 
03182         if(!prs_uint32("dom_ptr", ps, depth, &out->dom_ptr))
03183                 return False;
03184 
03185         if (out->dom_ptr) {
03186 
03187                 if(!lsa_io_query_info_ctr2("", ps, depth, &out->ctr))
03188                         return False;
03189         }
03190 
03191         if(!prs_align(ps))
03192                 return False;
03193         if(!prs_ntstatus("status", ps, depth, &out->status))
03194                 return False;
03195 
03196         return True;
03197 }

void init_q_enum_acct_rights ( LSA_Q_ENUM_ACCT_RIGHTS in,
POLICY_HND hnd,
uint32  count,
DOM_SID sid 
)

parse_lsa.c3202 行で定義されています。

参照先 init_dom_sid2()LSA_Q_ENUM_ACCT_RIGHTS::polLSA_Q_ENUM_ACCT_RIGHTS::sid.

参照元 rpccli_lsa_enum_account_rights().

03206 {
03207         DEBUG(5, ("init_q_enum_acct_rights\n"));
03208 
03209         in->pol = *hnd;
03210         init_dom_sid2(&in->sid, sid);
03211 }

NTSTATUS init_r_enum_acct_rights ( LSA_R_ENUM_ACCT_RIGHTS out,
PRIVILEGE_SET privileges 
)

parse_lsa.c3215 行で定義されています。

参照先 add_string_to_array()LSA_R_ENUM_ACCT_RIGHTS::countPRIVILEGE_SET::countget_talloc_ctx()init_unistr4_array()LUID_ATTR::luidluid_to_privilege_name()LSA_R_ENUM_ACCT_RIGHTS::rightsPRIVILEGE_SET::set.

参照元 _lsa_enum_acct_rights().

03216 {
03217         uint32 i;
03218         char *privname;
03219         const char **privname_array = NULL;
03220         int num_priv = 0;
03221 
03222         for ( i=0; i<privileges->count; i++ ) {
03223                 privname = luid_to_privilege_name( &privileges->set[i].luid );
03224                 if ( privname ) {
03225                         if ( !add_string_to_array( get_talloc_ctx(), privname, &privname_array, &num_priv ) ) 
03226                                 return NT_STATUS_NO_MEMORY;
03227                 }
03228         }
03229 
03230         if ( num_priv ) {
03231                 out->rights = TALLOC_P( get_talloc_ctx(), UNISTR4_ARRAY );
03232                 if (!out->rights) {
03233                         return NT_STATUS_NO_MEMORY;
03234                 }
03235 
03236                 if ( !init_unistr4_array( out->rights, num_priv, privname_array ) ) 
03237                         return NT_STATUS_NO_MEMORY;
03238 
03239                 out->count = num_priv;
03240         }
03241 
03242         return NT_STATUS_OK;
03243 }

BOOL lsa_io_q_enum_acct_rights ( const char *  desc,
LSA_Q_ENUM_ACCT_RIGHTS in,
prs_struct ps,
int  depth 
)

parse_lsa.c3248 行で定義されています。

参照先 LSA_Q_ENUM_ACCT_RIGHTS::polprs_debug()LSA_Q_ENUM_ACCT_RIGHTS::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_lsa_enum_acct_rights()rpccli_lsa_enum_account_rights().

03249 {
03250         
03251         if (in == NULL)
03252                 return False;
03253 
03254         prs_debug(ps, depth, desc, "lsa_io_q_enum_acct_rights");
03255         depth++;
03256 
03257         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
03258                 return False;
03259 
03260         if(!smb_io_dom_sid2("sid", &in->sid, ps, depth))
03261                 return False;
03262 
03263         return True;
03264 }

BOOL lsa_io_r_enum_acct_rights ( const char *  desc,
LSA_R_ENUM_ACCT_RIGHTS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3270 行で定義されています。

参照先 LSA_R_ENUM_ACCT_RIGHTS::countprs_debug()prs_unistr4_array()LSA_R_ENUM_ACCT_RIGHTS::rightsLSA_R_ENUM_ACCT_RIGHTS::status.

参照元 api_lsa_enum_acct_rights()rpccli_lsa_enum_account_rights().

03271 {
03272         prs_debug(ps, depth, desc, "lsa_io_r_enum_acct_rights");
03273         depth++;
03274 
03275         if(!prs_uint32("count   ", ps, depth, &out->count))
03276                 return False;
03277 
03278         if ( !prs_pointer("rights", ps, depth, (void*)&out->rights, sizeof(UNISTR4_ARRAY), (PRS_POINTER_CAST)prs_unistr4_array) )
03279                 return False;
03280 
03281         if(!prs_align(ps))
03282                 return False;
03283 
03284         if(!prs_ntstatus("status", ps, depth, &out->status))
03285                 return False;
03286 
03287         return True;
03288 }

void init_q_add_acct_rights ( LSA_Q_ADD_ACCT_RIGHTS in,
POLICY_HND hnd,
DOM_SID sid,
uint32  count,
const char **  rights 
)

parse_lsa.c3294 行で定義されています。

参照先 LSA_Q_ADD_ACCT_RIGHTS::countget_talloc_ctx()init_dom_sid2()init_unistr4_array()LSA_Q_ADD_ACCT_RIGHTS::polLSA_Q_ADD_ACCT_RIGHTS::rightsLSA_Q_ADD_ACCT_RIGHTS::sidsmb_panic().

参照元 rpccli_lsa_add_account_rights().

03296 {
03297         DEBUG(5, ("init_q_add_acct_rights\n"));
03298 
03299         in->pol = *hnd;
03300         init_dom_sid2(&in->sid, sid);
03301         
03302         in->rights = TALLOC_P( get_talloc_ctx(), UNISTR4_ARRAY );
03303         if (!in->rights) {
03304                 smb_panic("init_q_add_acct_rights: talloc fail\n");
03305                 return;
03306         }
03307         init_unistr4_array( in->rights, count, rights );
03308         
03309         in->count = count;
03310 }

BOOL lsa_io_q_add_acct_rights ( const char *  desc,
LSA_Q_ADD_ACCT_RIGHTS in,
prs_struct ps,
int  depth 
)

parse_lsa.c3316 行で定義されています。

参照先 LSA_Q_ADD_ACCT_RIGHTS::countLSA_Q_ADD_ACCT_RIGHTS::polprs_debug()prs_unistr4_array()LSA_Q_ADD_ACCT_RIGHTS::rightsLSA_Q_ADD_ACCT_RIGHTS::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_lsa_add_acct_rights()rpccli_lsa_add_account_rights().

03317 {
03318         prs_debug(ps, depth, desc, "lsa_io_q_add_acct_rights");
03319         depth++;
03320 
03321         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
03322                 return False;
03323 
03324         if(!smb_io_dom_sid2("sid", &in->sid, ps, depth))
03325                 return False;
03326 
03327         if(!prs_uint32("count", ps, depth, &in->count))
03328                 return False;
03329 
03330         if ( !prs_pointer("rights", ps, depth, (void*)&in->rights, sizeof(UNISTR4_ARRAY), (PRS_POINTER_CAST)prs_unistr4_array) )
03331                 return False;
03332 
03333         return True;
03334 }

BOOL lsa_io_r_add_acct_rights ( const char *  desc,
LSA_R_ADD_ACCT_RIGHTS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3339 行で定義されています。

参照先 prs_debug()LSA_R_ADD_ACCT_RIGHTS::status.

参照元 api_lsa_add_acct_rights()rpccli_lsa_add_account_rights().

03340 {
03341         prs_debug(ps, depth, desc, "lsa_io_r_add_acct_rights");
03342         depth++;
03343 
03344         if(!prs_ntstatus("status", ps, depth, &out->status))
03345                 return False;
03346 
03347         return True;
03348 }

void init_q_remove_acct_rights ( LSA_Q_REMOVE_ACCT_RIGHTS in,
POLICY_HND hnd,
DOM_SID sid,
uint32  removeall,
uint32  count,
const char **  rights 
)

parse_lsa.c3354 行で定義されています。

参照先 LSA_Q_REMOVE_ACCT_RIGHTS::countget_talloc_ctx()init_dom_sid2()init_unistr4_array()LSA_Q_REMOVE_ACCT_RIGHTS::polLSA_Q_REMOVE_ACCT_RIGHTS::removeallLSA_Q_REMOVE_ACCT_RIGHTS::rightsLSA_Q_REMOVE_ACCT_RIGHTS::sidsmb_panic().

参照元 rpccli_lsa_remove_account_rights().

03360 {
03361         DEBUG(5, ("init_q_remove_acct_rights\n"));
03362 
03363         in->pol = *hnd;
03364 
03365         init_dom_sid2(&in->sid, sid);
03366 
03367         in->removeall = removeall;
03368         in->count = count;
03369 
03370         in->rights = TALLOC_P( get_talloc_ctx(), UNISTR4_ARRAY );
03371         if (!in->rights) {
03372                 smb_panic("init_q_remove_acct_rights: talloc fail\n");
03373                 return;
03374         }
03375         init_unistr4_array( in->rights, count, rights );
03376 }

BOOL lsa_io_q_remove_acct_rights ( const char *  desc,
LSA_Q_REMOVE_ACCT_RIGHTS in,
prs_struct ps,
int  depth 
)

parse_lsa.c3382 行で定義されています。

参照先 LSA_Q_REMOVE_ACCT_RIGHTS::countLSA_Q_REMOVE_ACCT_RIGHTS::polprs_debug()prs_unistr4_array()LSA_Q_REMOVE_ACCT_RIGHTS::removeallLSA_Q_REMOVE_ACCT_RIGHTS::rightsLSA_Q_REMOVE_ACCT_RIGHTS::sidsmb_io_dom_sid2()smb_io_pol_hnd().

参照元 api_lsa_remove_acct_rights()rpccli_lsa_remove_account_rights().

03383 {
03384         prs_debug(ps, depth, desc, "lsa_io_q_remove_acct_rights");
03385         depth++;
03386 
03387         if (!smb_io_pol_hnd("", &in->pol, ps, depth))
03388                 return False;
03389 
03390         if(!smb_io_dom_sid2("sid", &in->sid, ps, depth))
03391                 return False;
03392 
03393         if(!prs_uint32("removeall", ps, depth, &in->removeall))
03394                 return False;
03395 
03396         if(!prs_uint32("count", ps, depth, &in->count))
03397                 return False;
03398 
03399         if ( !prs_pointer("rights", ps, depth, (void*)&in->rights, sizeof(UNISTR4_ARRAY), (PRS_POINTER_CAST)prs_unistr4_array) )
03400                 return False;
03401 
03402         return True;
03403 }

BOOL lsa_io_r_remove_acct_rights ( const char *  desc,
LSA_R_REMOVE_ACCT_RIGHTS out,
prs_struct ps,
int  depth 
)

parse_lsa.c3408 行で定義されています。

参照先 prs_debug()LSA_R_REMOVE_ACCT_RIGHTS::status.

参照元 api_lsa_remove_acct_rights()rpccli_lsa_remove_account_rights().

03409 {
03410         prs_debug(ps, depth, desc, "lsa_io_r_remove_acct_rights");
03411         depth++;
03412 
03413         if(!prs_ntstatus("status", ps, depth, &out->status))
03414                 return False;
03415 
03416         return True;
03417 }

void init_lsa_q_open_trusted_domain ( LSA_Q_OPEN_TRUSTED_DOMAIN q,
POLICY_HND hnd,
DOM_SID sid,
uint32  desired_access 
)

parse_lsa.c3423 行で定義されています。

参照先 init_dom_sid2()LSA_Q_OPEN_TRUSTED_DOMAIN::sid.

参照元 rpccli_lsa_open_trusted_domain().

03424 {
03425         memcpy(&q->pol, hnd, sizeof(q->pol));
03426 
03427         init_dom_sid2(&q->sid, sid);
03428         q->access_mask = desired_access;
03429 }

BOOL lsa_io_q_open_trusted_domain ( const char *  desc,
LSA_Q_OPEN_TRUSTED_DOMAIN in,
prs_struct ps,
int  depth 
)

parse_lsa.c3435 行で定義されています。

参照先 LSA_Q_OPEN_TRUSTED_DOMAIN::countLSA_Q_OPEN_TRUSTED_DOMAIN::handleprs_debug()LSA_Q_OPEN_TRUSTED_DOMAIN::sidsmb_io_dom_sid()smb_io_pol_hnd().

参照元 api_lsa_open_trust_dom()rpccli_lsa_open_trusted_domain().

03436 {
03437         prs_debug(ps, depth, desc, "lsa_io_q_open_trusted_domain");
03438         depth++;
03439 
03440         if(!prs_align(ps))
03441                 return False;
03442 
03443         if (!smb_io_pol_hnd("", &in->handle, ps, depth))
03444                 return False;
03445 
03446         if(!prs_uint32("count", ps, depth, &in->count))
03447                 return False;
03448 
03449         if(!smb_io_dom_sid("sid", &in->sid, ps, depth))
03450                 return False;
03451 
03452         return True;
03453 }

void init_lsa_q_open_trusted_domain_by_name ( LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME q,
POLICY_HND hnd,
const char *  name,
uint32  desired_access 
)

parse_lsa.c3461 行で定義されています。

参照先 lsa_q_open_trusted_domain_by_name::access_maskinit_lsa_string()lsa_q_open_trusted_domain_by_name::namelsa_q_open_trusted_domain_by_name::pol.

参照元 rpccli_lsa_open_trusted_domain_by_name().

03465 {
03466         memcpy(&q->pol, hnd, sizeof(q->pol));
03467 
03468         init_lsa_string(&q->name, name);
03469         q->access_mask = desired_access;
03470 }

BOOL lsa_io_q_open_trusted_domain_by_name ( const char *  desc,
LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME q_o,
prs_struct ps,
int  depth 
)

parse_lsa.c3480 行で定義されています。

参照先 lsa_q_open_trusted_domain_by_name::access_masklsa_q_open_trusted_domain_by_name::namelsa_q_open_trusted_domain_by_name::polprs_debug()smb_io_lsa_string()smb_io_pol_hnd().

参照元 rpccli_lsa_open_trusted_domain_by_name().

03481 {
03482         prs_debug(ps, depth, desc, "lsa_io_q_open_trusted_domain_by_name");
03483         depth++;
03484 
03485         if(!prs_align(ps))
03486                 return False;
03487  
03488         if(!smb_io_pol_hnd("pol", &q_o->pol, ps, depth))
03489                 return False;
03490 
03491         if(!prs_align(ps))
03492                 return False;
03493 
03494         if(!smb_io_lsa_string("name", &q_o->name, ps, depth))
03495                 return False;
03496 
03497         if(!prs_align(ps))
03498                 return False;
03499 
03500         if(!prs_uint32("access", ps, depth, &q_o->access_mask))
03501                 return False;
03502 
03503         return True;
03504 }

BOOL lsa_io_r_open_trusted_domain_by_name ( const char *  desc,
LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME out,
prs_struct ps,
int  depth 
)

parse_lsa.c3510 行で定義されています。

参照先 LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME::handleprs_debug()smb_io_pol_hnd()LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME::status.

参照元 rpccli_lsa_open_trusted_domain_by_name().

03511 {
03512         prs_debug(ps, depth, desc, "lsa_io_r_open_trusted_domain_by_name");
03513         depth++;
03514 
03515         if(!prs_align(ps))
03516                 return False;
03517 
03518         if (!smb_io_pol_hnd("handle", &out->handle, ps, depth))
03519                 return False;
03520 
03521         if(!prs_ntstatus("status", ps, depth, &out->status))
03522                 return False;
03523 
03524         return True;
03525 }

BOOL lsa_io_r_open_trusted_domain ( const char *  desc,
LSA_R_OPEN_TRUSTED_DOMAIN out,
prs_struct ps,
int  depth 
)

parse_lsa.c3554 行で定義されています。

参照先 LSA_R_OPEN_TRUSTED_DOMAIN::handleprs_debug()smb_io_pol_hnd()LSA_R_OPEN_TRUSTED_DOMAIN::status.

参照元 api_lsa_open_trust_dom()rpccli_lsa_open_trusted_domain().

03555 {
03556         prs_debug(ps, depth, desc, "lsa_io_r_open_trusted_domain");
03557         depth++;
03558 
03559         if(!prs_align(ps))
03560                 return False;
03561 
03562         if (!smb_io_pol_hnd("handle", &out->handle, ps, depth))
03563                 return False;
03564 
03565         if(!prs_ntstatus("status", ps, depth, &out->status))
03566                 return False;
03567 
03568         return True;
03569 }

BOOL lsa_io_q_create_trusted_domain ( const char *  desc,
LSA_Q_CREATE_TRUSTED_DOMAIN in,
prs_struct ps,
int  depth 
)

parse_lsa.c3574 行で定義されています。

参照先 LSA_Q_CREATE_TRUSTED_DOMAIN::accessLSA_Q_CREATE_TRUSTED_DOMAIN::handleprs_debug()prs_unistr4()LSA_Q_CREATE_TRUSTED_DOMAIN::secretnamesmb_io_pol_hnd().

参照元 api_lsa_create_trust_dom().

03575 {
03576         prs_debug(ps, depth, desc, "lsa_io_q_create_trusted_domain");
03577         depth++;
03578 
03579         if(!prs_align(ps))
03580                 return False;
03581 
03582         if(!smb_io_pol_hnd("", &in->handle, ps, depth))
03583                 return False;
03584 
03585         if(!prs_unistr4 ("secretname", ps, depth, &in->secretname))
03586                 return False;
03587         if(!prs_align(ps))
03588                 return False;
03589 
03590         if(!prs_uint32("access", ps, depth, &in->access))
03591                 return False;
03592 
03593         return True;
03594 }

BOOL lsa_io_r_create_trusted_domain ( const char *  desc,
LSA_R_CREATE_TRUSTED_DOMAIN out,
prs_struct ps,
int  depth 
)

parse_lsa.c3599 行で定義されています。

参照先 LSA_R_CREATE_TRUSTED_DOMAIN::handleprs_debug()smb_io_pol_hnd()LSA_R_CREATE_TRUSTED_DOMAIN::status.

参照元 api_lsa_create_trust_dom().

03600 {
03601         prs_debug(ps, depth, desc, "lsa_io_r_create_trusted_domain");
03602         depth++;
03603 
03604         if(!prs_align(ps))
03605                 return False;
03606 
03607         if (!smb_io_pol_hnd("", &out->handle, ps, depth))
03608                 return False;
03609 
03610         if(!prs_ntstatus("status", ps, depth, &out->status))
03611                 return False;
03612 
03613         return True;
03614 }

BOOL lsa_io_q_create_secret ( const char *  desc,
LSA_Q_CREATE_SECRET in,
prs_struct ps,
int  depth 
)

parse_lsa.c3619 行で定義されています。

参照先 LSA_Q_CREATE_SECRET::accessLSA_Q_CREATE_SECRET::handleprs_debug()prs_unistr4()LSA_Q_CREATE_SECRET::secretnamesmb_io_pol_hnd().

参照元 api_lsa_create_secret().

03620 {
03621         prs_debug(ps, depth, desc, "lsa_io_q_create_secret");
03622         depth++;
03623 
03624         if(!prs_align(ps))
03625                 return False;
03626 
03627         if(!smb_io_pol_hnd("", &in->handle, ps, depth))
03628                 return False;
03629 
03630         if(!prs_unistr4 ("secretname", ps, depth, &in->secretname))
03631                 return False;
03632         if(!prs_align(ps))
03633                 return False;
03634 
03635         if(!prs_uint32("access", ps, depth, &in->access))
03636                 return False;
03637 
03638         return True;
03639 }

BOOL lsa_io_r_create_secret ( const char *  desc,
LSA_R_CREATE_SECRET out,
prs_struct ps,
int  depth 
)

parse_lsa.c3644 行で定義されています。

参照先 LSA_R_CREATE_SECRET::handleprs_debug()smb_io_pol_hnd()LSA_R_CREATE_SECRET::status.

参照元 api_lsa_create_secret().

03645 {
03646         prs_debug(ps, depth, desc, "lsa_io_r_create_secret");
03647         depth++;
03648 
03649         if(!prs_align(ps))
03650                 return False;
03651 
03652         if (!smb_io_pol_hnd("", &out->handle, ps, depth))
03653                 return False;
03654 
03655         if(!prs_ntstatus("status", ps, depth, &out->status))
03656                 return False;
03657 
03658         return True;
03659 }

static BOOL lsa_io_data_blob ( const char *  desc,
prs_struct ps,
int  depth,
LSA_DATA_BLOB blob 
) [static]

parse_lsa.c3666 行で定義されています。

参照先 LSA_DATA_BLOB::dataprs_debug()prs_io_unistr2_p()LSA_DATA_BLOB::size.

参照元 lsa_io_q_set_secret().

03667 {
03668         prs_debug(ps, depth, desc, "lsa_io_data_blob");
03669         depth++;
03670 
03671         if ( !prs_uint32("size", ps, depth, &blob->size) )
03672                 return False;
03673         if ( !prs_uint32("size", ps, depth, &blob->size) )
03674                 return False;
03675 
03676         if ( !prs_io_unistr2_p(desc, ps, depth, &blob->data) )
03677                 return False;
03678 
03679         return True;
03680 }

BOOL lsa_io_q_set_secret ( const char *  desc,
LSA_Q_SET_SECRET in,
prs_struct ps,
int  depth 
)

parse_lsa.c3685 行で定義されています。

参照先 LSA_Q_SET_SECRET::handlelsa_io_data_blob()LSA_Q_SET_SECRET::old_valueprs_debug()smb_io_pol_hnd().

参照元 api_lsa_set_secret().

03686 {
03687         prs_debug(ps, depth, desc, "lsa_io_q_set_secret");
03688         depth++;
03689 
03690         if ( !prs_align(ps) )
03691                 return False;
03692 
03693         if ( !smb_io_pol_hnd("", &in->handle, ps, depth) )
03694                 return False;
03695 
03696         if ( !prs_pointer( "old_value", ps, depth, (void*)&in->old_value, sizeof(LSA_DATA_BLOB), (PRS_POINTER_CAST)lsa_io_data_blob ))
03697                 return False;
03698 
03699         if( !prs_align(ps) )
03700                 return False;
03701         if ( !prs_pointer( "old_value", ps, depth, (void*)&in->old_value, sizeof(LSA_DATA_BLOB), (PRS_POINTER_CAST)lsa_io_data_blob ))
03702                 return False;
03703 
03704 
03705         return True;
03706 }

BOOL lsa_io_r_set_secret ( const char *  desc,
LSA_R_SET_SECRET out,
prs_struct ps,
int  depth 
)

parse_lsa.c3711 行で定義されています。

参照先 prs_debug()LSA_R_SET_SECRET::status.

参照元 api_lsa_set_secret().

03712 {
03713         prs_debug(ps, depth, desc, "lsa_io_r_set_secret");
03714         depth++;
03715 
03716         if(!prs_ntstatus("status", ps, depth, &out->status))
03717                 return False;
03718 
03719         return True;
03720 }

BOOL lsa_io_q_delete_object ( const char *  desc,
LSA_Q_DELETE_OBJECT in,
prs_struct ps,
int  depth 
)

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

参照先 LSA_Q_DELETE_OBJECT::handleprs_debug()smb_io_pol_hnd().

参照元 api_lsa_delete_object().

03726 {
03727         prs_debug(ps, depth, desc, "lsa_io_q_delete_object");
03728         depth++;
03729 
03730         if(!prs_align(ps))
03731                 return False;
03732 
03733         if(!smb_io_pol_hnd("", &in->handle, ps, depth))
03734                 return False;
03735 
03736         return True;
03737 }

BOOL lsa_io_r_delete_object ( const char *  desc,
LSA_R_DELETE_OBJECT out,
prs_struct ps,
int  depth 
)

parse_lsa.c3742 行で定義されています。

参照先 prs_debug()LSA_R_DELETE_OBJECT::status.

参照元 api_lsa_delete_object().

03743 {
03744         prs_debug(ps, depth, desc, "lsa_io_r_delete_object");
03745         depth++;
03746 
03747         if(!prs_ntstatus("status", ps, depth, &out->status))
03748                 return False;
03749 
03750         return True;
03751 }

void init_q_query_trusted_domain_info ( LSA_Q_QUERY_TRUSTED_DOMAIN_INFO q,
POLICY_HND hnd,
uint16  info_class 
)

parse_lsa.c3757 行で定義されています。

参照先 lsa_query_trusted_domain_info::info_classlsa_query_trusted_domain_info::pol.

参照元 rpccli_lsa_query_trusted_domain_info().

03759 {
03760         DEBUG(5, ("init_q_query_trusted_domain_info\n"));
03761         
03762         q->pol = *hnd;
03763         q->info_class = info_class;
03764 }

void init_q_query_trusted_domain_info_by_name ( LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME q,
POLICY_HND hnd,
uint16  info_class,
const char *  dom_name 
)

parse_lsa.c3770 行で定義されています。

参照先 lsa_query_trusted_domain_info_by_name::domain_namelsa_query_trusted_domain_info_by_name::info_classinit_lsa_string()lsa_query_trusted_domain_info_by_name::pol.

参照元 rpccli_lsa_query_trusted_domain_info_by_name().

03773 {
03774         DEBUG(5, ("init_q_query_trusted_domain_info_by_name\n"));
03775         
03776         q->pol = *hnd;
03777         init_lsa_string(&q->domain_name, dom_name );
03778         q->info_class = info_class;
03779 }

void init_q_query_trusted_domain_info_by_sid ( LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID q,
POLICY_HND hnd,
uint16  info_class,
DOM_SID dom_sid 
)

parse_lsa.c3785 行で定義されています。

参照先 lsa_query_trusted_domain_info_by_sid::dom_sidlsa_query_trusted_domain_info_by_sid::info_classinit_dom_sid2()lsa_query_trusted_domain_info_by_sid::pol.

参照元 rpccli_lsa_query_trusted_domain_info_by_sid().

03788 {
03789         DEBUG(5, ("init_q_query_trusted_domain_info_by_sid\n"));
03790         
03791         q->pol = *hnd;
03792         init_dom_sid2(&q->dom_sid, dom_sid);
03793         q->info_class = info_class;
03794 }

BOOL lsa_io_q_query_trusted_domain_info ( const char *  desc,
LSA_Q_QUERY_TRUSTED_DOMAIN_INFO q_q,
prs_struct ps,
int  depth 
)

parse_lsa.c3800 行で定義されています。

参照先 lsa_query_trusted_domain_info::info_classlsa_query_trusted_domain_info::polprs_debug()smb_io_pol_hnd().

参照元 rpccli_lsa_query_trusted_domain_info().

03803 {
03804         prs_debug(ps, depth, desc, "lsa_io_q_query_trusted_domain_info");
03805         depth++;
03806 
03807         if(!prs_align(ps))
03808                 return False;
03809 
03810         if(!smb_io_pol_hnd("pol", &q_q->pol, ps, depth))
03811                 return False;
03812 
03813         if(!prs_uint16("info_class", ps, depth, &q_q->info_class))
03814                 return False;
03815 
03816         return True;
03817 }

BOOL lsa_io_q_query_trusted_domain_info_by_sid ( const char *  desc,
LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID q_q,
prs_struct ps,
int  depth 
)

parse_lsa.c3824 行で定義されています。

参照先 lsa_query_trusted_domain_info_by_sid::dom_sidlsa_query_trusted_domain_info_by_sid::info_classlsa_query_trusted_domain_info_by_sid::polprs_debug()smb_io_dom_sid2()smb_io_pol_hnd().

参照元 rpccli_lsa_query_trusted_domain_info_by_sid().

03827 {
03828         prs_debug(ps, depth, desc, "lsa_io_q_query_trusted_domain_info_by_sid");
03829         depth++;
03830 
03831         if(!prs_align(ps))
03832                 return False;
03833 
03834         if(!smb_io_pol_hnd("pol", &q_q->pol, ps, depth))
03835                 return False;
03836 
03837         if(!prs_align(ps))
03838                 return False;
03839 
03840         if(!smb_io_dom_sid2("dom_sid", &q_q->dom_sid, ps, depth))
03841                 return False;
03842 
03843         if(!prs_uint16("info_class", ps, depth, &q_q->info_class))
03844                 return False;
03845 
03846         return True;
03847 }

BOOL lsa_io_q_query_trusted_domain_info_by_name ( const char *  desc,
LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME q_q,
prs_struct ps,
int  depth 
)

parse_lsa.c3853 行で定義されています。

参照先 lsa_query_trusted_domain_info_by_name::domain_namelsa_query_trusted_domain_info_by_name::info_classlsa_query_trusted_domain_info_by_name::polprs_debug()smb_io_lsa_string()smb_io_pol_hnd().

参照元 rpccli_lsa_query_trusted_domain_info_by_name().

03856 {
03857         prs_debug(ps, depth, desc, "lsa_io_q_query_trusted_domain_info_by_name");
03858         depth++;
03859 
03860         if(!prs_align(ps))
03861                 return False;
03862 
03863         if(!smb_io_pol_hnd("pol", &q_q->pol, ps, depth))
03864                 return False;
03865 
03866         if(!prs_align(ps))
03867                 return False;
03868 
03869         if(!smb_io_lsa_string("domain_name", &q_q->domain_name, ps, depth))
03870                 return False;
03871 
03872         if(!prs_uint16("info_class", ps, depth, &q_q->info_class))
03873                 return False;
03874 
03875         return True;
03876 }

static BOOL smb_io_lsa_data_buf_hdr ( const char *  desc,
LSA_DATA_BUF_HDR buf_hdr,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c3881 行で定義されています。

参照先 lsa_data_buf_hdr::data_ptrlsa_data_buf_hdr::lengthprs_debug()lsa_data_buf_hdr::size.

参照元 lsa_io_trustdom_query_4().

03883 {
03884         prs_debug(ps, depth, desc, "smb_io_lsa_data_buf_hdr");
03885         depth++;
03886 
03887         if(!prs_align(ps))
03888                 return False;
03889 
03890         if(!prs_uint32("length", ps, depth, &buf_hdr->length))
03891                 return False;
03892         
03893         if(!prs_uint32("size", ps, depth, &buf_hdr->size))
03894                 return False;
03895 
03896         if (!prs_uint32("data_ptr", ps, depth, &buf_hdr->data_ptr))
03897                 return False;
03898 
03899         return True;
03900 }

static BOOL smb_io_lsa_data_buf ( const char *  desc,
LSA_DATA_BUF buf,
prs_struct ps,
int  depth,
int  length,
int  size 
) [static]

parse_lsa.c3905 行で定義されています。

参照先 bufprs_debug().

参照元 lsa_io_trustdom_query_4().

03907 {
03908         prs_debug(ps, depth, desc, "smb_io_lsa_data_buf");
03909         depth++;
03910 
03911         if ( UNMARSHALLING(ps) && length ) {
03912                 if ( !(buf->data = PRS_ALLOC_MEM( ps, uint8, length )) )
03913                         return False;
03914         }
03915 
03916         if (!prs_uint32("size", ps, depth, &buf->size))
03917                 return False;
03918 
03919         if (!prs_uint32("offset", ps, depth, &buf->offset))
03920                 return False;
03921 
03922         if (!prs_uint32("length", ps, depth, &buf->length))
03923                 return False;
03924 
03925         if(!prs_uint8s(False, "data", ps, depth, buf->data, length))
03926                 return False;
03927 
03928         return True;
03929 }

static BOOL lsa_io_trustdom_query_1 ( const char *  desc,
TRUSTED_DOMAIN_INFO_NAME name,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c3934 行で定義されています。

参照先 namesmb_io_lsa_string().

参照元 lsa_io_trustdom_query().

03936 {
03937         if (!smb_io_lsa_string("netbios_name", &name->netbios_name, ps, depth))
03938                 return False;
03939 
03940         return True;
03941 }

static BOOL lsa_io_trustdom_query_3 ( const char *  desc,
TRUSTED_DOMAIN_INFO_POSIX_OFFSET posix,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c3946 行で定義されています。

参照先 trusted_domain_info_posix_offset::posix_offset.

参照元 lsa_io_trustdom_query().

03948 {
03949         if(!prs_uint32("posix_offset", ps, depth, &posix->posix_offset))
03950                 return False;
03951 
03952         return True;
03953 }

static BOOL lsa_io_trustdom_query_4 ( const char *  desc,
TRUSTED_DOMAIN_INFO_PASSWORD password,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c3958 行で定義されています。

参照先 passwordsmb_io_lsa_data_buf()smb_io_lsa_data_buf_hdr().

参照元 lsa_io_trustdom_query().

03960 {
03961         if(!prs_align(ps))
03962                 return False;
03963         
03964         if(!prs_uint32("ptr_password", ps, depth, &password->ptr_password))
03965                 return False;
03966 
03967         if(!prs_uint32("ptr_old_password", ps, depth, &password->ptr_old_password))
03968                 return False;
03969 
03970         if (&password->ptr_password) {
03971         
03972                 if (!smb_io_lsa_data_buf_hdr("password_hdr", &password->password_hdr, ps, depth))
03973                         return False;
03974 
03975                 if (!smb_io_lsa_data_buf("password", &password->password, ps, depth, 
03976                                         password->password_hdr.length, password->password_hdr.size))
03977                         return False;
03978         }
03979 
03980         if (&password->ptr_old_password) {
03981 
03982                 if (!smb_io_lsa_data_buf_hdr("old_password_hdr", &password->old_password_hdr, ps, depth))
03983                         return False;
03984 
03985                 if (!smb_io_lsa_data_buf("old_password", &password->old_password, ps, depth, 
03986                                         password->old_password_hdr.length, password->old_password_hdr.size))
03987                         return False;
03988         }
03989 
03990         return True;
03991 }

static BOOL lsa_io_trustdom_query_6 ( const char *  desc,
TRUSTED_DOMAIN_INFO_EX info_ex,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c3996 行で定義されています。

参照先 UNIHDR::buffertrusted_domain_info_ex::domain_nameLSA_STRING::hdrtrusted_domain_info_ex::netbios_nametrusted_domain_info_ex::sidsmb_io_dom_sid2()smb_io_unihdr()smb_io_unistr2()trusted_domain_info_ex::trust_attributestrusted_domain_info_ex::trust_directiontrusted_domain_info_ex::trust_typeLSA_STRING::unistring.

参照元 lsa_io_trustdom_query().

03998 {
03999         uint32 dom_sid_ptr;
04000         
04001         if (!smb_io_unihdr("domain_name_hdr", &info_ex->domain_name.hdr, ps, depth))
04002                 return False;
04003                 
04004         if (!smb_io_unihdr("netbios_name_hdr", &info_ex->netbios_name.hdr, ps, depth))
04005                 return False;
04006 
04007         if (!prs_uint32("dom_sid_ptr", ps, depth, &dom_sid_ptr))
04008                 return False;
04009 
04010         if (!prs_uint32("trust_direction", ps, depth, &info_ex->trust_direction))
04011                 return False;
04012 
04013         if (!prs_uint32("trust_type", ps, depth, &info_ex->trust_type))
04014                 return False;
04015 
04016         if (!prs_uint32("trust_attributes", ps, depth, &info_ex->trust_attributes))
04017                 return False;
04018                 
04019         if (!smb_io_unistr2("domain_name_unistring", &info_ex->domain_name.unistring, info_ex->domain_name.hdr.buffer, ps, depth))
04020                 return False;
04021                 
04022         if (!smb_io_unistr2("netbios_name_unistring", &info_ex->netbios_name.unistring, info_ex->netbios_name.hdr.buffer, ps, depth))
04023                 return False;
04024 
04025         if (!smb_io_dom_sid2("sid", &info_ex->sid, ps, depth))
04026                 return False;
04027 
04028         return True;
04029 }

static BOOL lsa_io_trustdom_query ( const char *  desc,
prs_struct ps,
int  depth,
LSA_TRUSTED_DOMAIN_INFO info 
) [static]

parse_lsa.c4034 行で定義されています。

参照先 lsa_trusted_domain_info::info_classlsa_trusted_domain_info::info_exlsa_io_trustdom_query_1()lsa_io_trustdom_query_3()lsa_io_trustdom_query_4()lsa_io_trustdom_query_6()lsa_trusted_domain_info::namelsa_trusted_domain_info::passwordlsa_trusted_domain_info::posix_offsetprs_debug().

参照元 lsa_io_r_query_trusted_domain_info().

04035 {
04036         prs_debug(ps, depth, desc, "lsa_io_trustdom_query");
04037         depth++;
04038 
04039         if(!prs_uint16("info_class", ps, depth, &info->info_class))
04040                 return False;
04041 
04042         if(!prs_align(ps))
04043                 return False;
04044 
04045         switch (info->info_class) {
04046         case 1:
04047                 if(!lsa_io_trustdom_query_1("name", &info->name, ps, depth))
04048                         return False;
04049                 break;
04050         case 3:
04051                 if(!lsa_io_trustdom_query_3("posix_offset", &info->posix_offset, ps, depth))
04052                         return False;
04053                 break;
04054         case 4:
04055                 if(!lsa_io_trustdom_query_4("password", &info->password, ps, depth))
04056                         return False;
04057                 break;
04058         case 6:
04059                 if(!lsa_io_trustdom_query_6("info_ex", &info->info_ex, ps, depth))
04060                         return False;
04061                 break;
04062         default:
04063                 DEBUG(0,("unsupported info-level: %d\n", info->info_class));
04064                 return False;
04065         }
04066 
04067         return True;
04068 }

BOOL lsa_io_r_query_trusted_domain_info ( const char *  desc,
LSA_R_QUERY_TRUSTED_DOMAIN_INFO r_q,
prs_struct ps,
int  depth 
)

parse_lsa.c4074 行で定義されています。

参照先 r_lsa_query_trusted_domain_info::infolsa_io_trustdom_query()prs_debug()r_lsa_query_trusted_domain_info::status.

参照元 rpccli_lsa_query_trusted_domain_info()rpccli_lsa_query_trusted_domain_info_by_name()rpccli_lsa_query_trusted_domain_info_by_sid().

04077 {
04078         if (r_q == NULL)
04079                 return False;
04080 
04081         prs_debug(ps, depth, desc, "lsa_io_r_query_trusted_domain_info");
04082         depth++;
04083 
04084         if (!prs_pointer("trustdom", ps, depth, (void*)&r_q->info, 
04085                          sizeof(LSA_TRUSTED_DOMAIN_INFO), 
04086                          (PRS_POINTER_CAST)lsa_io_trustdom_query) )
04087                 return False;
04088 
04089         if(!prs_align(ps))
04090                 return False;
04091 
04092         if(!prs_ntstatus("status", ps, depth, &r_q->status))
04093                 return False;
04094 
04095         return True;
04096 }

void init_q_query_dom_info ( LSA_Q_QUERY_DOM_INFO_POLICY in,
POLICY_HND hnd,
uint16  info_class 
)

parse_lsa.c4102 行で定義されています。

参照先 lsa_q_query_dom_info_policy::info_classlsa_q_query_dom_info_policy::pol.

参照元 cli_lsa_query_domain_info_policy().

04103 {
04104         DEBUG(5, ("init_q_query_dom_info\n"));
04105 
04106         memcpy(&in->pol, hnd, sizeof(in->pol));
04107 
04108         in->info_class = info_class;
04109 }

BOOL lsa_io_q_query_dom_info ( const char *  desc,
LSA_Q_QUERY_DOM_INFO_POLICY in,
prs_struct ps,
int  depth 
)

parse_lsa.c4115 行で定義されています。

参照先 lsa_q_query_dom_info_policy::info_classlsa_q_query_dom_info_policy::polprs_debug()smb_io_pol_hnd().

参照元 cli_lsa_query_domain_info_policy().

04116 {
04117         prs_debug(ps, depth, desc, "lsa_io_q_query_dom_info");
04118         depth++;
04119 
04120         if(!prs_align(ps))
04121                 return False;
04122  
04123         if(!smb_io_pol_hnd("pol", &in->pol, ps, depth))
04124                 return False;
04125         
04126         if(!prs_uint16("info_class", ps, depth, &in->info_class))
04127                 return False;
04128 
04129         return True;
04130 }

static BOOL lsa_io_dominfo_query_3 ( const char *  desc,
LSA_DOM_INFO_POLICY_KERBEROS krb_policy,
prs_struct ps,
int  depth 
) [static]

parse_lsa.c4136 行で定義されています。

参照先 dom_info_kerberos::clock_skewdom_info_kerberos::enforce_restrictionsdom_info_kerberos::service_tkt_lifetimesmb_io_nttime()dom_info_kerberos::unknown6dom_info_kerberos::user_tkt_lifetimedom_info_kerberos::user_tkt_renewaltime.

参照元 lsa_io_dom_info_query().

04138 {
04139         if (!prs_align_uint64(ps))
04140                 return False;
04141 
04142         if (!prs_align(ps))
04143                 return False;
04144 
04145         if (!prs_uint32("enforce_restrictions", ps, depth, &krb_policy->enforce_restrictions))
04146                 return False;
04147 
04148         if (!prs_align_uint64(ps))
04149                 return False;
04150 
04151         if (!smb_io_nttime("service_tkt_lifetime", ps, depth, &krb_policy->service_tkt_lifetime))
04152                 return False;
04153 
04154         if (!prs_align_uint64(ps))
04155                 return False;
04156         
04157         if (!smb_io_nttime("user_tkt_lifetime", ps, depth, &krb_policy->user_tkt_lifetime))
04158                 return False;
04159 
04160         if (!prs_align_uint64(ps))
04161                 return False;
04162         
04163         if (!smb_io_nttime("user_tkt_renewaltime", ps, depth, &krb_policy->user_tkt_renewaltime))
04164                 return False;
04165 
04166         if (!prs_align_uint64(ps))
04167                 return False;
04168         
04169         if (!smb_io_nttime("clock_skew", ps, depth, &krb_policy->clock_skew))
04170                 return False;
04171 
04172         if (!prs_align_uint64(ps))
04173                 return False;
04174         
04175         if (!smb_io_nttime("unknown6", ps, depth, &krb_policy->unknown6))
04176                 return False;
04177 
04178         return True;
04179 }

static BOOL lsa_io_dom_info_query ( const char *  desc,
prs_struct ps,
int  depth,
LSA_DOM_INFO_UNION info 
) [static]

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

参照先 lsa_dom_info_union::info_classlsa_dom_info_union::krb_policylsa_io_dominfo_query_3()prs_debug().

参照元 lsa_io_r_query_dom_info().

04182 {
04183         prs_debug(ps, depth, desc, "lsa_io_dom_info_query");
04184         depth++;
04185 
04186         if(!prs_align_uint16(ps))
04187                 return False;
04188 
04189         if(!prs_uint16("info_class", ps, depth, &info->info_class))
04190                 return False;
04191 
04192         switch (info->info_class) {
04193         case 3: 
04194                 if (!lsa_io_dominfo_query_3("krb_policy", &info->krb_policy, ps, depth))
04195                         return False;
04196                 break;
04197         default:
04198                 DEBUG(0,("unsupported info-level: %d\n", info->info_class));
04199                 return False;
04200                 break;
04201         }
04202 
04203         return True;
04204 }

BOOL lsa_io_r_query_dom_info ( const char *  desc,
LSA_R_QUERY_DOM_INFO_POLICY out,
prs_struct ps,
int  depth 
)

parse_lsa.c4207 行で定義されています。

参照先 lsa_r_query_dom_info_policy::infolsa_io_dom_info_query()prs_debug()lsa_r_query_dom_info_policy::status.

参照元 cli_lsa_query_domain_info_policy().

04209 {
04210         prs_debug(ps, depth, desc, "lsa_io_r_query_dom_info");
04211         depth++;
04212 
04213         if (!prs_pointer("dominfo", ps, depth, (void*)&out->info, 
04214                          sizeof(LSA_DOM_INFO_UNION), 
04215                          (PRS_POINTER_CAST)lsa_io_dom_info_query) )
04216                 return False;
04217         
04218         if(!prs_ntstatus("status", ps, depth, &out->status))
04219                 return False;
04220 
04221         return True;
04222 }


Sambaに対してSat Aug 29 21:24:09 2009に生成されました。  doxygen 1.4.7