rpc_parse/parse_misc.c

ソースコードを見る。

関数

static TALLOC_CTXget_current_rpc_talloc (void)
void set_current_rpc_talloc (TALLOC_CTX *ctx)
void main_loop_TALLOC_FREE (void)
TALLOC_CTXmain_loop_talloc_get (void)
TALLOC_CTXget_talloc_ctx (void)
static BOOL smb_io_utime (const char *desc, UTIME *t, prs_struct *ps, int depth)
BOOL smb_io_time (const char *desc, NTTIME *nttime, prs_struct *ps, int depth)
BOOL smb_io_nttime (const char *desc, prs_struct *ps, int depth, NTTIME *nttime)
uint32 get_enum_hnd (ENUM_HND *enh)
void init_enum_hnd (ENUM_HND *enh, uint32 hnd)
BOOL smb_io_enum_hnd (const char *desc, ENUM_HND *hnd, prs_struct *ps, int depth)
BOOL smb_io_dom_sid (const char *desc, DOM_SID *sid, prs_struct *ps, int depth)
void init_dom_sid2 (DOM_SID2 *sid2, const DOM_SID *sid)
BOOL smb_io_dom_sid2_p (const char *desc, prs_struct *ps, int depth, DOM_SID2 **sid2)
BOOL smb_io_dom_sid2 (const char *desc, DOM_SID2 *sid, prs_struct *ps, int depth)
BOOL smb_io_uuid (const char *desc, struct GUID *uuid, prs_struct *ps, int depth)
void init_str_hdr (STRHDR *hdr, int max_len, int len, uint32 buffer)
BOOL smb_io_strhdr (const char *desc, STRHDR *hdr, prs_struct *ps, int depth)
void init_uni_hdr (UNIHDR *hdr, UNISTR2 *str2)
BOOL smb_io_unihdr (const char *desc, UNIHDR *hdr, prs_struct *ps, int depth)
void init_buf_hdr (BUFHDR *hdr, int max_len, int len)
BOOL smb_io_hdrbuf_pre (const char *desc, BUFHDR *hdr, prs_struct *ps, int depth, uint32 *offset)
BOOL smb_io_hdrbuf_post (const char *desc, BUFHDR *hdr, prs_struct *ps, int depth, uint32 ptr_hdrbuf, uint32 max_len, uint32 len)
BOOL smb_io_hdrbuf (const char *desc, BUFHDR *hdr, prs_struct *ps, int depth)
void init_unistr (UNISTR *str, const char *buf)
BOOL smb_io_unistr (const char *desc, UNISTR *uni, prs_struct *ps, int depth)
static void create_rpc_blob (RPC_DATA_BLOB *str, size_t len)
void init_rpc_blob_uint32 (RPC_DATA_BLOB *str, uint32 val)
void init_rpc_blob_str (RPC_DATA_BLOB *str, const char *buf, int len)
void init_rpc_blob_hex (RPC_DATA_BLOB *str, const char *buf)
void init_rpc_blob_bytes (RPC_DATA_BLOB *str, uint8 *buf, size_t len)
BOOL smb_io_buffer5 (const char *desc, BUFFER5 *buf5, prs_struct *ps, int depth)
void init_regval_buffer (REGVAL_BUFFER *str, const uint8 *buf, size_t len)
BOOL smb_io_regval_buffer (const char *desc, prs_struct *ps, int depth, REGVAL_BUFFER *buf2)
void init_buf_unistr2 (UNISTR2 *str, uint32 *ptr, const char *buf)
void copy_unistr2 (UNISTR2 *str, const UNISTR2 *from)
void init_string2 (STRING2 *str, const char *buf, size_t max_len, size_t str_len)
BOOL smb_io_string2 (const char *desc, STRING2 *str2, uint32 buffer, prs_struct *ps, int depth)
void init_unistr2 (UNISTR2 *str, const char *buf, enum unistr2_term_codes flags)
void init_unistr4 (UNISTR4 *uni4, const char *buf, enum unistr2_term_codes flags)
void init_unistr4_w (TALLOC_CTX *ctx, UNISTR4 *uni4, const smb_ucs2_t *buf)
void init_unistr2_w (TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf)
 Inits a UNISTR2 structure.
void init_unistr2_from_unistr (UNISTR2 *to, const UNISTR *from)
void init_unistr2_from_datablob (UNISTR2 *str, DATA_BLOB *blob)
BOOL prs_io_unistr2_p (const char *desc, prs_struct *ps, int depth, UNISTR2 **uni2)
BOOL prs_io_unistr2 (const char *desc, prs_struct *ps, int depth, UNISTR2 *uni2)
BOOL smb_io_unistr2 (const char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct *ps, int depth)
BOOL prs_unistr4 (const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4)
BOOL prs_unistr4_hdr (const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4)
BOOL prs_unistr4_str (const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4)
BOOL prs_unistr4_array (const char *desc, prs_struct *ps, int depth, UNISTR4_ARRAY *array)
BOOL init_unistr4_array (UNISTR4_ARRAY *array, uint32 count, const char **strings)
BOOL smb_io_lockout_string_hdr (const char *desc, HDR_LOCKOUT_STRING *hdr_account_lockout, prs_struct *ps, int depth)
BOOL smb_io_account_lockout_str (const char *desc, LOCKOUT_STRING *account_lockout, uint32 buffer, prs_struct *ps, int depth)
void init_dom_rid (DOM_RID *prid, uint32 rid, uint16 type, uint32 idx)
BOOL smb_io_dom_rid (const char *desc, DOM_RID *rid, prs_struct *ps, int depth)
BOOL smb_io_dom_rid2 (const char *desc, DOM_RID2 *rid, prs_struct *ps, int depth)
void init_dom_rid3 (DOM_RID3 *rid3, uint32 rid, uint8 type)
BOOL smb_io_dom_rid3 (const char *desc, DOM_RID3 *rid3, prs_struct *ps, int depth)
void init_dom_rid4 (DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid)
static void init_clnt_srv (DOM_CLNT_SRV *logcln, const char *logon_srv, const char *comp_name)
BOOL smb_io_clnt_srv (const char *desc, DOM_CLNT_SRV *logcln, prs_struct *ps, int depth)
void init_log_info (DOM_LOG_INFO *loginfo, const char *logon_srv, const char *acct_name, uint16 sec_chan, const char *comp_name)
BOOL smb_io_log_info (const char *desc, DOM_LOG_INFO *loginfo, prs_struct *ps, int depth)
BOOL smb_io_chal (const char *desc, DOM_CHAL *chal, prs_struct *ps, int depth)
BOOL smb_io_cred (const char *desc, DOM_CRED *cred, prs_struct *ps, int depth)
void init_clnt_info2 (DOM_CLNT_INFO2 *clnt, const char *logon_srv, const char *comp_name, const DOM_CRED *clnt_cred)
BOOL smb_io_clnt_info2 (const char *desc, DOM_CLNT_INFO2 *clnt, prs_struct *ps, int depth)
void init_clnt_info (DOM_CLNT_INFO *clnt, const char *logon_srv, const char *acct_name, uint16 sec_chan, const char *comp_name, const DOM_CRED *cred)
BOOL smb_io_clnt_info (const char *desc, DOM_CLNT_INFO *clnt, prs_struct *ps, int depth)
void init_logon_id (DOM_LOGON_ID *logonid, uint32 log_id_low, uint32 log_id_high)
BOOL smb_io_logon_id (const char *desc, DOM_LOGON_ID *logonid, prs_struct *ps, int depth)
void init_owf_info (OWF_INFO *hash, const uint8 data[16])
BOOL smb_io_owf_info (const char *desc, OWF_INFO *hash, prs_struct *ps, int depth)
BOOL smb_io_gid (const char *desc, DOM_GID *gid, prs_struct *ps, int depth)
BOOL smb_io_pol_hnd (const char *desc, POLICY_HND *pol, prs_struct *ps, int depth)
void init_unistr3 (UNISTR3 *str, const char *buf)
BOOL smb_io_unistr3 (const char *desc, UNISTR3 *name, prs_struct *ps, int depth)
BOOL prs_uint64 (const char *name, prs_struct *ps, int depth, uint64 *data64)
BOOL smb_io_bufhdr2 (const char *desc, BUFHDR2 *hdr, prs_struct *ps, int depth)
BOOL smb_io_bufhdr4 (const char *desc, BUFHDR4 *hdr, prs_struct *ps, int depth)
BOOL smb_io_rpc_blob (const char *desc, RPC_DATA_BLOB *blob, prs_struct *ps, int depth)
BOOL make_uni_hdr (UNIHDR *hdr, int len)
BOOL make_bufhdr2 (BUFHDR2 *hdr, uint32 info_level, uint32 length, uint32 buffer)
uint32 str_len_uni (UNISTR *source)

変数

static TALLOC_CTXcurrent_rpc_talloc = NULL
static TALLOC_CTXmain_loop_talloc = NULL


関数

static TALLOC_CTX* get_current_rpc_talloc ( void   )  [static]

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

参照先 current_rpc_talloc.

参照元 get_talloc_ctx().

00037 {
00038     return current_rpc_talloc;
00039 }

void set_current_rpc_talloc ( TALLOC_CTX ctx  ) 

parse_misc.c41 行で定義されています。

参照先 current_rpc_talloc.

参照元 api_pipe_request().

00042 {
00043         current_rpc_talloc = ctx;
00044 }

void main_loop_TALLOC_FREE ( void   ) 

parse_misc.c52 行で定義されています。

参照先 main_loop_talloc.

参照元 process_loop()smbd_process().

00053 {
00054     if (!main_loop_talloc)
00055         return;
00056     talloc_destroy(main_loop_talloc);
00057     main_loop_talloc = NULL;
00058 }

TALLOC_CTX* main_loop_talloc_get ( void   ) 

parse_misc.c64 行で定義されています。

参照先 main_loop_tallocsmb_panic()talloc_init().

参照元 afs_to_nt_acl()aixjfs2_getacl_alloc()aixjfs2_process_smbacl()get_nt_acl()get_talloc_ctx()gpfs_get_nfs4_acl()gpfs_getacl_alloc()gpfsacl_process_smbacl()smb_add_ace4()smb_create_smb4acl()smb_get_nt_acl_nfs4()smbacl4_nfs42win()smbacl4_win2nfs4().

00065 {
00066     if (!main_loop_talloc) {
00067         main_loop_talloc = talloc_init("main loop talloc (mainly parse_misc)");
00068         if (!main_loop_talloc)
00069             smb_panic("main_loop_talloc: malloc fail\n");
00070     }
00071 
00072     return main_loop_talloc;
00073 }

TALLOC_CTX* get_talloc_ctx ( void   ) 

parse_misc.c82 行で定義されています。

参照先 get_current_rpc_talloc()main_loop_talloc_get().

参照元 construct_printer_info_2()construct_printer_info_3()copy_unistr2()create_rpc_blob()init_q_add_acct_rights()init_q_remove_acct_rights()init_r_enum_acct_rights()init_reg_q_abort_shutdown()init_reg_q_create_key_ex()init_reg_q_enum_val()init_reg_q_open_hive()init_reg_q_shutdown()init_reg_r_enum_key()init_reg_r_enum_val()init_reg_r_query_value()init_regval_buffer()init_shutdown_q_abort()init_shutdown_q_init()init_srv_file_info3()init_srv_q_net_file_close()init_srv_q_net_file_enum()init_srv_sess_info0()init_srv_sess_info1()init_string2()init_unistr()init_unistr2()init_unistr2_from_unistr()init_unistr3()init_unistr4()init_unistr4_array()make_spoolss_q_addprinterex()make_spoolss_q_open_printer_ex()net_file_enum_3()ntsvcs_io_q_get_hw_profile_info()ntsvcs_io_r_get_hw_profile_info()prs_unistr4_array()regkey_access_check()svcctl_io_service_fa().

00083 {
00084         TALLOC_CTX *tc = get_current_rpc_talloc();
00085 
00086         if (tc)
00087                 return tc;
00088         return main_loop_talloc_get();
00089 }

static BOOL smb_io_utime ( const char *  desc,
UTIME t,
prs_struct ps,
int  depth 
) [static]

parse_misc.c95 行で定義されています。

参照先 prs_debug()t.

参照元 smb_io_cred().

00096 {
00097         if (t == NULL)
00098                 return False;
00099 
00100         prs_debug(ps, depth, desc, "smb_io_utime");
00101         depth++;
00102 
00103         if(!prs_align(ps))
00104                 return False;
00105         
00106         if(!prs_uint32 ("time", ps, depth, &t->time))
00107                 return False;
00108 
00109         return True;
00110 }

BOOL smb_io_time ( const char *  desc,
NTTIME nttime,
prs_struct ps,
int  depth 
)

parse_misc.c116 行で定義されています。

参照先 prs_debug().

参照元 net_io_sam_account_info()net_io_sam_domain_info()net_io_sam_policy_info()net_io_sam_secret_info()net_io_user_info3()pac_io_logon_name()pac_io_pac_logon_info()prs_nk_rec()prs_regf_block()reg_io_q_enum_key()reg_io_r_query_key()sam_io_unk_info1()sam_io_unk_info12()sam_io_unk_info13()sam_io_unk_info2()sam_io_unk_info3()sam_io_unk_info8()sam_io_user_info17()sam_io_user_info21()sam_io_user_info23()sam_io_user_info25()smb_io_nttime()spool_io_printer_driver_info_level_6().

00117 {
00118         uint32 low, high;
00119         if (nttime == NULL)
00120                 return False;
00121 
00122         prs_debug(ps, depth, desc, "smb_io_time");
00123         depth++;
00124 
00125         if(!prs_align(ps))
00126                 return False;
00127         
00128         if (MARSHALLING(ps)) {
00129                 low = *nttime & 0xFFFFFFFF;
00130                 high = *nttime >> 32;
00131         }
00132         
00133         if(!prs_uint32("low ", ps, depth, &low)) /* low part */
00134                 return False;
00135         if(!prs_uint32("high", ps, depth, &high)) /* high part */
00136                 return False;
00137 
00138         if (UNMARSHALLING(ps)) {
00139                 *nttime = (((uint64_t)high << 32) + low);
00140         }
00141 
00142         return True;
00143 }

