- smb_io_unihdr ("hdr_nt_pwd", &(pwd->hdr_nt_pwd), ps, depth);
- prs_uint8s(False, "buf_nt_pwd", ps, depth, pwd->buf_nt_pwd, 16);
-
- smb_io_unihdr("", &(pwd->hdr_empty_lm), ps, depth);
- smb_io_unihdr("", &(pwd->hdr_empty_nt), ps, depth);
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-static BOOL net_io_sam_account_info(char *desc, uint8 sess_key[16],
- SAM_ACCOUNT_INFO *info, prs_struct *ps, int depth)
-{
- BUFHDR2 hdr_priv_data;
- uint32 i;
-
- if (info == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_sam_account_info");
- depth++;
-
- smb_io_unihdr("hdr_acct_name", &(info->hdr_acct_name), ps, depth);
- smb_io_unihdr("hdr_full_name", &(info->hdr_full_name), ps, depth);
-
- prs_uint32("user_rid ", ps, depth, &(info->user_rid ));
- prs_uint32("group_rid", ps, depth, &(info->group_rid));
-
- smb_io_unihdr("hdr_home_dir " , &(info->hdr_home_dir ), ps, depth);
- smb_io_unihdr("hdr_dir_drive" , &(info->hdr_dir_drive), ps, depth);
- smb_io_unihdr("hdr_logon_script", &(info->hdr_logon_script), ps, depth);
- smb_io_unihdr("hdr_acct_desc" , &(info->hdr_acct_desc), ps, depth);
- smb_io_unihdr("hdr_workstations", &(info->hdr_workstations), ps, depth);
-
- smb_io_time("logon_time" , &(info->logon_time ), ps, depth);
- smb_io_time("logoff_time", &(info->logoff_time), ps, depth);
-
- prs_uint32("logon_divs ", ps, depth, &(info->logon_divs ));
- prs_uint32("ptr_logon_hrs", ps, depth, &(info->ptr_logon_hrs));
-
- prs_uint16("bad_pwd_count", ps, depth, &(info->bad_pwd_count));
- prs_uint16("logon_count" , ps, depth, &(info->logon_count ));
- smb_io_time("pwd_last_set_time", &(info->pwd_last_set_time), ps, depth);
- smb_io_time("acct_expiry_time" , &(info->acct_expiry_time ), ps, depth);
-
- prs_uint32("acb_info", ps, depth, &(info->acb_info));
- prs_uint8s(False, "nt_pwd", ps, depth, info->nt_pwd, 16);
- prs_uint8s(False, "lm_pwd", ps, depth, info->lm_pwd, 16);
- prs_uint8("lm_pwd_present", ps, depth, &(info->lm_pwd_present));
- prs_uint8("nt_pwd_present", ps, depth, &(info->nt_pwd_present));
- prs_uint8("pwd_expired" , ps, depth, &(info->pwd_expired ));
-
- smb_io_unihdr("hdr_comment" , &(info->hdr_comment ), ps, depth);
- smb_io_unihdr("hdr_parameters", &(info->hdr_parameters), ps, depth);
- prs_uint16("country" , ps, depth, &(info->country ));
- prs_uint16("codepage", ps, depth, &(info->codepage));
-
- smb_io_bufhdr2("hdr_priv_data", &(hdr_priv_data), ps, depth);
- smb_io_bufhdr2("hdr_sec_desc" , &(info->hdr_sec_desc) , ps, depth);
- smb_io_unihdr ("hdr_profile" , &(info->hdr_profile) , ps, depth);
-
- for (i = 0; i < 3; i++)
- {
- smb_io_unihdr("hdr_reserved", &(info->hdr_reserved[i]), ps, depth);
- }
-
- for (i = 0; i < 4; i++)
- {
- prs_uint32("dw_reserved", ps, depth, &(info->dw_reserved[i]));
- }
-
- smb_io_unistr2("uni_acct_name", &(info->uni_acct_name),
- info->hdr_acct_name.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_full_name", &(info->uni_full_name),
- info->hdr_full_name.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_home_dir ", &(info->uni_home_dir ),
- info->hdr_home_dir .buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_dir_drive", &(info->uni_dir_drive),
- info->hdr_dir_drive.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_logon_script", &(info->uni_logon_script),
- info->hdr_logon_script.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_acct_desc", &(info->uni_acct_desc),
- info->hdr_acct_desc.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_workstations", &(info->uni_workstations),
- info->hdr_workstations.buffer, ps, depth);
- prs_align(ps);
-
- prs_uint32("unknown1", ps, depth, &(info->unknown1));
- prs_uint32("unknown2", ps, depth, &(info->unknown2));
-
- smb_io_buffer4("buf_logon_hrs" , &(info->buf_logon_hrs ),
- info->ptr_logon_hrs, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_comment" , &(info->uni_comment ),
- info->hdr_comment.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_parameters", &(info->uni_parameters),
- info->hdr_parameters.buffer, ps, depth);
- prs_align(ps);
- if (hdr_priv_data.buffer != 0)
- {
- int old_offset;
- uint32 len = 0x44;
- prs_uint32("pwd_len", ps, depth, &len);
- old_offset = ps->offset;
- if (len == 0x44)
- {
- if (ps->io)
- {
- /* reading */
- prs_hash1(ps, ps->offset, sess_key);
- }
- net_io_sam_passwd_info("pass", &(info->pass), ps, depth);
- if (!ps->io)
- {
- /* writing */
- prs_hash1(ps, old_offset, sess_key);
- }
- }
- ps->offset = old_offset + len;
- }
- smb_io_buffer4("buf_sec_desc" , &(info->buf_sec_desc ),
- info->hdr_sec_desc.buffer, ps, depth);
- prs_align(ps);
- smb_io_unistr2("uni_profile" , &(info->uni_profile ),
- info->hdr_profile.buffer, ps, depth);
- prs_align(ps);
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-static BOOL net_io_sam_group_mem_info(char *desc, SAM_GROUP_MEM_INFO *info, prs_struct *ps, int depth)
-{
- uint32 i;
- fstring tmp;
-
- if (info == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_sam_group_mem_info");
- depth++;
-
- prs_align(ps);
- prs_uint32("ptr_rids ", ps, depth, &(info->ptr_rids ));
- prs_uint32("ptr_attribs", ps, depth, &(info->ptr_attribs));
- prs_uint32("num_members", ps, depth, &(info->num_members));
- ps->offset += 16;
-
- if (info->ptr_rids != 0)
- {
- prs_uint32("num_members2", ps, depth, &(info->num_members2));
- if (info->num_members2 != info->num_members)
- {
- /* RPC fault */
- return False;
- }
-
- SMB_ASSERT_ARRAY(info->rids, info->num_members2);
-
- for (i = 0; i < info->num_members2; i++)
- {
- prs_grow(ps);
- slprintf(tmp, sizeof(tmp) - 1, "rids[%02d]", i);
- prs_uint32(tmp, ps, depth, &(info->rids[i]));
- }
- }
-
- if (info->ptr_attribs != 0)
- {
- prs_uint32("num_members3", ps, depth, &(info->num_members3));
- if (info->num_members3 != info->num_members)
- {
- /* RPC fault */
- return False;
- }
-
- SMB_ASSERT_ARRAY(info->attribs, info->num_members3);
-
- for (i = 0; i < info->num_members3; i++)
- {
- prs_grow(ps);
- slprintf(tmp, sizeof(tmp) - 1, "attribs[%02d]", i);
- prs_uint32(tmp, ps, depth, &(info->attribs[i]));
- }
- }
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-static BOOL net_io_sam_alias_info(char *desc, SAM_ALIAS_INFO *info, prs_struct *ps, int depth)
-{
- if (info == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_sam_alias_info");
- depth++;
-
- smb_io_unihdr ("hdr_als_name", &(info->hdr_als_name), ps, depth);
- prs_uint32("als_rid", ps, depth, &(info->als_rid));
- smb_io_bufhdr2("hdr_sec_desc", &(info->hdr_sec_desc), ps, depth);
- smb_io_unihdr ("hdr_als_desc", &(info->hdr_als_desc), ps, depth);
- ps->offset += 40;
-
- smb_io_unistr2("uni_als_name", &(info->uni_als_name),
- info->hdr_als_name.buffer, ps, depth);
- smb_io_buffer4("buf_sec_desc", &(info->buf_sec_desc),
- info->hdr_sec_desc.buffer, ps, depth);
- smb_io_unistr2("uni_als_desc", &(info->uni_als_desc),
- info->hdr_als_name.buffer, ps, depth);
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-static BOOL net_io_sam_alias_mem_info(char *desc, SAM_ALIAS_MEM_INFO *info, prs_struct *ps, int depth)
-{
- uint32 i;
- fstring tmp;
-
- if (info == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_sam_alias_mem_info");
- depth++;
-
- prs_align(ps);
- prs_uint32("num_members", ps, depth, &(info->num_members));
- prs_uint32("ptr_members", ps, depth, &(info->ptr_members));
- ps->offset += 16;
-
- if (info->ptr_members != 0)
- {
- prs_uint32("num_sids", ps, depth, &(info->num_sids));
- if (info->num_sids != info->num_members)
- {
- /* RPC fault */
- return False;
- }
-
- SMB_ASSERT_ARRAY(info->ptr_sids, info->num_sids);
-
- for (i = 0; i < info->num_sids; i++)
- {
- prs_grow(ps);
- slprintf(tmp, sizeof(tmp) - 1, "ptr_sids[%02d]", i);
- prs_uint32(tmp, ps, depth, &(info->ptr_sids[i]));
- }
-
- SMB_ASSERT_ARRAY(info->sids, info->num_sids);
-
- for (i = 0; i < info->num_sids; i++)
- {
- if (info->ptr_sids[i] != 0)
- {
- prs_grow(ps);
- slprintf(tmp, sizeof(tmp) - 1, "sids[%02d]", i);
- smb_io_dom_sid2(tmp, &(info->sids[i]), ps, depth);
- }
- }
- }
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
- SAM_DELTA_CTR *delta, uint16 type,
- prs_struct *ps, int depth)
-{
- if (delta == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_sam_delta_ctr");
- depth++;
-
- switch (type)
- {
- case 1:
- {
- net_io_sam_domain_info("", &(delta->domain_info),
- ps, depth);
- break;
- }
- case 2:
- {
- net_io_sam_group_info("", &(delta->group_info),
- ps, depth);
- break;
- }
- case 5:
- {
- net_io_sam_account_info("", sess_key,
- &(delta->account_info),
- ps, depth);
- break;
- }
- case 8:
- {
- net_io_sam_group_mem_info("", &(delta->grp_mem_info),
- ps, depth);
- break;
- }
- case 9:
- {
- net_io_sam_alias_info("", &(delta->alias_info),
- ps, depth);
- break;
- }
- case 0xC:
- {
- net_io_sam_alias_mem_info("", &(delta->als_mem_info),
- ps, depth);
- break;
- }
- default:
- {
- DEBUG(0, ("Replication error: Unknown delta type %x\n", type));
- break;
- }
- }
-
- return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-BOOL net_io_r_sam_sync(char *desc, uint8 sess_key[16],
- NET_R_SAM_SYNC *r_s, prs_struct *ps, int depth)
-{
- uint32 i;
-
- if (r_s == NULL) return False;
-
- prs_debug(ps, depth, desc, "net_io_r_sam_sync");
- depth++;
-
- smb_io_cred("", &(r_s->srv_creds), ps, depth);
- prs_uint32("sync_context", ps, depth, &(r_s->sync_context));
-
- prs_uint32("ptr_deltas", ps, depth, &(r_s->ptr_deltas));
- if (r_s->ptr_deltas != 0)
- {
- prs_uint32("num_deltas ", ps, depth, &(r_s->num_deltas ));
- prs_uint32("ptr_deltas2", ps, depth, &(r_s->ptr_deltas2));
- if (r_s->ptr_deltas2 != 0)
- {
- prs_uint32("num_deltas2", ps, depth, &(r_s->num_deltas2));
- if (r_s->num_deltas2 != r_s->num_deltas)
- {
- /* RPC fault */
- return False;
- }
-
- for (i = 0; i < r_s->num_deltas2; i++)
- {
- net_io_sam_delta_hdr("", &r_s->hdr_deltas[i], ps, depth);
- }
-
- for (i = 0; i < r_s->num_deltas2; i++)
- {
- net_io_sam_delta_ctr("", sess_key,
- &r_s->deltas[i],
- r_s->hdr_deltas[i].type3, ps, depth);
- }
- }
- }