diff options
author | Günther Deschner <gd@samba.org> | 2006-02-27 10:32:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:10:25 -0500 |
commit | e54786b53543b4667288c64abb55478fddd95061 (patch) | |
tree | c9641bd414989a72be6c425f9857f5731da74188 /source3/rpc_parse/parse_samr.c | |
parent | bd97e1a5eae982feda5e5bbd08e7f4e3b6473baf (diff) | |
download | samba-e54786b53543b4667288c64abb55478fddd95061.tar.gz samba-e54786b53543b4667288c64abb55478fddd95061.tar.bz2 samba-e54786b53543b4667288c64abb55478fddd95061.zip |
r13711: * Correctly handle acb_info/acct_flags as uint32 not as uint16.
* Fix a couple of related parsing issues.
* in the info3 reply in a samlogon, return the ACB-flags (instead of
returning zero)
Guenther
(This used to be commit 5b89e8bc24f0fdc8b52d5c9e849aba723df34ea7)
Diffstat (limited to 'source3/rpc_parse/parse_samr.c')
-rw-r--r-- | source3/rpc_parse/parse_samr.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c index fc4d7a3ab3..49d0fb7d72 100644 --- a/source3/rpc_parse/parse_samr.c +++ b/source3/rpc_parse/parse_samr.c @@ -1004,7 +1004,7 @@ inits a SAM_ENTRY1 structure. static void init_sam_entry1(SAM_ENTRY1 *sam, uint32 user_idx, UNISTR2 *sam_name, UNISTR2 *sam_full, UNISTR2 *sam_desc, uint32 rid_user, - uint16 acb_info) + uint32 acb_info) { DEBUG(5, ("init_sam_entry1\n")); @@ -1040,10 +1040,7 @@ static BOOL sam_io_sam_entry1(const char *desc, SAM_ENTRY1 * sam, if(!prs_uint32("rid_user ", ps, depth, &sam->rid_user)) return False; - if(!prs_uint16("acb_info ", ps, depth, &sam->acb_info)) - return False; - - if(!prs_align(ps)) + if(!prs_uint32("acb_info ", ps, depth, &sam->acb_info)) return False; if (!smb_io_unihdr("hdr_acct_name", &sam->hdr_acct_name, ps, depth)) @@ -1085,7 +1082,7 @@ inits a SAM_ENTRY2 structure. ********************************************************************/ static void init_sam_entry2(SAM_ENTRY2 * sam, uint32 user_idx, UNISTR2 *sam_name, UNISTR2 *sam_desc, - uint32 rid_user, uint16 acb_info) + uint32 rid_user, uint32 acb_info) { DEBUG(5, ("init_sam_entry2\n")); @@ -1118,10 +1115,7 @@ static BOOL sam_io_sam_entry2(const char *desc, SAM_ENTRY2 * sam, if(!prs_uint32("rid_user ", ps, depth, &sam->rid_user)) return False; - if(!prs_uint16("acb_info ", ps, depth, &sam->acb_info)) - return False; - - if(!prs_align(ps)) + if(!prs_uint32("acb_info ", ps, depth, &sam->acb_info)) return False; if(!smb_io_unihdr("unihdr", &sam->hdr_srv_name, ps, depth)) /* account name unicode string header */ @@ -1322,7 +1316,7 @@ inits a SAMR_Q_ENUM_DOM_USERS structure. void init_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS * q_e, POLICY_HND *pol, uint32 start_idx, - uint16 acb_mask, uint16 unk_1, uint32 size) + uint32 acb_mask, uint32 size) { DEBUG(5, ("init_samr_q_enum_dom_users\n")); @@ -1330,7 +1324,6 @@ void init_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS * q_e, POLICY_HND *pol, q_e->start_idx = start_idx; /* zero indicates lots */ q_e->acb_mask = acb_mask; - q_e->unknown_1 = unk_1; q_e->max_size = size; } @@ -1355,9 +1348,7 @@ BOOL samr_io_q_enum_dom_users(const char *desc, SAMR_Q_ENUM_DOM_USERS * q_e, if(!prs_uint32("start_idx", ps, depth, &q_e->start_idx)) return False; - if(!prs_uint16("acb_mask ", ps, depth, &q_e->acb_mask)) - return False; - if(!prs_uint16("unknown_1", ps, depth, &q_e->unknown_1)) + if(!prs_uint32("acb_mask ", ps, depth, &q_e->acb_mask)) return False; if(!prs_uint32("max_size ", ps, depth, &q_e->max_size)) |