BOOL smb_io_nttime ( const char *  desc,
prs_struct ps,
int  depth,
NTTIME nttime 
)

parse_misc.c149 行で定義されています。

参照先 smb_io_time().

参照元 lsa_io_dom_query_1()lsa_io_dominfo_query_3()reg_io_r_enum_key().

00150 {
00151         return smb_io_time( desc, nttime, ps, depth );
00152 }

uint32 get_enum_hnd ( ENUM_HND enh  ) 

parse_misc.c158 行で定義されています。

参照先 ENUM_HND::handleENUM_HND::ptr_hnd.

参照元 _srv_net_conn_enum()_srv_net_disk_enum()_srv_net_file_enum()_srv_net_sess_enum()_srv_net_share_enum()_srv_net_share_enum_all().

00159 {
00160         return (enh && enh->ptr_hnd != 0) ? enh->handle : 0;
00161 }

void init_enum_hnd ( ENUM_HND enh,
uint32  hnd 
)

parse_misc.c167 行で定義されています。

参照先 ENUM_HND::handleENUM_HND::ptr_hnd.

参照元 _srv_net_disk_enum()browse_host_rpc()cmd_srvsvc_net_file_enum()cmd_srvsvc_net_share_enum()get_rpc_shares()get_share_info()init_srv_r_net_conn_enum()init_srv_r_net_sess_enum()init_srv_r_net_share_enum()net_file_enum_3()net_share_enum_rpc()rpc_file_list_internals()rpc_share_allowedusers_internals().

00168 {
00169         DEBUG(5,("smb_io_enum_hnd\n"));
00170 
00171         enh->ptr_hnd = (hnd != 0) ? 1 : 0;
00172         enh->handle = hnd;
00173 }

BOOL smb_io_enum_hnd ( const char *  desc,
ENUM_HND hnd,
prs_struct ps,
int  depth 
)

parse_misc.c179 行で定義されています。

参照先 ENUM_HND::handleprs_debug()ENUM_HND::ptr_hnd.

参照元 srv_io_q_net_conn_enum()srv_io_q_net_disk_enum()srv_io_q_net_file_enum()srv_io_q_net_sess_enum()srv_io_q_net_share_enum()srv_io_r_net_conn_enum()srv_io_r_net_disk_enum()srv_io_r_net_file_enum()srv_io_r_net_sess_enum()srv_io_r_net_share_enum().

00180 {
00181         if (hnd == NULL)
00182                 return False;
00183 
00184         prs_debug(ps, depth, desc, "smb_io_enum_hnd");
00185         depth++;
00186 
00187         if(!prs_align(ps))
00188                 return False;
00189         
00190         if(!prs_uint32("ptr_hnd", ps, depth, &hnd->ptr_hnd)) /* pointer */
00191                 return False;
00192 
00193         if (hnd->ptr_hnd != 0) {
00194                 if(!prs_uint32("handle ", ps, depth, &hnd->handle )) /* enum handle */
00195                         return False;
00196         }
00197 
00198         return True;
00199 }

BOOL smb_io_dom_sid ( const char *  desc,
DOM_SID sid,
prs_struct ps,
int  depth 
)

parse_misc.c205 行で定義されています。

参照先 dom_sid::id_authdom_sid::num_authsprs_debug()dom_sid::sid_rev_numdom_sid::sub_auths.

参照元 lsa_io_q_open_trusted_domain()sec_io_ace()sec_io_desc()smb_io_dom_sid2().

00206 {
00207         int i;
00208 
00209         if (sid == NULL)
00210                 return False;
00211 
00212         prs_debug(ps, depth, desc, "smb_io_dom_sid");
00213         depth++;
00214 
00215         if(!prs_uint8 ("sid_rev_num", ps, depth, &sid->sid_rev_num))
00216                 return False;
00217 
00218         if(!prs_uint8 ("num_auths  ", ps, depth, &sid->num_auths))
00219                 return False;
00220 
00221         for (i = 0; i < 6; i++)
00222         {
00223                 fstring tmp;
00224                 slprintf(tmp, sizeof(tmp) - 1, "id_auth[%d] ", i);
00225                 if(!prs_uint8 (tmp, ps, depth, &sid->id_auth[i]))
00226                         return False;
00227         }
00228 
00229         /* oops! XXXX should really issue a warning here... */
00230         if (sid->num_auths > MAXSUBAUTHS)
00231                 sid->num_auths = MAXSUBAUTHS;
00232 
00233         if(!prs_uint32s(False, "sub_auths ", ps, depth, sid->sub_auths, sid->num_auths))
00234                 return False;
00235 
00236         return True;
00237 }

void init_dom_sid2 ( DOM_SID2 sid2,
const DOM_SID sid 
)

parse_misc.c243 行で定義されています。

参照先 dom_sid::num_authsDOM_SID2::num_authsDOM_SID2::sid.

参照元 _lsa_enum_accounts()_samr_query_aliasmem()init_dns_dom_info()init_dom_query_3()init_dom_ref()init_dom_sid2s()init_lsa_q_create_account()init_lsa_q_open_account()init_lsa_q_open_trusted_domain()init_lsa_sid_enum()init_net_user_info3()init_q_add_acct_rights()init_q_enum_acct_rights()init_q_query_trusted_domain_info_by_sid()init_q_remove_acct_rights()init_r_enum_trust_dom()init_samr_q_add_aliasmem()init_samr_q_del_aliasmem()init_samr_q_open_domain()init_samr_q_remove_sid_foreign_domain()init_samr_r_lookup_domain()lookup_lsa_sids().

00244 {
00245         sid2->sid = *sid;
00246         sid2->num_auths = sid2->sid.num_auths;
00247 }

BOOL smb_io_dom_sid2_p ( const char *  desc,
prs_struct ps,
int  depth,
DOM_SID2 **  sid2 
)

parse_misc.c253 行で定義されています。

参照元 lsa_io_domain_list()smb_io_lsa_translated_sids3().

00254 {
00255         uint32 data_p;
00256 
00257         /* caputure the pointer value to stream */
00258 
00259         data_p = *sid2 ? 0xf000baaa : 0;
00260 
00261         if ( !prs_uint32("dom_sid2_p", ps, depth, &data_p ))
00262                 return False;
00263 
00264         /* we're done if there is no data */
00265 
00266         if ( !data_p )
00267                 return True;
00268 
00269         if (UNMARSHALLING(ps)) {
00270                 if ( !(*sid2 = PRS_ALLOC_MEM(ps, DOM_SID2, 1)) )
00271                         return False;
00272         }
00273 
00274         return True;
00275 }

BOOL smb_io_dom_sid2 ( const char *  desc,
DOM_SID2 sid,
prs_struct ps,
int  depth 
)

parse_misc.c280 行で定義されています。

参照先 DOM_SID2::num_authsprs_debug()DOM_SID2::sidsmb_io_dom_sid().

参照元 ds_io_dom_trusts_ctr()lsa_io_dom_query_12()lsa_io_dom_query_3()lsa_io_dom_r_ref()lsa_io_domain_list()lsa_io_q_add_acct_rights()lsa_io_q_create_account()lsa_io_q_enum_acct_rights()lsa_io_q_open_account()lsa_io_q_query_trusted_domain_info_by_sid()lsa_io_q_remove_acct_rights()lsa_io_r_lookup_names3()lsa_io_r_lookup_names4()lsa_io_sid_enum()lsa_io_trustdom_query_6()net_io_sam_policy_info()net_io_sam_privs_info()net_io_sam_trustdoms_info()pac_io_krb_sids()samr_io_q_add_aliasmem()samr_io_q_del_aliasmem()samr_io_q_open_domain()samr_io_q_query_useraliases()samr_io_q_remove_sid_foreign_domain()samr_io_r_lookup_domain().

00281 {
00282         if (sid == NULL)
00283                 return False;
00284 
00285         prs_debug(ps, depth, desc, "smb_io_dom_sid2");
00286         depth++;
00287 
00288         if(!prs_align(ps))
00289                 return False;
00290         
00291         if(!prs_uint32("num_auths", ps, depth, &sid->num_auths))
00292                 return False;
00293 
00294         if(!smb_io_dom_sid("sid", &sid->sid, ps, depth))
00295                 return False;
00296 
00297         return True;
00298 }

BOOL smb_io_uuid ( const char *  desc,
struct GUID uuid,
prs_struct ps,
int  depth 
)

parse_misc.c304 行で定義されています。

参照先 GUID::clock_seqGUID::nodeprs_debug()GUID::time_hi_and_versionGUID::time_lowGUID::time_mid.

参照元 ds_io_domain_trusts()ds_io_dominfobasic()lsa_io_dom_query_12()net_io_q_dsr_getdcname()net_io_q_dsr_getdcnameex()net_io_q_dsr_getdcnameex2()net_io_r_dsr_getdcname()netdfs_io_dfs_Info4_p()sec_io_ace()smb_io_pol_hnd()smb_io_rpc_iface().

00306 {
00307         if (uuid == NULL)
00308                 return False;
00309 
00310         prs_debug(ps, depth, desc, "smb_io_uuid");
00311         depth++;
00312 
00313         if(!prs_uint32 ("data   ", ps, depth, &uuid->time_low))
00314                 return False;
00315         if(!prs_uint16 ("data   ", ps, depth, &uuid->time_mid))
00316                 return False;
00317         if(!prs_uint16 ("data   ", ps, depth, &uuid->time_hi_and_version))
00318                 return False;
00319 
00320         if(!prs_uint8s (False, "data   ", ps, depth, uuid->clock_seq, sizeof(uuid->clock_seq)))
00321                 return False;
00322         if(!prs_uint8s (False, "data   ", ps, depth, uuid->node, sizeof(uuid->node)))
00323                 return False;
00324 
00325         return True;
00326 }

void init_str_hdr ( STRHDR hdr,
int  max_len,
int  len,
uint32  buffer 
)

parse_misc.c332 行で定義されています。

参照先 STRHDR::bufferSTRHDR::str_max_lenSTRHDR::str_str_len.

参照元 init_id_info2()init_sam_entry4()init_sam_entry5().

00333 {
00334         hdr->str_max_len = max_len;
00335         hdr->str_str_len = len;
00336         hdr->buffer      = buffer;
00337 }

BOOL smb_io_strhdr ( const char *  desc,
STRHDR hdr,
prs_struct ps,
int  depth 
)

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

参照先 STRHDR::bufferprs_debug()STRHDR::str_max_lenSTRHDR::str_str_len.

参照元 net_io_id_info2()sam_io_sam_entry4()sam_io_sam_entry5().

00344 {
00345         if (hdr == NULL)
00346                 return False;
00347 
00348         prs_debug(ps, depth, desc, "smb_io_strhdr");
00349         depth++;
00350 
00351         prs_align(ps);
00352         
00353         if(!prs_uint16("str_str_len", ps, depth, &hdr->str_str_len))
00354                 return False;
00355         if(!prs_uint16("str_max_len", ps, depth, &hdr->str_max_len))
00356                 return False;
00357         if(!prs_uint32("buffer     ", ps, depth, &hdr->buffer))
00358                 return False;
00359 
00360         return True;
00361 }

void init_uni_hdr ( UNIHDR hdr,
UNISTR2 str2 
)

parse_misc.c367 行で定義されています。

参照先 UNIHDR::bufferUNISTR2::uni_max_lenUNIHDR::uni_max_lenUNISTR2::uni_str_lenUNIHDR::uni_str_len.

参照元 _lsa_enum_privs()_lsa_priv_get_dispname()_lsa_unk_get_connuser()init_dns_dom_info()init_dom_ref()init_id_info1()init_id_info2()init_lsa_priv_get_dispname()init_lsa_string()init_lsa_trans_name()init_lsa_trans_name2()init_net_user_info3()init_q_lookup_names()init_sam_entry()init_sam_entry1()init_sam_entry2()init_sam_entry3()init_sam_user_info17()init_sam_user_info20A()init_sam_user_info21A()init_sam_user_info21W()init_sam_user_info23A()init_sam_user_info23W()init_sam_user_info7()init_samr_group_info1()init_samr_group_info2()init_samr_group_info4()init_samr_group_info5()init_samr_q_chgpasswd_user()init_samr_q_chgpasswd_user3()init_samr_q_create_dom_alias()init_samr_q_create_dom_group()init_samr_q_create_user()init_samr_q_get_dom_pwinfo()init_samr_q_lookup_domain()init_samr_q_lookup_names()init_unk_info2()init_unk_info4()init_unk_info5()init_unk_info6()make_samr_lookup_rids()netsamlogon_cache_store().

00368 {
00369         hdr->uni_str_len = 2 * (str2->uni_str_len);
00370         hdr->uni_max_len = 2 * (str2->uni_max_len);
00371         hdr->buffer = (str2->uni_str_len != 0) ? 1 : 0;
00372 }

BOOL smb_io_unihdr ( const char *  desc,
UNIHDR hdr,
prs_struct ps,
int  depth 
)

parse_misc.c378 行で定義されています。

参照先 UNIHDR::bufferprs_debug()UNIHDR::uni_max_lenUNIHDR::uni_str_len.

