extern int DEBUGLEVEL;
+/*******************************************************************
+reads or writes an LSA_R_OPEN_POL structure.
+********************************************************************/
+char* lsa_io_r_open_pol(BOOL io, LSA_R_OPEN_POL *r_p, char *q, char *base, int align)
+{
+ if (r_p == NULL) return NULL;
+
+ q = smb_io_pol_hnd(io, &(r_p->pol), q, base, align);
+
+ RW_IVAL(io, q, r_p->status, 0); q += 4;
+
+ return q;
+}
+
/*******************************************************************
reads or writes an LSA_Q_QUERY_INFO structure.
********************************************************************/
{
if (q_q == NULL) return NULL;
+ q = smb_io_pol_hnd(io, &(q_q->pol), q, base, align);
+
RW_SVAL(io, q, q_q->info_class, 0); q += 2;
return q;
/*******************************************************************
reads or writes a structure.
********************************************************************/
-char* lsa_io_q_auth2(BOOL io, LSA_Q_AUTH_2 *q_a, char *q, char *base, int align)
+char* lsa_io_q_auth_2(BOOL io, LSA_Q_AUTH_2 *q_a, char *q, char *base, int align)
{
if (q_a == NULL) return NULL;
q = align_offset(q, base, align);
- q = smb_io_chal(io, &(r_s->srv_chal), q, base, align); /* server challenge */
+ q = smb_io_cred(io, &(r_s->srv_cred), q, base, align); /* server challenge */
RW_IVAL(io, q, r_s->status, 0); q += 4;
RW_IVAL(io, q, usr->buffer_dom_id, 0); q += 4; /* undocumented logon domain id pointer */
RW_PCVAL(io, q, usr->padding, 40); q += 40; /* unused padding bytes? */
- RW_IVAL(io, q, usr->num_sids, 0); q += 4; /* 0 - num_sids */
- RW_IVAL(io, q, usr->buffer_sids, 0); q += 4; /* NULL - undocumented pointer to SIDs. */
+ RW_IVAL(io, q, usr->num_other_sids, 0); q += 4; /* 0 - num_sids */
+ RW_IVAL(io, q, usr->buffer_other_sids, 0); q += 4; /* NULL - undocumented pointer to SIDs. */
q = smb_io_unistr2(io, &(usr->uni_user_name) , q, base, align); /* username unicode string */
q = smb_io_unistr2(io, &(usr->uni_full_name) , q, base, align); /* user's full name unicode string */
q = smb_io_unistr2(io, &( usr->uni_logon_srv), q, base, align); /* logon server unicode string */
q = smb_io_unistr2(io, &( usr->uni_logon_dom), q, base, align); /* logon domain unicode string */
- q = smb_io_dom_sid(io, &(usr->undoc_dom_sids[0]), q, base, align); /* undocumented - domain SIDs */
- q = smb_io_dom_sid(io, &(usr->undoc_dom_sids[1]), q, base, align); /* undocumented - domain SIDs */
q = smb_io_dom_sid(io, &(usr->dom_sid), q, base, align); /* domain SID */
+ for (i = 0; i < usr->num_other_sids; i++)
+ {
+ q = smb_io_dom_sid(io, &(usr->other_sids[i]), q, base, align); /* other domain SIDs */
+ }
+
return q;
}
q = smb_io_cred(io, &(r_l->srv_creds), q, base, align); /* server credentials. server time stamp appears to be ignored. */
RW_IVAL(io, q, r_l->buffer_user, 0); q += 4;
- q = lsa_io_user_info(io, &(r_l->user), q, base, align);
+ if (r_l->buffer_user != 0)
+ {
+ q = lsa_io_user_info(io, r_l->user, q, base, align);
+ }
RW_IVAL(io, q, r_l->auth_resp, 0); q += 4; /* 1 - Authoritative response; 0 - Non-Auth? */
return q;
}
#endif
-
-