参照元 lsa_io_dom_query_12()lsa_io_dom_r_ref()lsa_io_priv_entries()lsa_io_q_lookup_names()lsa_io_q_lookup_names2()lsa_io_q_lookup_names3()lsa_io_q_lookup_names4()lsa_io_q_priv_get_dispname()lsa_io_r_priv_get_dispname()lsa_io_r_unk_get_connuser()lsa_io_trans_name()lsa_io_trans_name2()lsa_io_trustdom_query_6()net_io_id_info1()net_io_id_info2()net_io_sam_account_info()net_io_sam_alias_info()net_io_sam_domain_info()net_io_sam_group_info()net_io_sam_passwd_info()net_io_sam_policy_info()net_io_sam_privs_info()net_io_sam_trustdoms_info()net_io_user_info3()pac_io_pac_logon_info()sam_io_sam_entry()sam_io_sam_entry1()sam_io_sam_entry2()sam_io_sam_entry3()sam_io_unk_info2()sam_io_unk_info4()sam_io_unk_info5()sam_io_unk_info6()sam_io_user_info17()sam_io_user_info20()sam_io_user_info21()sam_io_user_info23()sam_io_user_info25()sam_io_user_info7()samr_io_group_info1()samr_io_group_info2()samr_io_group_info4()samr_io_group_info5()samr_io_q_chgpasswd_user()samr_io_q_chgpasswd_user3()samr_io_q_create_dom_alias()samr_io_q_create_dom_group()samr_io_q_create_user()samr_io_q_get_dom_pwinfo()samr_io_q_lookup_domain()samr_io_q_lookup_names()samr_io_r_lookup_rids()smb_io_lsa_string().

00379 {
00380         if (hdr == NULL)
00381                 return False;
00382 
00383         prs_debug(ps, depth, desc, "smb_io_unihdr");
00384         depth++;
00385 
00386         if(!prs_align(ps))
00387                 return False;
00388         
00389         if(!prs_uint16("uni_str_len", ps, depth, &hdr->uni_str_len))
00390                 return False;
00391         if(!prs_uint16("uni_max_len", ps, depth, &hdr->uni_max_len))
00392                 return False;
00393         if(!prs_uint32("buffer     ", ps, depth, &hdr->buffer))
00394                 return False;
00395 
00396         return True;
00397 }

void init_buf_hdr ( BUFHDR hdr,
int  max_len,
int  len 
)

parse_misc.c403 行で定義されています。

参照先 BUFHDR::buf_lenBUFHDR::buf_max_len.

参照元 init_reg_q_create_key_ex()init_reg_q_get_key_sec()init_reg_q_set_key_sec()init_reg_r_get_key_sec()smb_io_hdrbuf_post().

00404 {
00405         hdr->buf_max_len = max_len;
00406         hdr->buf_len     = len;
00407 }

BOOL smb_io_hdrbuf_pre ( const char *  desc,
BUFHDR hdr,
prs_struct ps,
int  depth,
uint32 *  offset 
)

parse_misc.c414 行で定義されています。

参照先 _prs_struct::iosmb_io_hdrbuf().

参照元 reg_io_hdrbuf_sec().

00415 {
00416         (*offset) = prs_offset(ps);
00417         if (ps->io) {
00418 
00419                 /* reading. */
00420 
00421                 if(!smb_io_hdrbuf(desc, hdr, ps, depth))
00422                         return False;
00423 
00424         } else {
00425 
00426                 /* writing. */
00427 
00428                 if(!prs_set_offset(ps, prs_offset(ps) + (sizeof(uint32) * 2)))
00429                         return False;
00430         }
00431 
00432         return True;
00433 }

BOOL smb_io_hdrbuf_post ( const char *  desc,
BUFHDR hdr,
prs_struct ps,
int  depth,
uint32  ptr_hdrbuf,
uint32  max_len,
uint32  len 
)

parse_misc.c440 行で定義されています。

参照先 init_buf_hdr()_prs_struct::iosmb_io_hdrbuf().

参照元 reg_io_hdrbuf_sec().

00442 {
00443         if (!ps->io) {
00444                 /* writing: go back and do a retrospective job.  i hate this */
00445 
00446                 uint32 old_offset = prs_offset(ps);
00447 
00448                 init_buf_hdr(hdr, max_len, len);
00449                 if(!prs_set_offset(ps, ptr_hdrbuf))
00450                         return False;
00451                 if(!smb_io_hdrbuf(desc, hdr, ps, depth))
00452                         return False;
00453 
00454                 if(!prs_set_offset(ps, old_offset))
00455                         return False;
00456         }
00457 
00458         return True;
00459 }

BOOL smb_io_hdrbuf ( const char *  desc,
BUFHDR hdr,
prs_struct ps,
int  depth 
)

parse_misc.c465 行で定義されています。

参照先 BUFHDR::buf_lenBUFHDR::buf_max_lenprs_debug().

参照元 reg_io_r_get_key_sec()smb_io_hdrbuf_post()smb_io_hdrbuf_pre().

00466 {
00467         if (hdr == NULL)
00468                 return False;
00469 
00470         prs_debug(ps, depth, desc, "smb_io_hdrbuf");
00471         depth++;
00472 
00473         if(!prs_align(ps))
00474                 return False;
00475         
00476         if(!prs_uint32("buf_max_len", ps, depth, &hdr->buf_max_len))
00477                 return False;
00478         if(!prs_uint32("buf_len    ", ps, depth, &hdr->buf_len))
00479                 return False;
00480 
00481         return True;
00482 }

void init_unistr ( UNISTR str,
const char *  buf 
)

parse_misc.c488 行で定義されています。

参照先 UNISTR::bufferget_talloc_ctx()lenrpcstr_push()smb_panic().

参照元 _spoolss_enumprinterdataex()cmd_spoolss_addprinterex()cmd_spoolss_setdriver()cmd_spoolss_setprinter()cmd_spoolss_setprintername()construct_printer_info_0()construct_printer_info_1()construct_printer_info_2()construct_printer_info_4()construct_printer_info_5()construct_printer_info_7()convert_nt_devicemode()enum_all_printers_info_1_remote()enumerate_status()enumprintmonitors_level_1()enumprintmonitors_level_2()enumprintprocdatatypes_level_1()enumprintprocessors_level_1()fill_driverdir_1()fill_form_1()fill_job_info_1()fill_job_info_2()fill_port_1()fill_port_2()fill_printer_driver_info_1()fill_printer_driver_info_2()fill_printer_driver_info_3()fill_printer_driver_info_6()fill_printprocessordirectory_1()get_driver_3_param()init_service_description_buffer()make_monitorui_buf()rpc_printer_migrate_drivers_internals()rpc_printer_migrate_settings_internals()set_drv_info_3_env()to_struct().

00489 {
00490         size_t len;
00491 
00492         if (buf == NULL) {
00493                 str->buffer = NULL;
00494                 return;
00495         }
00496                 
00497         len = strlen(buf) + 1;
00498 
00499         if (len) {
00500                 str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
00501                 if (str->buffer == NULL)
00502                         smb_panic("init_unistr: malloc fail\n");
00503 
00504                 rpcstr_push(str->buffer, buf, len*sizeof(uint16), STR_TERMINATE);
00505         } else {
00506                 str->buffer = NULL;
00507         }
00508 }

BOOL smb_io_unistr ( const char *  desc,
UNISTR uni,
prs_struct ps,
int  depth 
)

parse_misc.c515 行で定義されています。

参照先 prs_debug().

参照元 smb_io_driverdir_1()smb_io_printprocessordirectory_1()smb_io_relarraystr()smb_io_relstr().

00516 {
00517         if (uni == NULL)
00518                 return False;
00519 
00520         prs_debug(ps, depth, desc, "smb_io_unistr");
00521         depth++;
00522 
00523         if(!prs_unistr("unistr", ps, depth, uni))
00524                 return False;
00525 
00526         return True;
00527 }

static void create_rpc_blob ( RPC_DATA_BLOB str,
size_t  len 
) [static]

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

参照先 RPC_DATA_BLOB::buf_lenRPC_DATA_BLOB::bufferget_talloc_ctx()smb_panic().

参照元 init_rpc_blob_bytes()init_rpc_blob_hex()init_rpc_blob_str()init_rpc_blob_uint32().

00534 {
00535         if (len) {
00536                 str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(), len);
00537                 if (str->buffer == NULL)
00538                         smb_panic("create_rpc_blob: talloc fail\n");
00539                 str->buf_len = len;
00540         } else {
00541                 str->buffer = NULL;
00542                 str->buf_len = 0;
00543         }
00544 }

void init_rpc_blob_uint32 ( RPC_DATA_BLOB str,
uint32  val 
)

parse_misc.c550 行で定義されています。

参照先 RPC_DATA_BLOB::buffercreate_rpc_blob().

参照元 cac_MakeRpcDataBlob().

00551 {
00552         ZERO_STRUCTP(str);
00553 
00554         /* set up string lengths. */
00555         create_rpc_blob(str, sizeof(uint32));
00556         SIVAL(str->buffer, 0, val);
00557 }

void init_rpc_blob_str ( RPC_DATA_BLOB str,
const char *  buf,
int  len 
)

parse_misc.c563 行で定義されています。

参照先 create_rpc_blob()rpcstr_push().

参照元 cac_MakeRpcDataBlob().

00564 {
00565         ZERO_STRUCTP(str);
00566 
00567         /* set up string lengths. */
00568         if (len) {
00569                 create_rpc_blob(str, len*2);
00570                 rpcstr_push(str->buffer, buf, (size_t)str->buf_len, STR_TERMINATE);
00571         }
00572 }

void init_rpc_blob_hex ( RPC_DATA_BLOB str,
const char *  buf 
)

parse_misc.c578 行で定義されています。

参照先 create_rpc_blob()strhex_to_str().

00579 {
00580         ZERO_STRUCTP(str);
00581         if (buf && *buf) {
00582                 create_rpc_blob(str, strlen(buf));
00583                 str->buf_len = strhex_to_str((char *)str->buffer, str->buf_len, buf);
00584         }
00585 }

void init_rpc_blob_bytes ( RPC_DATA_BLOB str,
uint8 *  buf,
size_t  len 
)

parse_misc.c591 行で定義されています。

参照先 RPC_DATA_BLOB::buf_lencreate_rpc_blob().

参照元 cac_MakeRpcDataBlob().

00592 {
00593         ZERO_STRUCTP(str);
00594 
00595         /* max buffer size (allocated size) */
00596         if (buf != NULL && len) {
00597                 create_rpc_blob(str, len);
00598                 memcpy(str->buffer, buf, len);
00599         }
00600         str->buf_len = len;
00601 }

BOOL smb_io_buffer5 ( const char *  desc,
BUFFER5 buf5,
prs_struct ps,
int  depth 
)

parse_misc.c607 行で定義されています。

参照先 BUFFER5::buf_lenprs_debug().

参照元 spool_io_printer_driver_info_level_3()spool_io_printer_driver_info_level_6()spoolss_io_r_enumprinterkey().

00608 {
00609         prs_debug(ps, depth, desc, "smb_io_buffer5");
00610         depth++;
00611 
00612         if (buf5 == NULL) return False;
00613 
00614         if(!prs_align(ps))
00615                 return False;
00616         if(!prs_uint32("buf_len", ps, depth, &buf5->buf_len))
00617                 return False;
00618 
00619         if(buf5->buf_len) {
00620                 if(!prs_buffer5(True, "buffer" , ps, depth, buf5))
00621                         return False;
00622         }
00623 
00624         return True;
00625 }

void init_regval_buffer ( REGVAL_BUFFER str,
const uint8 *  buf,
size_t  len 
)

parse_misc.c631 行で定義されています。

参照先 REGVAL_BUFFER::buf_lenREGVAL_BUFFER::buf_max_lenREGVAL_BUFFER::bufferget_talloc_ctx()REGVAL_BUFFER::offsetsmb_panic().

参照元 reg_init_regval_buffer().

00632 {
00633         ZERO_STRUCTP(str);
00634 
00635         /* max buffer size (allocated size) */
00636         str->buf_max_len = len;
00637         str->offset = 0;
00638         str->buf_len = buf != NULL ? len : 0;
00639 
00640         if (buf != NULL) {
00641                 SMB_ASSERT(str->buf_max_len >= str->buf_len);
00642                 str->buffer = (uint16 *)TALLOC_ZERO(get_talloc_ctx(),
00643                                                     str->buf_max_len);
00644                 if (str->buffer == NULL)
00645                         smb_panic("init_regval_buffer: talloc fail\n");
00646                 memcpy(str->buffer, buf, str->buf_len);
00647         }
00648 }

BOOL smb_io_regval_buffer ( const char *  desc,
prs_struct ps,
int  depth,
REGVAL_BUFFER buf2 
)

parse_misc.c656 行で定義されています。

参照先 REGVAL_BUFFER::buf_lenREGVAL_BUFFER::buf_max_lenREGVAL_BUFFER::offsetprs_debug().

参照元 ntsvcs_io_r_get_device_reg_property()reg_io_q_enum_val()reg_io_r_enum_val()reg_io_r_query_value().

00657 {
00658 
00659         prs_debug(ps, depth, desc, "smb_io_regval_buffer");
00660         depth++;
00661 
00662         if(!prs_align(ps))
00663                 return False;
00664                 
00665         if(!prs_uint32("buf_max_len", ps, depth, &buf2->buf_max_len))
00666                 return False;
00667         if(!prs_uint32("offset     ", ps, depth, &buf2->offset))
00668                 return False;
00669         if(!prs_uint32("buf_len    ", ps, depth, &buf2->buf_len))
00670                 return False;
00671 
00672         /* buffer advanced by indicated length of string
00673            NOT by searching for null-termination */
00674 
00675         if(!prs_regval_buffer(True, "buffer     ", ps, depth, buf2))
00676                 return False;
00677 
00678         return True;
00679 }

void init_buf_unistr2 ( UNISTR2 str,
uint32 *  ptr,
const char *  buf 
)

parse_misc.c685 行で定義されています。

参照先 init_unistr2()UNI_FLAGS_NONEUNI_STR_TERMINATE.

参照元 init_srv_info_100()init_srv_info_101()init_srv_info_102()init_srv_q_net_conn_enum()init_srv_q_net_disk_enum()init_srv_q_net_file_enum()init_srv_q_net_sess_del()init_srv_q_net_share_enum()init_srv_q_net_share_get_info()init_srv_q_net_share_set_info()init_srv_q_net_srv_get_info()make_spoolss_q_enumports()make_spoolss_q_enumprinterdrivers()make_spoolss_q_enumprinters()make_spoolss_q_getprinterdriver2()make_spoolss_q_getprinterdriverdir().

00686 {
00687         if (buf != NULL) {
00688                 *ptr = 1;
00689                 init_unistr2(str, buf, UNI_STR_TERMINATE);
00690         } else {
00691                 *ptr = 0;
00692                 init_unistr2(str, NULL, UNI_FLAGS_NONE);
00693 
00694         }
00695 }

void copy_unistr2 ( UNISTR2 str,
const UNISTR2 from 
)

parse_misc.c701 行で定義されています。

参照先 UNISTR2::bufferfromget_talloc_ctx()UNISTR2::offsetsmb_panic()UNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 _spoolss_addprinterdriverex()convert_to_openprinterex()copy_printer_default()init_sam_user_info21W()init_sam_user_info23W()make_user_sam_entry_list()rpccli_svcctl_query_config().

00702 {
00703         if (from->buffer == NULL) {
00704                 ZERO_STRUCTP(str);
00705                 return;
00706         }
00707 
00708         SMB_ASSERT(from->uni_max_len >= from->uni_str_len);
00709 
00710         str->uni_max_len = from->uni_max_len;
00711         str->offset      = from->offset;
00712         str->uni_str_len = from->uni_str_len;
00713 
00714         /* the string buffer is allocated to the maximum size
00715            (the the length of the source string) to prevent
00716            reallocation of memory. */
00717         if (str->buffer == NULL) {
00718                 if (str->uni_max_len) {
00719                         str->buffer = (uint16 *)TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, str->uni_max_len);
00720                         if ((str->buffer == NULL)) {
00721                                 smb_panic("copy_unistr2: talloc fail\n");
00722                                 return;
00723                         }
00724                         /* copy the string */
00725                         memcpy(str->buffer, from->buffer, str->uni_max_len*sizeof(uint16));
00726                 } else {
00727                         str->buffer = NULL;
00728                 }
00729         }
00730 }

void init_string2 ( STRING2 str,
const char *  buf,
size_t  max_len,
size_t  str_len 
)

parse_misc.c736 行で定義されています。

参照先 STRING2::bufferget_talloc_ctx()STRING2::offsetsmb_panic()STRING2::str_max_lenSTRING2::str_str_len.

参照元 init_id_info2()init_sam_dispinfo_4()init_sam_dispinfo_5().

00737 {
00738         /* set up string lengths. */
00739         SMB_ASSERT(max_len >= str_len);
00740 
00741         /* Ensure buf is valid if str_len was set. Coverity check. */
00742         if (str_len && !buf) {
00743                 return;
00744         }
00745 
00746         str->str_max_len = max_len;
00747         str->offset = 0;
00748         str->str_str_len = str_len;
00749 
00750         /* store the string */
00751         if(str_len != 0) {
00752                 str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(),
00753                                                    str->str_max_len);
00754                 if (str->buffer == NULL)
00755                         smb_panic("init_string2: malloc fail\n");
00756                 memcpy(str->buffer, buf, str_len);
00757         }
00758 }

BOOL smb_io_string2 ( const char *  desc,
STRING2 str2,
uint32  buffer,
prs_struct ps,
int  depth 
)

parse_misc.c767 行で定義されています。

参照先 STRING2::offsetprs_debug()STRING2::str_max_lenSTRING2::str_str_len.

参照元 net_io_id_info2()sam_io_sam_dispinfo_4()sam_io_sam_dispinfo_5().

00768 {
00769         if (str2 == NULL)
00770                 return False;
00771 
00772         if (buffer) {
00773 
00774                 prs_debug(ps, depth, desc, "smb_io_string2");
00775                 depth++;
00776 
00777                 if(!prs_align(ps))
00778                         return False;
00779                 
00780                 if(!prs_uint32("str_max_len", ps, depth, &str2->str_max_len))
00781                         return False;
00782                 if(!prs_uint32("offset     ", ps, depth, &str2->offset))
00783                         return False;
00784                 if(!prs_uint32("str_str_len", ps, depth, &str2->str_str_len))
00785                         return False;
00786 
00787                 /* buffer advanced by indicated length of string
00788                    NOT by searching for null-termination */
00789                 if(!prs_string2(True, "buffer     ", ps, depth, str2))
00790                         return False;
00791 
00792         } else {
00793 
00794                 prs_debug(ps, depth, desc, "smb_io_string2 - NULL");
00795                 depth++;
00796                 memset((char *)str2, '\0', sizeof(*str2));
00797 
00798         }
00799 
00800         return True;
00801 }

void init_unistr2 ( UNISTR2 str,
const char *  buf,
enum unistr2_term_codes  flags 
)

parse_misc.c807 行で定義されています。

参照先 UNISTR2::bufferget_talloc_ctx()lenUNISTR2::offsetrpcstr_push()smb_panic()strlen_w()UNI_BROKEN_NON_NULLUNISTR2::uni_max_lenUNI_MAXLEN_TERMINATEUNI_STR_DBLTERMINATEUNISTR2::uni_str_lenUNI_STR_TERMINATE.

参照元 _lsa_enum_privs()_lsa_priv_get_dispname()_lsa_unk_get_connuser()_ntsvcs_get_device_list()_reg_perfcount_multi_sz_from_tdb()cac_MakeUserInfoCtr()cmd_spoolss_addform()cmd_spoolss_setform()cmd_spoolss_setprinterdata()cmd_srvsvc_net_share_set_info()eventlog_add_source()eventlog_init_keys()fill_dsrole_dominfo_basic()fill_in_driver_values()fill_in_printer_values()fill_service_values()fill_svc_config()get_share_info()init_buf_unistr2()init_clnt_srv()init_dns_dom_info()init_dom_query_3()init_dom_ref()init_id_info1()init_id_info2()init_log_info()init_lsa_priv_get_dispname()init_lsa_string()init_lsa_trans_name()init_lsa_trans_name2()init_net_q_dsr_getdcname()init_net_q_dsr_getdcnameex()init_net_q_dsr_getdcnameex2()init_net_q_dsr_getsitename()init_net_q_getanydcname()init_net_q_logon_ctrl()init_net_q_logon_ctrl2()init_net_q_sam_deltas()init_net_q_sam_sync()init_net_r_dsr_getdcname()init_net_r_getanydcname()init_net_user_info3()init_netdfs_dfs_Info1()init_netdfs_dfs_Info100()init_netdfs_dfs_Info2()init_netdfs_dfs_Info200()init_netdfs_dfs_Info3()init_netdfs_dfs_Info300()init_netdfs_dfs_Info4()init_netdfs_dfs_StorageInfo()init_netdfs_q_dfs_Add()init_netdfs_q_dfs_GetInfo()init_netdfs_q_dfs_Remove()init_netinfo_2()init_q_ds_enum_domain_trusts()init_q_lookup_names()init_q_open_pol2()init_q_req_chal()init_r_trust_dom()init_registry_data()init_reply_dfs_info_1()init_reply_dfs_info_100()init_reply_dfs_info_2()init_reply_dfs_info_3()init_sam_dispinfo_1()init_sam_dispinfo_2()init_sam_dispinfo_3()init_sam_user_info17()init_sam_user_info21A()init_sam_user_info23A()init_sam_user_info7()init_samr_group_info1()init_samr_group_info2()init_samr_group_info4()init_samr_group_info5()init_samr_q_chgpasswd_user()init_samr_q_chgpasswd_user3()init_samr_q_connect()init_samr_q_connect4()init_samr_q_connect5()init_samr_q_create_dom_alias()init_samr_q_create_dom_group()init_samr_q_create_user()init_samr_q_get_dom_pwinfo()init_samr_q_lookup_domain()init_samr_q_lookup_names()init_srv_conn_info1_str()init_srv_file_info3()init_srv_q_net_file_close()init_srv_q_net_remote_tod()init_srv_q_net_share_add()init_srv_q_net_share_del()init_srv_sess_info0()init_srv_sess_info1()init_srv_share_info0_str()init_srv_share_info1004_str()init_srv_share_info1007_str()init_srv_share_info1_str()init_srv_share_info2_str()init_srv_share_info501_str()init_srv_share_info502_str()init_svcctl_r_get_display_name()init_unistr2_from_datablob()init_unistr4()init_unk_info2()init_unk_info4()init_unk_info5()init_unk_info6()make_enum_domains()make_group_sam_entry_list()make_samr_lookup_rids()make_spoolss_q_addprinterdriver()make_spoolss_q_addprinterex()make_spoolss_q_deleteform()make_spoolss_q_deleteprinterdata()make_spoolss_q_deleteprinterdataex()make_spoolss_q_deleteprinterdriver()make_spoolss_q_deleteprinterdriverex()make_spoolss_q_deleteprinterkey()make_spoolss_q_enumprinterdataex()make_spoolss_q_enumprinterkey()make_spoolss_q_getform()make_spoolss_q_getprinterdata()make_spoolss_q_getprinterdataex()make_spoolss_q_getprintprocessordirectory()make_spoolss_q_open_printer_ex()make_spoolss_q_replyopenprinter()make_spoolss_q_rffpcnex()make_spoolss_q_setform()make_spoolss_q_setprinterdata()make_spoolss_q_setprinterdataex()make_spoolss_q_startdocprinter()make_user_sam_entry_list()netsamlogon_cache_store()notify_string()py_to_FORM()regval_build_multi_sz()rpc_printer_migrate_forms_internals()rpc_printer_migrate_settings_internals()rpccli_srvsvc_net_file_enum()rpccli_srvsvc_net_share_enum()rpccli_srvsvc_net_share_get_info()rpccli_svcctl_open_scm()rpccli_svcctl_open_service()spoolss_hnd_addform()store_printer_guid()unpack_values()update_printer().

00808 {
00809         size_t len = 0;
00810         uint32 num_chars = 0;
00811 
00812         if (buf) {
00813                 /* We always null terminate the copy. */
00814                 len = strlen(buf) + 1;
00815                 if ( flags == UNI_STR_DBLTERMINATE )
00816                         len++;
00817         }
00818 
00819         if (buf == NULL || len == 0) {
00820                 /* no buffer -- nothing to do */
00821                 str->uni_max_len = 0;
00822                 str->offset = 0;
00823                 str->uni_str_len = 0;
00824 
00825                 return;
00826         }
00827         
00828 
00829         str->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, len);
00830         if (str->buffer == NULL) {
00831                 smb_panic("init_unistr2: malloc fail\n");
00832                 return;
00833         }
00834 
00835         /* Ensure len is the length in *bytes* */
00836         len *= sizeof(uint16);
00837 
00838         /*
00839          * The UNISTR2 must be initialized !!!
00840          * jfm, 7/7/2001.
00841          */
00842         if (buf) {
00843                 rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE);
00844                 num_chars = strlen_w(str->buffer);
00845                 if (flags == UNI_STR_TERMINATE || flags == UNI_MAXLEN_TERMINATE) {
00846                         num_chars++;
00847                 }
00848                 if ( flags == UNI_STR_DBLTERMINATE )
00849                         num_chars += 2;
00850         }
00851 
00852         str->uni_max_len = num_chars;
00853         str->offset = 0;
00854         str->uni_str_len = num_chars;
00855         if ( num_chars && ((flags == UNI_MAXLEN_TERMINATE) || (flags == UNI_BROKEN_NON_NULL)) )
00856                 str->uni_max_len++;
00857 }

void init_unistr4 ( UNISTR4 uni4,
const char *  buf,
enum unistr2_term_codes  flags 
)

parse_misc.c863 行で定義されています。

参照先 get_talloc_ctx()init_unistr2()UNISTR4::lengthUNISTR4::sizesmb_panic()UNISTR4::stringUNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 init_q_reg_save_key()init_reg_q_create_key_ex()init_reg_q_delete_key()init_reg_q_delete_val()init_reg_q_open_entry()init_reg_q_query_key()init_reg_q_query_value()init_reg_q_set_val()init_reg_q_shutdown()init_reg_r_enum_key()init_reg_r_enum_val()init_samr_alias_info1()init_samr_alias_info3()init_shutdown_q_init()init_unistr4_array().

00864 {
00865         uni4->string = TALLOC_P( get_talloc_ctx(), UNISTR2 );
00866         if (!uni4->string) {
00867                 smb_panic("init_unistr4: talloc fail\n");
00868                 return;
00869         }
00870         init_unistr2( uni4->string, buf, flags );
00871 
00872         uni4->length = 2 * (uni4->string->uni_str_len);
00873         uni4->size   = 2 * (uni4->string->uni_max_len);
00874 }

void init_unistr4_w ( TALLOC_CTX ctx,
UNISTR4 uni4,
const smb_ucs2_t buf 
)

parse_misc.c876 行で定義されています。

参照先 init_unistr2_w()UNISTR4::lengthUNISTR4::sizesmb_panic()UNISTR4::stringUNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 init_r_enum_trust_dom().

00877 {
00878         uni4->string = TALLOC_P( ctx, UNISTR2 );
00879         if (!uni4->string) {
00880                 smb_panic("init_unistr4_w: talloc fail\n");
00881                 return;
00882         }
00883         init_unistr2_w( ctx, uni4->string, buf );
00884 
00885         uni4->length = 2 * (uni4->string->uni_str_len);
00886         uni4->size   = 2 * (uni4->string->uni_max_len);
00887 }

void init_unistr2_w ( TALLOC_CTX ctx,
UNISTR2 str,
const smb_ucs2_t buf 
)

Inits a UNISTR2 structure.

引数:
ctx talloc context to allocate string on
str pointer to string to create
buf UCS2 null-terminated buffer to init from

parse_misc.c896 行で定義されています。

参照先 UNISTR2::bufferlenUNISTR2::offsetsmb_panic()strlen_w()strncpy_w()UNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 init_unistr4_w().

00897 {
00898         uint32 len = buf ? strlen_w(buf) : 0;
00899 
00900         ZERO_STRUCTP(str);
00901 
00902         /* set up string lengths. */
00903         str->uni_max_len = len;
00904         str->offset = 0;
00905         str->uni_str_len = len;
00906 
00907         if (len + 1) {
00908                 str->buffer = TALLOC_ZERO_ARRAY(ctx, uint16, len + 1);
00909                 if (str->buffer == NULL) {
00910                         smb_panic("init_unistr2_w: talloc fail\n");
00911                         return;
00912                 }
00913         } else {
00914                 str->buffer = NULL;
00915         }
00916         
00917         /*
00918          * don't move this test above ! The UNISTR2 must be initialized !!!
00919          * jfm, 7/7/2001.
00920          */
00921         if (buf==NULL)
00922                 return;
00923         
00924         /* Yes, this is a strncpy( foo, bar, strlen(bar)) - but as
00925            long as the buffer above is talloc()ed correctly then this
00926            is the correct thing to do */
00927         if (len+1) {
00928                 strncpy_w(str->buffer, buf, len + 1);
00929         }
00930 }

void init_unistr2_from_unistr ( UNISTR2 to,
const UNISTR from 
)

parse_misc.c936 行で定義されています。

参照先 fromget_talloc_ctx()smb_panic()to.

参照元 make_spoolss_driver_info_3()make_spoolss_printer_info_2()make_spoolss_printer_info_7().

00937 {
00938         uint32 i;
00939 
00940         /* the destination UNISTR2 should never be NULL.
00941            if it is it is a programming error */
00942 
00943         /* if the source UNISTR is NULL, then zero out
00944            the destination string and return */
00945         ZERO_STRUCTP (to);
00946         if ((from == NULL) || (from->buffer == NULL))
00947                 return;
00948 
00949         /* get the length; UNISTR must be NULL terminated */
00950         i = 0;
00951         while ((from->buffer)[i]!='\0')
00952                 i++;
00953         i++;    /* one more to catch the terminating NULL */
00954                 /* is this necessary -- jerry?  I need to think */
00955 
00956         /* set up string lengths; uni_max_len is set to i+1
00957            because we need to account for the final NULL termination */
00958         to->uni_max_len = i;
00959         to->offset = 0;
00960         to->uni_str_len = i;
00961 
00962         /* allocate the space and copy the string buffer */
00963         if (i) {
00964                 to->buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, i);
00965                 if (to->buffer == NULL)
00966                         smb_panic("init_unistr2_from_unistr: malloc fail\n");
00967                 memcpy(to->buffer, from->buffer, i*sizeof(uint16));
00968         } else {
00969                 to->buffer = NULL;
00970         }
00971         return;
00972 }

void init_unistr2_from_datablob ( UNISTR2 str,
DATA_BLOB blob 
)

parse_misc.c980 行で定義されています。

参照先 UNISTR2::bufferdata_blob_::datainit_unistr2()data_blob_::lengthmemdup()UNISTR2::offsetsmb_panic()UNI_FLAGS_NONEUNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 init_sam_user_info20A()init_sam_user_info21A()init_sam_user_info23A().

00981 {
00982         /* Allocs the unistring */
00983         init_unistr2(str, NULL, UNI_FLAGS_NONE);
00984         
00985         /* Sets the values */
00986         str->uni_str_len = blob->length / sizeof(uint16);
00987         str->uni_max_len = str->uni_str_len;
00988         str->offset = 0;
00989         if (blob->length) {
00990                 str->buffer = (uint16 *) memdup(blob->data, blob->length);
00991         } else {
00992                 str->buffer = NULL;
00993         }
00994         if ((str->buffer == NULL) && (blob->length > 0)) {
00995                 smb_panic("init_unistr2_from_datablob: malloc fail\n");
00996         }
00997 }

BOOL prs_io_unistr2_p ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR2 **  uni2 
)

parse_misc.c1006 行で定義されています。

参照元 lsa_io_data_blob()prs_unistr4_hdr()spool_io_user_level_1()spoolss_io_q_addprinterex()spoolss_io_q_open_printer()spoolss_io_q_open_printer_ex()srv_io_srv_sess_info_0()srv_io_srv_sess_info_1()svcctl_io_service_config().

01007 {
01008         uint32 data_p;
01009 
01010         /* caputure the pointer value to stream */
01011 
01012         data_p = *uni2 ? 0xf000baaa : 0;
01013 
01014         if ( !prs_uint32("ptr", ps, depth, &data_p ))
01015                 return False;
01016 
01017         /* we're done if there is no data */
01018 
01019         if ( !data_p )
01020                 return True;
01021 
01022         if (UNMARSHALLING(ps)) {
01023                 if ( !(*uni2 = PRS_ALLOC_MEM(ps, UNISTR2, 1)) )
01024                         return False;
01025         }
01026 
01027         return True;
01028 }

BOOL prs_io_unistr2 ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR2 uni2 
)

parse_misc.c1035 行で定義されています。

参照先 smb_io_unistr2().

参照元 ntsvcs_io_q_get_device_list()ntsvcs_io_q_get_device_list_size()ntsvcs_io_q_get_device_reg_property()ntsvcs_io_q_hw_profile_flags()ntsvcs_io_q_validate_device_instance()ntsvcs_io_r_get_device_list()prs_unistr4()prs_unistr4_str()spool_io_user_level_1()spoolss_io_q_addprinterex()spoolss_io_q_open_printer()spoolss_io_q_open_printer_ex()srv_io_q_net_file_close()srv_io_q_net_file_enum()srv_io_q_net_name_validate()srv_io_q_net_sess_enum()srv_io_srv_sess_info_0()srv_io_srv_sess_info_1()svcctl_io_q_open_scmanager()svcctl_io_service_config()svcctl_io_service_fa().

01036 {
01037         /* just return true if there is no pointer to deal with.
01038            the memory must have been previously allocated on unmarshalling
01039            by prs_unistr2_p() */
01040 
01041         if ( !uni2 )
01042                 return True;
01043 
01044         /* just pass off to smb_io_unstr2() passing the uni2 address as 
01045            the pointer (like you would expect) */
01046 
01047         return smb_io_unistr2( desc, uni2, uni2 ? 1 : 0, ps, depth );
01048 }

BOOL smb_io_unistr2 ( const char *  desc,
UNISTR2 uni2,
uint32  buffer,
prs_struct ps,
int  depth 
)

parse_misc.c1057 行で定義されています。

参照先 UNISTR2::offsetprs_debug()UNISTR2::uni_max_lenUNISTR2::uni_str_len.

参照元 ds_io_dom_trusts_ctr()ds_io_dominfobasic()ds_io_q_enum_domain_trusts()lsa_io_dom_query_12()lsa_io_dom_query_3()lsa_io_dom_r_ref()lsa_io_priv_entries()lsa_io_q_lookup_names()lsa_io_q_lookup_names2()lsa_io_q_lookup_names3()lsa_io_q_lookup_names4()lsa_io_q_open_pol2()lsa_io_q_priv_get_dispname()lsa_io_q_unk_get_connuser()lsa_io_r_priv_get_dispname()lsa_io_r_unk_get_connuser()lsa_io_trans_names()lsa_io_trans_names2()lsa_io_trustdom_query_6()net_io_ctrl_data_info_5()net_io_ctrl_data_info_6()net_io_id_info1()net_io_id_info2()net_io_netinfo_2()net_io_q_dsr_getdcname()net_io_q_dsr_getdcnameex()net_io_q_dsr_getdcnameex2()net_io_q_dsr_getsitename()net_io_q_getanydcname()net_io_q_logon_ctrl()net_io_q_logon_ctrl2()net_io_q_req_chal()net_io_q_sam_deltas()net_io_q_sam_sync()net_io_q_trust_dom()net_io_r_dsr_getdcname()net_io_r_dsr_getsitename()net_io_r_getanydcname()net_io_r_trust_dom()net_io_sam_account_info()net_io_sam_alias_info()net_io_sam_domain_info()net_io_sam_group_info()net_io_sam_policy_info()net_io_sam_secret_info()net_io_sam_trustdoms_info()net_io_user_info3()netdfs_io_dfs_Info100_d()netdfs_io_dfs_Info1_d()netdfs_io_dfs_Info200_d()netdfs_io_dfs_Info2_d()netdfs_io_dfs_Info300_d()netdfs_io_dfs_Info3_d()netdfs_io_dfs_Info4_d()netdfs_io_dfs_StorageInfo_d()netdfs_io_q_dfs_Add()netdfs_io_q_dfs_GetInfo()netdfs_io_q_dfs_Remove()pac_io_pac_logon_info()prs_io_unistr2()sam_io_sam_str1()sam_io_sam_str2()sam_io_sam_str3()sam_io_unk_info2()sam_io_unk_info4()sam_io_unk_info5()sam_io_unk_info6()sam_io_user_info17()sam_io_user_info20()sam_io_user_info21()sam_io_user_info23()sam_io_user_info25()sam_io_user_info7()samr_io_group_info1()samr_io_group_info2()samr_io_group_info4()samr_io_group_info5()samr_io_q_chgpasswd_user()samr_io_q_chgpasswd_user3()samr_io_q_connect()samr_io_q_connect4()samr_io_q_connect5()samr_io_q_create_dom_alias()samr_io_q_create_dom_group()samr_io_q_create_user()samr_io_q_get_dom_pwinfo()samr_io_q_lookup_domain()samr_io_q_lookup_names()samr_io_r_enum_dom_aliases()samr_io_r_enum_dom_groups()samr_io_r_enum_dom_users()samr_io_r_enum_domains()samr_io_r_lookup_rids()smb_io_clnt_srv()smb_io_doc_info_1()smb_io_log_info()smb_io_lsa_string()spool_io_printer_driver_info_level_3()spool_io_printer_driver_info_level_6()spool_io_printer_info_level_1()spool_io_printer_info_level_2()spool_io_printer_info_level_7()spoolss_io_addform()spoolss_io_printer_default()spoolss_io_q_addprinterdriver()spoolss_io_q_addprinterdriverex()spoolss_io_q_addprintprocessor()spoolss_io_q_deleteform()spoolss_io_q_deleteprinterdata()spoolss_io_q_deleteprinterdataex()spoolss_io_q_deleteprinterdriver()spoolss_io_q_deleteprinterdriverex()spoolss_io_q_deleteprinterkey()spoolss_io_q_enumports()spoolss_io_q_enumprinterdataex()spoolss_io_q_enumprinterdrivers()spoolss_io_q_enumprinterkey()spoolss_io_q_enumprinters()spoolss_io_q_enumprintmonitors()spoolss_io_q_enumprintprocdatatypes()spoolss_io_q_enumprintprocessors()spoolss_io_q_getform()spoolss_io_q_getprinterdata()spoolss_io_q_getprinterdataex()spoolss_io_q_getprinterdriver2()spoolss_io_q_getprinterdriverdir()spoolss_io_q_getprintprocessordirectory()spoolss_io_q_replyopenprinter()spoolss_io_q_resetprinter()spoolss_io_q_rffpcnex()spoolss_io_q_setform()spoolss_io_q_setprinterdata()spoolss_io_q_setprinterdataex()spoolss_io_q_xcvdataport()srv_io_conn_info1_str()srv_io_file_info3_str()srv_io_info_100()srv_io_info_101()srv_io_info_102()srv_io_q_net_conn_enum()srv_io_q_net_disk_enum()srv_io_q_net_file_query_secdesc()srv_io_q_net_file_set_secdesc()srv_io_q_net_name_validate()srv_io_q_net_remote_tod()srv_io_q_net_sess_del()srv_io_q_net_share_add()srv_io_q_net_share_del()srv_io_q_net_share_enum()srv_io_q_net_share_get_info()srv_io_q_net_share_set_info()srv_io_q_net_srv_get_info()srv_io_q_net_srv_set_info()srv_io_share_info0_str()srv_io_share_info1004_str()srv_io_share_info1007_str()srv_io_share_info1_str()srv_io_share_info2_str()srv_io_share_info501_str()srv_io_share_info502_str()svcctl_io_q_get_display_name()svcctl_io_q_open_service()svcctl_io_r_get_display_name().

01058 {
01059         if (uni2 == NULL)
01060                 return False;
01061 
01062         if (buffer) {
01063 
01064                 prs_debug(ps, depth, desc, "smb_io_unistr2");
01065                 depth++;
01066 
01067                 if(!prs_align(ps))
01068                         return False;
01069                 
01070                 if(!prs_uint32("uni_max_len", ps, depth, &uni2->uni_max_len))
01071                         return False;
01072                 if(!prs_uint32("offset     ", ps, depth, &uni2->offset))
01073                         return False;
01074                 if(!prs_uint32("uni_str_len", ps, depth, &uni2->uni_str_len))
01075                         return False;
01076 
01077                 /* buffer advanced by indicated length of string
01078                    NOT by searching for null-termination */
01079                 if(!prs_unistr2(True, "buffer     ", ps, depth, uni2))
01080                         return False;
01081 
01082         } else {
01083 
01084                 prs_debug(ps, depth, desc, "smb_io_unistr2 - NULL");
01085                 depth++;
01086                 memset((char *)uni2, '\0', sizeof(*uni2));
01087 
01088         }
01089 
01090         return True;
01091 }

BOOL prs_unistr4 ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR4 uni4 
)

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

参照先 UNISTR4::lengthprs_debug()prs_io_unistr2()UNISTR4::sizeUNISTR4::string.

参照元 eventlog_io_q_clear_eventlog()eventlog_io_q_open_eventlog()lsa_io_q_create_secret()lsa_io_q_create_trusted_domain()lsa_io_q_open_secret()reg_io_q_create_key_ex()reg_io_q_delete_key()reg_io_q_delete_value()reg_io_q_enum_val()reg_io_q_open_entry()reg_io_q_query_key()reg_io_q_query_value()reg_io_q_restore_key()reg_io_q_save_key()reg_io_q_set_value()reg_io_q_shutdown()reg_io_q_shutdown_ex()reg_io_r_enum_key()reg_io_r_enum_val()reg_io_r_query_key()samr_io_alias_info2()samr_io_alias_info3()shutdown_io_q_init()shutdown_io_q_init_ex().

01098 {
01099         void *ptr;
01100         prs_debug(ps, depth, desc, "prs_unistr4");
01101         depth++;
01102 
01103         if ( !prs_uint16("length", ps, depth, &uni4->length ))
01104                 return False;
01105         if ( !prs_uint16("size", ps, depth, &uni4->size ))
01106                 return False;
01107                 
01108         ptr = uni4->string;
01109 
01110         if ( !prs_pointer( desc, ps, depth, &ptr, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2 ) )
01111                 return False;
01112 
01113         uni4->string = (UNISTR2 *)ptr;
01114         
01115         return True;
01116 }

BOOL prs_unistr4_hdr ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR4 uni4 
)

parse_misc.c1122 行で定義されています。

参照先 UNISTR4::lengthprs_debug()prs_io_unistr2_p()UNISTR4::sizeUNISTR4::string.

参照元 lsa_io_domain_list()prs_unistr4_array()samr_io_alias_info1().

01123 {
01124         prs_debug(ps, depth, desc, "prs_unistr4_hdr");
01125         depth++;
01126 
01127         if ( !prs_uint16("length", ps, depth, &uni4->length) )
01128                 return False;
01129         if ( !prs_uint16("size", ps, depth, &uni4->size) )
01130                 return False;
01131         if ( !prs_io_unistr2_p(desc, ps, depth, &uni4->string) )
01132                 return False;
01133                 
01134         return True;
01135 }

BOOL prs_unistr4_str ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR4 uni4 
)

parse_misc.c1141 行で定義されています。

参照先 prs_debug()prs_io_unistr2()UNISTR4::string.

参照元 lsa_io_domain_list()prs_unistr4_array()samr_io_alias_info1().

01142 {
01143         prs_debug(ps, depth, desc, "prs_unistr4_str");
01144         depth++;
01145 
01146         if ( !prs_io_unistr2(desc, ps, depth, uni4->string) )
01147                 return False;
01148                 
01149         return True;
01150 }

BOOL prs_unistr4_array ( const char *  desc,
prs_struct ps,
int  depth,
UNISTR4_ARRAY array 
)

parse_misc.c1156 行で定義されています。

参照先 UNISTR4_ARRAY::countget_talloc_ctx()prs_debug()prs_unistr4_hdr()prs_unistr4_str()UNISTR4_ARRAY::strings.

参照元 lsa_io_q_add_acct_rights()lsa_io_q_remove_acct_rights()lsa_io_r_enum_acct_rights()svcctl_io_q_start_service().

01157 {
01158         unsigned int i;
01159 
01160         prs_debug(ps, depth, desc, "prs_unistr4_array");
01161         depth++;
01162 
01163         if(!prs_uint32("count", ps, depth, &array->count))
01164                 return False;
01165 
01166         if (UNMARSHALLING(ps)) {
01167                 if (array->count) {
01168                         if ( !(array->strings = TALLOC_ZERO_ARRAY( get_talloc_ctx(), UNISTR4, array->count)) )
01169                                 return False;
01170                 } else {
01171                         array->strings = NULL;
01172                 }
01173         }
01174         
01175         /* write the headers and then the actual string buffer */
01176         
01177         for ( i=0; i<array->count; i++ ) {
01178                 if ( !prs_unistr4_hdr( "string", ps, depth, &array->strings[i]) )
01179                         return False;
01180         }
01181 
01182         for (i=0;i<array->count;i++) {
01183                 if ( !prs_unistr4_str("string", ps, depth, &array->strings[i]) ) 
01184                         return False;
01185         }
01186         
01187         return True;
01188 }

BOOL init_unistr4_array ( UNISTR4_ARRAY array,
uint32  count,
const char **  strings 
)

parse_misc.c1194 行で定義されています。

参照先 UNISTR4_ARRAY::countget_talloc_ctx()init_unistr4()UNISTR4_ARRAY::stringsUNI_STR_TERMINATE.

参照元 init_q_add_acct_rights()init_q_remove_acct_rights()init_r_enum_acct_rights().

01195 {
01196         unsigned int i;
01197 
01198         array->count = count;
01199 
01200         /* allocate memory for the array of UNISTR4 objects */
01201 
01202         if (array->count) {
01203                 if ( !(array->strings = TALLOC_ZERO_ARRAY(get_talloc_ctx(), UNISTR4, count )) )
01204                         return False;
01205         } else {
01206                 array->strings = NULL;
01207         }
01208 
01209         for ( i=0; i<count; i++ ) 
01210                 init_unistr4( &array->strings[i], strings[i], UNI_STR_TERMINATE );
01211 
01212         return True;
01213 }

BOOL smb_io_lockout_string_hdr ( const char *  desc,
HDR_LOCKOUT_STRING hdr_account_lockout,
prs_struct ps,
int  depth 
)

parse_misc.c1215 行で定義されています。

参照先 hdr_account_lockout_string::bufferhdr_account_lockout_string::lengthprs_debug()hdr_account_lockout_string::size.

参照元 net_io_sam_domain_info().

01216 {
01217         prs_debug(ps, depth, desc, "smb_io_lockout_string_hdr");
01218         depth++;
01219 
01220         if(!prs_align(ps))
01221                 return False;
01222 
01223         if(!prs_uint16("size", ps, depth, &hdr_account_lockout->size))
01224                 return False;
01225         if(!prs_uint16("length", ps, depth, &hdr_account_lockout->length))
01226                 return False;
01227         if(!prs_uint32("buffer", ps, depth, &hdr_account_lockout->buffer))
01228                 return False;
01229 
01230         return True;
01231 }

BOOL smb_io_account_lockout_str ( const char *  desc,
LOCKOUT_STRING account_lockout,
uint32  buffer,
prs_struct ps,
int  depth 
)

parse_misc.c1233 行で定義されています。

参照先 account_lockout_string::array_sizeaccount_lockout_string::bad_attempt_lockoutaccount_lockout_string::dummyaccount_lockout_string::lengthaccount_lockout_string::lockout_durationaccount_lockout_string::offsetprs_debug()prs_uint64()account_lockout_string::reset_count.

参照元 net_io_sam_domain_info().

01234 {
01235         prs_debug(ps, depth, desc, "smb_io_account_lockout_string");
01236         depth++;
01237 
01238         if(!prs_uint32("array_size", ps, depth, &account_lockout->array_size))
01239                 return False;
01240 
01241         if(!prs_uint32("offset", ps, depth, &account_lockout->offset))
01242                 return False;
01243         if(!prs_uint32("length", ps, depth, &account_lockout->length))
01244                 return False;
01245 
01246         if (!prs_uint64("lockout_duration", ps, depth, &account_lockout->lockout_duration))
01247                 return False;
01248         if (!prs_uint64("reset_count", ps, depth, &account_lockout->reset_count))
01249                 return False;
01250         if (!prs_uint32("bad_attempt_lockout", ps, depth, &account_lockout->bad_attempt_lockout))
01251                 return False;
01252         if (!prs_uint32("dummy", ps, depth, &account_lockout->dummy))
01253                 return False;
01254 #if 0
01255         if(!prs_uint16s (False, "bindata", ps, depth, &account_lockout->bindata, length))
01256                 return False;
01257 #endif
01258 
01259         return True;
01260 }

void init_dom_rid ( DOM_RID prid,
uint32  rid,
uint16  type,
uint32  idx 
)

parse_misc.c1266 行で定義されています。

参照先 DOM_RID::ridDOM_RID::rid_idxDOM_RID::type.

参照元 lookup_lsa_rids().

01267 {
01268         prid->type    = type;
01269         prid->rid     = rid;
01270         prid->rid_idx = idx;
01271 }

BOOL smb_io_dom_rid ( const char *  desc,
DOM_RID rid,
prs_struct ps,
int  depth 
)

parse_misc.c1277 行で定義されています。

参照先 prs_debug()DOM_RID::ridDOM_RID::rid_idxDOM_RID::type.

参照元 lsa_io_r_lookup_names().

01278 {
01279         if (rid == NULL)
01280                 return False;
01281 
01282         prs_debug(ps, depth, desc, "smb_io_dom_rid");
01283         depth++;
01284 
01285         if(!prs_align(ps))
01286                 return False;
01287    
01288         if(!prs_uint16("type   ", ps, depth, &rid->type))
01289                 return False;
01290         if(!prs_align(ps))
01291                 return False;
01292         if(!prs_uint32("rid    ", ps, depth, &rid->rid))
01293                 return False;
01294         if(!prs_uint32("rid_idx", ps, depth, &rid->rid_idx))
01295                 return False;
01296 
01297         return True;
01298 }

BOOL smb_io_dom_rid2 ( const char *  desc,
DOM_RID2 rid,
prs_struct ps,
int  depth 
)

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

参照先 prs_debug()DOM_RID2::ridDOM_RID2::rid_idxDOM_RID2::typeDOM_RID2::unknown.

参照元 lsa_io_r_lookup_names2().

01305 {
01306         if (rid == NULL)
01307                 return False;
01308 
01309         prs_debug(ps, depth, desc, "smb_io_dom_rid2");
01310         depth++;
01311 
01312         if(!prs_align(ps))
01313                 return False;
01314    
01315         if(!prs_uint16("type   ", ps, depth, &rid->type))
01316                 return False;
01317         if(!prs_align(ps))
01318                 return False;
01319         if(!prs_uint32("rid    ", ps, depth, &rid->rid))
01320                 return False;
01321         if(!prs_uint32("rid_idx", ps, depth, &rid->rid_idx))
01322                 return False;
01323         if(!prs_uint32("unknown", ps, depth, &rid->unknown))
01324                 return False;
01325 
01326         return True;
01327 }

void init_dom_rid3 ( DOM_RID3 rid3,
uint32  rid,
uint8  type 
)

parse_misc.c1334 行で定義されています。

参照先 DOM_RID3::ptr_typeDOM_RID3::ridDOM_RID3::type1DOM_RID3::type2DOM_RID3::unk.

01335 {
01336     rid3->rid      = rid;
01337     rid3->type1    = type;
01338     rid3->ptr_type = 0x1; /* non-zero, basically. */
01339     rid3->type2    = 0x1;
01340     rid3->unk      = type;
01341 }

BOOL smb_io_dom_rid3 ( const char *  desc,
DOM_RID3 rid3,
prs_struct ps,
int  depth 
)

parse_misc.c1347 行で定義されています。

参照先 prs_debug()DOM_RID3::ptr_typeDOM_RID3::ridDOM_RID3::type1DOM_RID3::type2DOM_RID3::unk.

01348 {
01349         if (rid3 == NULL)
01350                 return False;
01351 
01352         prs_debug(ps, depth, desc, "smb_io_dom_rid3");
01353         depth++;
01354 
01355         if(!prs_align(ps))
01356                 return False;
01357 
01358         if(!prs_uint32("rid     ", ps, depth, &rid3->rid))
01359                 return False;
01360         if(!prs_uint32("type1   ", ps, depth, &rid3->type1))
01361                 return False;
01362         if(!prs_uint32("ptr_type", ps, depth, &rid3->ptr_type))
01363                 return False;
01364         if(!prs_uint32("type2   ", ps, depth, &rid3->type2))
01365                 return False;
01366         if(!prs_uint32("unk     ", ps, depth, &rid3->unk))
01367                 return False;
01368 
01369         return True;
01370 }

void init_dom_rid4 ( DOM_RID4 rid4,
uint16  unknown,
uint16  attr,
uint32  rid 
)

parse_misc.c1376 行で定義されています。

参照先 domrid4_info::attrdomrid4_info::riddomrid4_info::unknown.

01377 {
01378     rid4->unknown = unknown;
01379     rid4->attr    = attr;
01380     rid4->rid     = rid;
01381 }

static void init_clnt_srv ( DOM_CLNT_SRV logcln,
const char *  logon_srv,
const char *  comp_name 
) [static]

parse_misc.c1387 行で定義されています。

参照先 init_unistr2()clnt_srv_info::undoc_bufferclnt_srv_info::undoc_buffer2clnt_srv_info::uni_comp_nameclnt_srv_info::uni_logon_srvUNI_STR_TERMINATE.

参照元 init_clnt_info2().

01388 {
01389         DEBUG(5,("init_clnt_srv: %d\n", __LINE__));
01390 
01391         if (logon_srv != NULL) {
01392                 logcln->undoc_buffer = 1;
01393                 init_unistr2(&logcln->uni_logon_srv, logon_srv, UNI_STR_TERMINATE);
01394         } else {
01395                 logcln->undoc_buffer = 0;
01396         }
01397 
01398         if (comp_name != NULL) {
01399                 logcln->undoc_buffer2 = 1;
01400                 init_unistr2(&logcln->uni_comp_name, comp_name, UNI_STR_TERMINATE);
01401         } else {
01402                 logcln->undoc_buffer2 = 0;
01403         }
01404 }

BOOL smb_io_clnt_srv ( const char *  desc,
DOM_CLNT_SRV logcln,
prs_struct ps,
int  depth 
)

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

参照先 prs_debug()smb_io_unistr2()clnt_srv_info::undoc_bufferclnt_srv_info::undoc_buffer2clnt_srv_info::uni_comp_nameclnt_srv_info::uni_logon_srv.

参照元 smb_io_clnt_info2()smb_io_sam_info_ex().

01411 {
01412         if (logcln == NULL)
01413                 return False;
01414 
01415         prs_debug(ps, depth, desc, "smb_io_clnt_srv");
01416         depth++;
01417 
01418         if(!prs_align(ps))
01419                 return False;
01420         
01421         if(!prs_uint32("undoc_buffer ", ps, depth, &logcln->undoc_buffer))
01422                 return False;
01423 
01424         if (logcln->undoc_buffer != 0) {
01425                 if(!smb_io_unistr2("unistr2", &logcln->uni_logon_srv, logcln->undoc_buffer, ps, depth))
01426                         return False;
01427         }
01428 
01429         if(!prs_align(ps))
01430                 return False;
01431 
01432         if(!prs_uint32("undoc_buffer2", ps, depth, &logcln->undoc_buffer2))
01433                 return False;
01434 
01435         if (logcln->undoc_buffer2 != 0) {
01436                 if(!smb_io_unistr2("unistr2", &logcln->uni_comp_name, logcln->undoc_buffer2, ps, depth))
01437                         return False;
01438         }
01439 
01440         return True;
01441 }

void init_log_info ( DOM_LOG_INFO loginfo,
const char *  logon_srv,
const char *  acct_name,
uint16  sec_chan,
const char *  comp_name 
)

parse_misc.c1447 行で定義されています。

参照先 init_unistr2()log_info::sec_chanlog_info::undoc_bufferlog_info::uni_acct_namelog_info::uni_comp_namelog_info::uni_logon_srvUNI_STR_TERMINATE.

参照元 init_clnt_info()init_q_auth_2()init_q_auth_3().

01449 {
01450         DEBUG(5,("make_log_info %d\n", __LINE__));
01451 
01452         loginfo->undoc_buffer = 1;
01453 
01454         init_unistr2(&loginfo->uni_logon_srv, logon_srv, UNI_STR_TERMINATE);
01455         init_unistr2(&loginfo->uni_acct_name, acct_name, UNI_STR_TERMINATE);
01456 
01457         loginfo->sec_chan = sec_chan;
01458 
01459         init_unistr2(&loginfo->uni_comp_name, comp_name, UNI_STR_TERMINATE);
01460 }

BOOL smb_io_log_info ( const char *  desc,
DOM_LOG_INFO loginfo,
prs_struct ps,
int  depth 
)

parse_misc.c1466 行で定義されています。

参照先 prs_debug()log_info::sec_chansmb_io_unistr2()log_info::undoc_bufferlog_info::uni_acct_namelog_info::uni_comp_namelog_info::uni_logon_srv.

参照元 net_io_q_auth()net_io_q_auth_2()net_io_q_auth_3()smb_io_clnt_info().

01467 {
01468         if (loginfo == NULL)
01469                 return False;
01470 
01471         prs_debug(ps, depth, desc, "smb_io_log_info");
01472         depth++;
01473 
01474         if(!prs_align(ps))
01475                 return False;
01476         
01477         if(!prs_uint32("undoc_buffer", ps, depth, &loginfo->undoc_buffer))
01478                 return False;
01479 
01480         if(!smb_io_unistr2("unistr2", &loginfo->uni_logon_srv, True, ps, depth))
01481                 return False;
01482         if(!smb_io_unistr2("unistr2", &loginfo->uni_acct_name, True, ps, depth))
01483                 return False;
01484 
01485         if(!prs_uint16("sec_chan", ps, depth, &loginfo->sec_chan))
01486                 return False;
01487 
01488         if(!smb_io_unistr2("unistr2", &loginfo->uni_comp_name, True, ps, depth))
01489                 return False;
01490 
01491         return True;
01492 }

BOOL smb_io_chal ( const char *  desc,
DOM_CHAL chal,
prs_struct ps,
int  depth 
)

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

参照先 chal_info::dataprs_debug().

参照元 net_io_q_auth()net_io_q_auth_2()net_io_q_auth_3()net_io_q_req_chal()net_io_r_auth()net_io_r_auth_2()net_io_r_auth_3()net_io_r_req_chal()smb_io_cred().

01499 {
01500         if (chal == NULL)
01501                 return False;
01502 
01503         prs_debug(ps, depth, desc, "smb_io_chal");
01504         depth++;
01505         
01506         if(!prs_uint8s (False, "data", ps, depth, chal->data, 8))
01507                 return False;
01508 
01509         return True;
01510 }

BOOL smb_io_cred ( const char *  desc,
DOM_CRED cred,
prs_struct ps,
int  depth 
)

parse_misc.c1516 行で定義されています。

参照先 cred_info::challengeprs_debug()smb_io_chal()smb_io_utime()cred_info::timestamp.

参照元 net_io_q_sam_deltas()net_io_q_sam_sync()net_io_r_sam_deltas()net_io_r_sam_logoff()net_io_r_sam_logon()net_io_r_sam_sync()net_io_r_srv_pwset()net_io_r_srv_pwset2()smb_io_clnt_info()smb_io_clnt_info2()smb_io_sam_info().

01517 {
01518         if (cred == NULL)
01519                 return False;
01520 
01521         prs_debug(ps, depth, desc, "smb_io_cred");
01522         depth++;
01523 
01524         if(!prs_align(ps))
01525                 return False;
01526 
01527         if(!smb_io_chal ("", &cred->challenge, ps, depth))
01528                 return False;
01529 
01530         if(!smb_io_utime("", &cred->timestamp, ps, depth))
01531                 return False;
01532 
01533         return True;
01534 }

void init_clnt_info2 ( DOM_CLNT_INFO2 clnt,
const char *  logon_srv,
const char *  comp_name,
const DOM_CRED clnt_cred 
)

parse_misc.c1540 行で定義されています。

参照先 clnt_info2::credinit_clnt_srv()clnt_info2::loginclnt_info2::ptr_cred.

参照元 init_sam_info().

01543 {
01544         DEBUG(5,("make_clnt_info: %d\n", __LINE__));
01545 
01546         init_clnt_srv(&clnt->login, logon_srv, comp_name);
01547 
01548         if (clnt_cred != NULL) {
01549                 clnt->ptr_cred = 1;
01550                 memcpy(&clnt->cred, clnt_cred, sizeof(clnt->cred));
01551         } else {
01552                 clnt->ptr_cred = 0;
01553         }
01554 }

BOOL smb_io_clnt_info2 ( const char *  desc,
DOM_CLNT_INFO2 clnt,
prs_struct ps,
int  depth 
)

parse_misc.c1560 行で定義されています。

参照先 clnt_info2::credclnt_info2::loginprs_debug()clnt_info2::ptr_credsmb_io_clnt_srv()smb_io_cred().

参照元 smb_io_sam_info().

01561 {
01562         if (clnt == NULL)
01563                 return False;
01564 
01565         prs_debug(ps, depth, desc, "smb_io_clnt_info2");
01566         depth++;
01567 
01568         if(!prs_align(ps))
01569                 return False;
01570         
01571         if(!smb_io_clnt_srv("", &clnt->login, ps, depth))
01572                 return False;
01573 
01574         if(!prs_align(ps))
01575                 return False;
01576         
01577         if(!prs_uint32("ptr_cred", ps, depth, &clnt->ptr_cred))
01578                 return False;
01579         if(!smb_io_cred("", &clnt->cred, ps, depth))
01580                 return False;
01581 
01582         return True;
01583 }

void init_clnt_info ( DOM_CLNT_INFO clnt,
const char *  logon_srv,
const char *  acct_name,
uint16  sec_chan,
const char *  comp_name,
const DOM_CRED cred 
)

parse_misc.c1589 行で定義されています。

参照先 clnt_info::credinit_log_info()clnt_info::login.

参照元 init_q_srv_pwset()init_q_srv_pwset2().

01593 {
01594         DEBUG(5,("make_clnt_info\n"));
01595 
01596         init_log_info(&clnt->login, logon_srv, acct_name, sec_chan, comp_name);
01597         memcpy(&clnt->cred, cred, sizeof(clnt->cred));
01598 }

BOOL smb_io_clnt_info ( const char *  desc,
DOM_CLNT_INFO clnt,
prs_struct ps,
int  depth 
)

parse_misc.c1604 行で定義されています。

参照先 clnt_info::credclnt_info::loginprs_debug()smb_io_cred()smb_io_log_info().

参照元 net_io_q_srv_pwset()net_io_q_srv_pwset2().

01605 {
01606         if (clnt == NULL)
01607                 return False;
01608 
01609         prs_debug(ps, depth, desc, "smb_io_clnt_info");
01610         depth++;
01611 
01612         if(!prs_align(ps))
01613                 return False;
01614         
01615         if(!smb_io_log_info("", &clnt->login, ps, depth))
01616                 return False;
01617         if(!smb_io_cred("", &clnt->cred, ps, depth))
01618                 return False;
01619 
01620         return True;
01621 }

void init_logon_id ( DOM_LOGON_ID logonid,
uint32  log_id_low,
uint32  log_id_high 
)

parse_misc.c1627 行で定義されています。

参照先 logon_info::highlogon_info::low.

参照元 init_id_info1()init_id_info2().

01628 {
01629         DEBUG(5,("make_logon_id: %d\n", __LINE__));
01630 
01631         logonid->low  = log_id_low;
01632         logonid->high = log_id_high;
01633 }

BOOL smb_io_logon_id ( const char *  desc,
DOM_LOGON_ID logonid,
prs_struct ps,
int  depth 
)

parse_misc.c1639 行で定義されています。

参照先 logon_info::highlogon_info::lowprs_debug().

参照元 net_io_id_info1()net_io_id_info2().

01640 {
01641         if (logonid == NULL)
01642                 return False;
01643 
01644         prs_debug(ps, depth, desc, "smb_io_logon_id");
01645         depth++;
01646 
01647         if(!prs_align(ps))
01648                 return False;
01649         
01650         if(!prs_uint32("low ", ps, depth, &logonid->low ))
01651                 return False;
01652         if(!prs_uint32("high", ps, depth, &logonid->high))
01653                 return False;
01654 
01655         return True;
01656 }

void init_owf_info ( OWF_INFO hash,
const uint8  data[16] 
)

parse_misc.c1662 行で定義されています。

参照先 owf_info::data.

参照元 init_id_info1().

01663 {
01664         DEBUG(5,("init_owf_info: %d\n", __LINE__));
01665         
01666         if (data != NULL)
01667                 memcpy(hash->data, data, sizeof(hash->data));
01668         else
01669                 memset((char *)hash->data, '\0', sizeof(hash->data));
01670 }

BOOL smb_io_owf_info ( const char *  desc,
OWF_INFO hash,
prs_struct ps,
int  depth 
)

parse_misc.c1676 行で定義されています。

参照先 owf_info::dataprs_debug().

参照元 net_io_id_info1().

01677 {
01678         if (hash == NULL)
01679                 return False;
01680 
01681         prs_debug(ps, depth, desc, "smb_io_owf_info");
01682         depth++;
01683 
01684         if(!prs_align(ps))
01685                 return False;
01686         
01687         if(!prs_uint8s (False, "data", ps, depth, hash->data, 16))
01688                 return False;
01689 
01690         return True;
01691 }

BOOL smb_io_gid ( const char *  desc,
DOM_GID gid,
prs_struct ps,
int  depth 
)

parse_misc.c1697 行で定義されています。

参照先 DOM_GID::attrDOM_GID::g_ridprs_debug().

参照元 net_io_sam_group_info()samr_io_gids().

01698 {
01699         if (gid == NULL)
01700                 return False;
01701 
01702         prs_debug(ps, depth, desc, "smb_io_gid");
01703         depth++;
01704 
01705         if(!prs_align(ps))
01706                 return False;
01707         
01708         if(!prs_uint32("g_rid", ps, depth, &gid->g_rid))
01709                 return False;
01710         if(!prs_uint32("attr ", ps, depth, &gid->attr))
01711                 return False;
01712 
01713         return True;
01714 }

BOOL smb_io_pol_hnd ( const char *  desc,
POLICY_HND pol,
prs_struct ps,
int  depth 
)

parse_misc.c1720 行で定義されています。

参照先 polprs_debug()smb_io_uuid().

参照元 eventlog_io_q_clear_eventlog()eventlog_io_q_close_eventlog()eventlog_io_q_get_num_records()eventlog_io_q_get_oldest_entry()eventlog_io_q_read_eventlog()eventlog_io_r_close_eventlog()eventlog_io_r_open_eventlog()lsa_io_q_add_acct_rights()lsa_io_q_addprivs()lsa_io_q_close()lsa_io_q_create_account()lsa_io_q_create_secret()lsa_io_q_create_trusted_domain()lsa_io_q_delete_object()lsa_io_q_enum_accounts()lsa_io_q_enum_acct_rights()lsa_io_q_enum_privs()lsa_io_q_enum_privsaccount()lsa_io_q_enum_trust_dom()lsa_io_q_getsystemaccount()lsa_io_q_lookup_names()lsa_io_q_lookup_names2()lsa_io_q_lookup_names3()lsa_io_q_lookup_priv_value()lsa_io_q_lookup_sids()lsa_io_q_lookup_sids2()lsa_io_q_open_account()lsa_io_q_open_secret()lsa_io_q_open_trusted_domain()lsa_io_q_open_trusted_domain_by_name()lsa_io_q_priv_get_dispname()lsa_io_q_query()lsa_io_q_query_dom_info()lsa_io_q_query_info2()lsa_io_q_query_sec_obj()lsa_io_q_query_trusted_domain_info()lsa_io_q_query_trusted_domain_info_by_name()lsa_io_q_query_trusted_domain_info_by_sid()lsa_io_q_remove_acct_rights()lsa_io_q_removeprivs()lsa_io_q_set()lsa_io_q_set_secret()lsa_io_q_setsystemaccount()lsa_io_r_close()lsa_io_r_create_account()lsa_io_r_create_secret()lsa_io_r_create_trusted_domain()lsa_io_r_open_account()lsa_io_r_open_pol()lsa_io_r_open_pol2()lsa_io_r_open_secret()lsa_io_r_open_trusted_domain()lsa_io_r_open_trusted_domain_by_name()reg_io_q_close()reg_io_q_create_key_ex()reg_io_q_delete_key()reg_io_q_delete_value()reg_io_q_enum_key()reg_io_q_enum_val()reg_io_q_flush_key()reg_io_q_get_key_sec()reg_io_q_getversion()reg_io_q_open_entry()reg_io_q_query_key()reg_io_q_query_value()reg_io_q_restore_key()reg_io_q_save_key()reg_io_q_set_key_sec()reg_io_q_set_value()reg_io_r_close()reg_io_r_create_key_ex()reg_io_r_open_entry()reg_io_r_open_hive()samr_io_q_add_aliasmem()samr_io_q_add_groupmem()samr_io_q_close_hnd()samr_io_q_create_dom_alias()samr_io_q_create_dom_group()samr_io_q_create_user()samr_io_q_del_aliasmem()samr_io_q_del_groupmem()samr_io_q_delete_alias()samr_io_q_delete_dom_alias()samr_io_q_delete_dom_group()samr_io_q_delete_dom_user()samr_io_q_enum_dom_aliases()samr_io_q_enum_dom_groups()samr_io_q_enum_dom_users()samr_io_q_enum_domains()samr_io_q_get_dispenum_index()samr_io_q_get_usrdom_pwinfo()samr_io_q_lookup_domain()samr_io_q_lookup_names()samr_io_q_lookup_rids()samr_io_q_open_alias()samr_io_q_open_domain()samr_io_q_open_group()samr_io_q_open_user()samr_io_q_query_aliasinfo()samr_io_q_query_aliasmem()samr_io_q_query_dispinfo()samr_io_q_query_domain_info()samr_io_q_query_domain_info2()samr_io_q_query_groupinfo()samr_io_q_query_groupmem()samr_io_q_query_sec_obj()samr_io_q_query_useraliases()samr_io_q_query_usergroups()samr_io_q_query_userinfo()samr_io_q_remove_sid_foreign_domain()samr_io_q_set_aliasinfo()samr_io_q_set_domain_info()samr_io_q_set_groupinfo()samr_io_q_set_sec_obj()samr_io_q_set_userinfo()samr_io_q_set_userinfo2()samr_io_r_close_hnd()samr_io_r_connect()samr_io_r_connect4()samr_io_r_connect5()samr_io_r_connect_anon()samr_io_r_create_dom_alias()samr_io_r_create_dom_group()samr_io_r_create_user()samr_io_r_delete_alias()samr_io_r_delete_dom_alias()samr_io_r_delete_dom_group()samr_io_r_delete_dom_user()samr_io_r_open_alias()samr_io_r_open_domain()samr_io_r_open_group()samr_io_r_open_user()spoolss_io_q_abortprinter()spoolss_io_q_addform()spoolss_io_q_addjob()spoolss_io_q_closeprinter()spoolss_io_q_deleteform()spoolss_io_q_deleteprinter()spoolss_io_q_deleteprinterdata()spoolss_io_q_deleteprinterdataex()spoolss_io_q_deleteprinterkey()spoolss_io_q_enddocprinter()spoolss_io_q_endpageprinter()spoolss_io_q_enumforms()spoolss_io_q_enumjobs()spoolss_io_q_enumprinterdata()spoolss_io_q_enumprinterdataex()spoolss_io_q_enumprinterkey()spoolss_io_q_fcpn()spoolss_io_q_getform()spoolss_io_q_getjob()spoolss_io_q_getprinter()spoolss_io_q_getprinterdata()spoolss_io_q_getprinterdataex()spoolss_io_q_getprinterdriver2()spoolss_io_q_reply_rrpcn()spoolss_io_q_replycloseprinter()spoolss_io_q_resetprinter()spoolss_io_q_rffpcnex()spoolss_io_q_rfnpcnex()spoolss_io_q_routerreplyprinter()spoolss_io_q_schedulejob()spoolss_io_q_setform()spoolss_io_q_setjob()spoolss_io_q_setprinter()spoolss_io_q_setprinterdata()spoolss_io_q_setprinterdataex()spoolss_io_q_startdocprinter()spoolss_io_q_startpageprinter()spoolss_io_q_writeprinter()spoolss_io_q_xcvdataport()spoolss_io_r_addprinterex()spoolss_io_r_closeprinter()spoolss_io_r_deleteprinter()spoolss_io_r_open_printer()spoolss_io_r_open_printer_ex()spoolss_io_r_replycloseprinter()spoolss_io_r_replyopenprinter()svcctl_io_q_close_service()svcctl_io_q_control_service()svcctl_io_q_enum_dependent_services()svcctl_io_q_enum_services_status()svcctl_io_q_get_display_name()svcctl_io_q_lock_service_db()svcctl_io_q_open_service()svcctl_io_q_query_service_config()svcctl_io_q_query_service_config2()svcctl_io_q_query_service_sec()svcctl_io_q_query_service_status_ex()svcctl_io_q_query_status()svcctl_io_q_set_service_sec()svcctl_io_q_start_service()svcctl_io_q_unlock_service_db()svcctl_io_r_close_service()svcctl_io_r_lock_service_db()svcctl_io_r_open_scmanager()svcctl_io_r_open_service().

01721 {
01722         if (pol == NULL)
01723                 return False;
01724 
01725         prs_debug(ps, depth, desc, "smb_io_pol_hnd");
01726         depth++;
01727 
01728         if(!prs_align(ps))
01729                 return False;
01730 
01731         if(UNMARSHALLING(ps))
01732                 ZERO_STRUCTP(pol);
01733         
01734         if (!prs_uint32("handle_type", ps, depth, &pol->handle_type))
01735                 return False;
01736         if (!smb_io_uuid("uuid", (struct GUID*)&pol->uuid, ps, depth))
01737                 return False;
01738 
01739         return True;
01740 }

void init_unistr3 ( UNISTR3 str,
const char *  buf 
)

parse_misc.c1746 行で定義されています。

参照先 UNISTR::bufferget_talloc_ctx()rpcstr_push()smb_panic()UNISTR3::strUNISTR3::uni_str_len.

参照元 _srv_net_disk_enum().

01747 {
01748         if (buf == NULL) {
01749                 str->uni_str_len=0;
01750                 str->str.buffer = NULL;
01751                 return;
01752         }
01753 
01754         str->uni_str_len = strlen(buf) + 1;
01755 
01756         if (str->uni_str_len) {
01757                 str->str.buffer = TALLOC_ZERO_ARRAY(get_talloc_ctx(), uint16, str->uni_str_len);
01758                 if (str->str.buffer == NULL)
01759                         smb_panic("init_unistr3: malloc fail\n");
01760 
01761                 rpcstr_push((char *)str->str.buffer, buf, str->uni_str_len * sizeof(uint16), STR_TERMINATE);
01762         } else {
01763                 str->str.buffer = NULL;
01764         }
01765 }

BOOL smb_io_unistr3 ( const char *  desc,
UNISTR3 name,
prs_struct ps,
int  depth 
)

parse_misc.c1771 行で定義されています。

参照先 nameprs_debug().

参照元 srv_io_r_net_disk_enum().

01772 {
01773         if (name == NULL)
01774                 return False;
01775 
01776         prs_debug(ps, depth, desc, "smb_io_unistr3");
01777         depth++;
01778 
01779         if(!prs_align(ps))
01780                 return False;
01781         
01782         if(!prs_uint32("uni_str_len", ps, depth, &name->uni_str_len))
01783                 return False;
01784                 
01785         /* we're done if there is no string */
01786         
01787         if ( name->uni_str_len == 0 )
01788                 return True;
01789 
01790         /* don't know if len is specified by uni_str_len member... */
01791         /* assume unicode string is unicode-null-terminated, instead */
01792 
01793         if(!prs_unistr3(True, "unistr", name, ps, depth))
01794                 return False;
01795 
01796         return True;
01797 }

BOOL prs_uint64 ( const char *  name,
prs_struct ps,
int  depth,
uint64 *  data64 
)

parse_misc.c1802 行で定義されています。

参照元 _reg_perfcount_marshall_perf_data_block()_reg_perfcount_marshall_perf_objects()net_io_q_sam_deltas()net_io_r_sam_deltas()net_io_sam_delta_mod_count()net_io_sam_domain_info()net_io_sam_policy_info()net_io_sam_privs_info()sam_io_unk_info13()sam_io_unk_info2()sam_io_unk_info8()smb_io_account_lockout_str()smb_io_printer_driver_info_6()spool_io_printer_driver_info_level_6().

01803 {
01804         if (UNMARSHALLING(ps)) {
01805                 uint32 high, low;
01806 
01807                 if (!prs_uint32(name, ps, depth+1, &low))
01808                         return False;
01809 
01810                 if (!prs_uint32(name, ps, depth+1, &high))
01811                         return False;
01812 
01813                 *data64 = ((uint64_t)high << 32) + low;
01814 
01815                 return True;
01816         } else {
01817                 uint32 high = (*data64) >> 32, low = (*data64) & 0xFFFFFFFF;
01818                 return prs_uint32(name, ps, depth+1, &low) && 
01819                            prs_uint32(name, ps, depth+1, &high);
01820         }
01821 }

BOOL smb_io_bufhdr2 ( const char *  desc,
BUFHDR2 hdr,
prs_struct ps,
int  depth 
)

parse_misc.c1826 行で定義されています。

参照先 BUFHDR2::bufferBUFHDR2::info_levelBUFHDR2::lengthprs_debug().

参照元 net_io_sam_account_info()net_io_sam_alias_info()net_io_sam_group_info()net_io_sam_policy_info()net_io_sam_privs_info().

01827 {
01828         prs_debug(ps, depth, desc, "smb_io_bufhdr2");
01829         depth++;
01830 
01831         prs_align(ps);
01832         prs_uint32("info_level", ps, depth, &(hdr->info_level));
01833         prs_uint32("length    ", ps, depth, &(hdr->length    ));
01834         prs_uint32("buffer    ", ps, depth, &(hdr->buffer    ));
01835 
01836         return True;
01837 }

BOOL smb_io_bufhdr4 ( const char *  desc,
BUFHDR4 hdr,
prs_struct ps,
int  depth 
)

parse_misc.c1842 行で定義されています。

参照先 BUFHDR4::bufferprs_debug()BUFHDR4::size.

参照元 net_io_sam_domain_info().

01843 {
01844         prs_debug(ps, depth, desc, "smb_io_bufhdr4");
01845         depth++;
01846 
01847         prs_align(ps);
01848         prs_uint32("size", ps, depth, &hdr->size);
01849         prs_uint32("buffer", ps, depth, &hdr->buffer);
01850 
01851         return True;
01852 }

BOOL smb_io_rpc_blob ( const char *  desc,
RPC_DATA_BLOB blob,
prs_struct ps,
int  depth 
)

parse_misc.c1858 行で定義されています。

参照先 RPC_DATA_BLOB::buf_lenRPC_DATA_BLOB::bufferprs_debug().

参照元 net_io_sam_account_info()net_io_sam_alias_info()net_io_sam_domain_info()net_io_sam_group_info()net_io_sam_policy_info()reg_io_q_set_value().

01859 {
01860         prs_debug(ps, depth, desc, "smb_io_rpc_blob");
01861         depth++;
01862 
01863         prs_align(ps);
01864         if ( !prs_uint32("buf_len", ps, depth, &blob->buf_len) )
01865                 return False;
01866 
01867         if ( blob->buf_len == 0 )
01868                 return True;
01869 
01870         if (UNMARSHALLING(ps)) {
01871                 blob->buffer = PRS_ALLOC_MEM(ps, uint8, blob->buf_len);
01872                 if (!blob->buffer) {
01873                         return False;
01874                 }
01875         }
01876 
01877         if ( !prs_uint8s(True, "buffer", ps, depth, blob->buffer, blob->buf_len) )
01878                 return False;
01879 
01880         return True;
01881 }

BOOL make_uni_hdr ( UNIHDR hdr,
int  len 
)

parse_misc.c1887 行で定義されています。

参照先 UNIHDR::bufferUNIHDR::uni_max_lenUNIHDR::uni_str_len.

01888 {
01889         if (hdr == NULL)
01890         {
01891                 return False;
01892         }
01893         hdr->uni_str_len = 2 * len;
01894         hdr->uni_max_len = 2 * len;
01895         hdr->buffer      = len != 0 ? 1 : 0;
01896 
01897         return True;
01898 }

BOOL make_bufhdr2 ( BUFHDR2 hdr,
uint32  info_level,
uint32  length,
uint32  buffer 
)

parse_misc.c1903 行で定義されています。

参照先 BUFHDR2::bufferBUFHDR2::info_levelBUFHDR2::length.

01904 {
01905         hdr->info_level = info_level;
01906         hdr->length     = length;
01907         hdr->buffer     = buffer;
01908 
01909         return True;
01910 }

uint32 str_len_uni ( UNISTR source  ) 

parse_misc.c1916 行で定義されています。

参照先 UNISTR::buffer.

参照元 size_of_relative_string()smb_io_relarraystr()spoolss_size_driverdir_info_1()spoolss_size_printprocessordirectory_info_1()svcctl_sizeof_service_description().

01917 {
01918         uint32 i=0;
01919 
01920         if (!source->buffer)
01921                 return 0;
01922 
01923         while (source->buffer[i])
01924                 i++;
01925 
01926         return i;
01927 }


変数

TALLOC_CTX* current_rpc_talloc = NULL [static]

parse_misc.c34 行で定義されています。

参照元 get_current_rpc_talloc()set_current_rpc_talloc().

TALLOC_CTX* main_loop_talloc = NULL [static]

parse_misc.c46 行で定義されています。

参照元 main_loop_TALLOC_FREE()main_loop_talloc_get().


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