From 0324460409a0a5c9ad0a1974b66196a95ffe6d9f Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 8 Mar 2000 07:59:55 +0000 Subject: - acb_info is a 32-bit field in samr stuff (oops!!) sun cascade with a different byte order from nt is VERY useful, it can be used to identify the size of structure members because the byte order will be swapped, in comparative traces. - auth_resp in NETLOGON is a parameter to net_r_sam_logon, NOT part of the NET_USER_INFO struct. - domain_client_validate was grabbing the secret $MACHINE.ACC, then the unicode string needed to be byte-swapped before being passwd to nt_owf_genW. --- source/include/proto.h | 5 +- source/include/rpc_netlogon.h | 5 +- source/include/rpc_parse_proto.h | 889 ++++++++++++++++++++----------------- source/include/rpc_samr.h | 8 +- source/include/winbindd_proto.h | 889 ++++++++++++++++++++----------------- source/netlogond/srv_netlogon_nt.c | 18 +- source/rpc_client/cli_login.c | 6 +- source/rpc_client/msrpc_lsarpc.c | 10 +- source/rpc_parse/parse_net.c | 21 +- source/rpc_parse/parse_samr.c | 19 +- source/rpc_server/srv_netlog.c | 3 +- 11 files changed, 997 insertions(+), 876 deletions(-) diff --git a/source/include/proto.h b/source/include/proto.h index 99fc4852622..e2bfc7159a2 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -1242,7 +1242,8 @@ uint32 _net_srv_pwset(const DOM_CLNT_INFO * clnt_id, uint32 _net_sam_logon(const DOM_SAM_INFO * sam_id, uint16 validation_level, DOM_CRED * srv_creds, - NET_USER_INFO_CTR * uctr, uint16 remote_pid); + NET_USER_INFO_CTR * uctr, uint16 remote_pid, + uint32 * auth_resp); uint32 _net_sam_logoff(const DOM_SAM_INFO * sam_id, DOM_CRED * srv_creds, uint16 remote_pid); uint32 _net_sam_sync(const UNISTR2 * uni_srv_name, @@ -3685,7 +3686,7 @@ uint32 lookup_name(const char *name, DOM_SID *sid, uint32 *type); /*The following definitions come from rpc_server/srv_netlog.c */ -BOOL api_netlog_rpc(rpcsrv_struct *p); +BOOL api_netlog_rpc(rpcsrv_struct * p); /*The following definitions come from rpc_server/srv_pipe.c */ diff --git a/source/include/rpc_netlogon.h b/source/include/rpc_netlogon.h index 1cd53f0d2b5..ed7fdd8cc19 100644 --- a/source/include/rpc_netlogon.h +++ b/source/include/rpc_netlogon.h @@ -93,8 +93,6 @@ typedef struct net_user_info_2 DOM_SID2 dom_sid; /* domain SID */ - uint32 auth_resp; /* 1 - Authoritative response */ - } NET_USER_INFO_2; /* NET_USER_INFO_3 */ @@ -150,8 +148,6 @@ typedef struct net_user_info_3 DOM_SID2 dom_sid; /* domain SID */ DOM_SID2 other_sids[LSA_MAX_SIDS]; /* undocumented - domain SIDs */ - uint32 auth_resp; /* 1 - Authoritative response */ - } NET_USER_INFO_3; @@ -453,6 +449,7 @@ typedef struct net_r_sam_logon_info DOM_CRED srv_creds; /* server credentials. server time stamp appears to be ignored. */ NET_USER_INFO_CTR ctr; + uint32 auth_resp; /* 1 - Authoritative response */ uint32 status; /* return code */ diff --git a/source/include/rpc_parse_proto.h b/source/include/rpc_parse_proto.h index b46543862ae..5d00cd88140 100644 --- a/source/include/rpc_parse_proto.h +++ b/source/include/rpc_parse_proto.h @@ -393,438 +393,501 @@ BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER * rav, /*The following definitions come from rpc_parse/parse_samr.c */ -BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd); -BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u, - POLICY_HND *pol, const char *dom_name); -BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN *r_u, - DOM_SID *dom_sid, uint32 status); -BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D *q_u, - const POLICY_HND *dom_pol, - const DOM_SID *sid); -BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u, - const POLICY_HND *connect_pol, uint32 flags, - const DOM_SID *sid); -BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol); -BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ *q_u, - const POLICY_HND *user_pol, uint32 sec_info); -BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ *q_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u, - POLICY_HND *domain_pol, uint16 switch_value); -BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO *q_u, prs_struct *ps, int depth); -BOOL make_unk_info3(SAM_UNK_INFO_3 *u_3); -BOOL make_unk_info6(SAM_UNK_INFO_6 *u_6); -BOOL make_unk_info7(SAM_UNK_INFO_7 *u_7); -BOOL make_unk_info2(SAM_UNK_INFO_2 *u_2, char *domain, char *server); -BOOL make_unk_info1(SAM_UNK_INFO_1 *u_1); -BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO *r_u, - uint16 switch_value, SAM_UNK_CTR *ctr, +BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND * q_c, POLICY_HND * hnd); +BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN * q_u, + POLICY_HND * pol, const char *dom_name); +BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN * r_u, + DOM_SID * dom_sid, uint32 status); +BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D * q_u, + const POLICY_HND * dom_pol, const DOM_SID * sid); +BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN * q_u, + const POLICY_HND * connect_pol, uint32 flags, + const DOM_SID * sid); +BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO * q_u, + POLICY_HND * user_pol); +BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ * q_u, + const POLICY_HND * user_pol, uint32 sec_info); +BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ * q_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO * q_u, + POLICY_HND * domain_pol, uint16 switch_value); +BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO * q_u, + prs_struct * ps, int depth); +BOOL make_unk_info3(SAM_UNK_INFO_3 * u_3); +BOOL make_unk_info6(SAM_UNK_INFO_6 * u_6); +BOOL make_unk_info7(SAM_UNK_INFO_7 * u_7); +BOOL make_unk_info2(SAM_UNK_INFO_2 * u_2, char *domain, char *server); +BOOL make_unk_info1(SAM_UNK_INFO_1 * u_1); +BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO * r_u, + uint16 switch_value, SAM_UNK_CTR * ctr, uint32 status); -BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO *r_u, prs_struct *ps, int depth); -BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ *r_u, prs_struct *ps, int depth); -BOOL make_sam_entry(SAM_ENTRY *sam, uint32 len_sam_name, uint32 rid); -BOOL make_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol, - uint32 start_idx, +BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO * r_u, + prs_struct * ps, int depth); +BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ * r_u, + prs_struct * ps, int depth); +BOOL make_sam_entry(SAM_ENTRY * sam, uint32 len_sam_name, uint32 rid); +BOOL make_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); -BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS *r_u, - uint32 next_idx, - uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol, +BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO * q_e, POLICY_HND * pol, uint16 switch_level, uint32 start_idx, uint32 max_entries); -BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth); -BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, - DOMAIN_GRP *grp); -BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, + DOMAIN_GRP * grp); +BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, - DOMAIN_GRP *grp); -BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO *r_u, +BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, + DOMAIN_GRP * grp); +BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO * r_u, uint32 num_entries, uint32 data_size, - uint16 switch_level, SAM_DISPINFO_CTR *ctr, + uint16 switch_level, SAM_DISPINFO_CTR * ctr, uint32 status); -BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP *q_c, - const POLICY_HND *hnd, - uint32 access_mask, uint32 rid); -BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_group_info1(GROUP_INFO1 *gr1, - char *acct_name, char *acct_desc, - uint32 num_members); -BOOL samr_io_group_info1(char *desc, GROUP_INFO1 *gr1, prs_struct *ps, int depth); -BOOL make_samr_group_info4(GROUP_INFO4 *gr4, const char *acct_desc); -BOOL samr_io_group_info4(char *desc, GROUP_INFO4 *gr4, prs_struct *ps, int depth); -BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR *ctr, prs_struct *ps, int depth); -BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP *q_e, - POLICY_HND *pol, - const char *acct_desc); -BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_struct *ps, int depth); -BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e, - POLICY_HND *pol, - uint32 rid); -BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol, - uint32 status); -BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM *q_e, - POLICY_HND *pol, - uint32 rid); -BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM *r_u, POLICY_HND *pol, - uint32 status); -BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO *q_e, - POLICY_HND *pol, GROUP_INFO_CTR *ctr); -BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO *r_u, - uint32 status); -BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO *q_e, - POLICY_HND *pol, - uint16 switch_level); -BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO *r_u, GROUP_INFO_CTR *ctr, - uint32 status); -BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM *q_c, POLICY_HND *hnd); -BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u, - uint32 num_entries, uint32 *rid, uint32 *attr, uint32 status); -BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM *r_u, prs_struct *ps, int depth); -void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u); -BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS *q_u, - POLICY_HND *hnd); -BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS *r_u, - uint32 num_gids, DOM_GID *gid, uint32 status); -BOOL samr_io_gids(char *desc, uint32 *num_gids, DOM_GID **gid, prs_struct *ps, int depth); -BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS *q_e, - const POLICY_HND *pol, +BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP * q_c, + const POLICY_HND * hnd, + uint32 access_mask, uint32 rid); +BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_group_info1(GROUP_INFO1 * gr1, + char *acct_name, char *acct_desc, + uint32 num_members); +BOOL samr_io_group_info1(char *desc, GROUP_INFO1 * gr1, prs_struct * ps, + int depth); +BOOL make_samr_group_info4(GROUP_INFO4 * gr4, const char *acct_desc); +BOOL samr_io_group_info4(char *desc, GROUP_INFO4 * gr4, prs_struct * ps, + int depth); +BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR * ctr, prs_struct * ps, + int depth); +BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP * q_e, + POLICY_HND * pol, const char *acct_desc); +BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP * q_e, + prs_struct * ps, int depth); +BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM * q_e, + POLICY_HND * pol, uint32 rid); +BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM * r_u, POLICY_HND * pol, + uint32 status); +BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM * q_e, + POLICY_HND * pol, uint32 rid); +BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM * r_u, POLICY_HND * pol, + uint32 status); +BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO * q_e, + POLICY_HND * pol, GROUP_INFO_CTR * ctr); +BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO * r_u, uint32 status); +BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO * q_e, + POLICY_HND * pol, uint16 switch_level); +BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO * r_u, + GROUP_INFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM * q_c, POLICY_HND * hnd); +BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u, + uint32 num_entries, uint32 * rid, + uint32 * attr, uint32 status); +BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM * r_u, + prs_struct * ps, int depth); +void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u); +BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS * q_u, + POLICY_HND * hnd); +BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS * r_u, + uint32 num_gids, DOM_GID * gid, + uint32 status); +BOOL samr_io_gids(char *desc, uint32 * num_gids, DOM_GID ** gid, + prs_struct * ps, int depth); +BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS * q_e, + const POLICY_HND * pol, uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS *r_u, - uint32 next_idx, uint32 num_sam_entries); -BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS *q_e, - const POLICY_HND *pol, +BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS * q_e, + const POLICY_HND * pol, uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS *r_u, - uint32 next_idx, uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol, - uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES *r_u, - uint32 next_idx, - uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth); -BOOL make_samr_alias_info3(ALIAS_INFO3 *al3, const char *acct_desc); -BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 *al3, prs_struct *ps, int depth); -BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR *ctr, prs_struct *ps, int depth); -BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_e, - const POLICY_HND *pol, uint16 switch_level); -BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *r_u, - ALIAS_INFO_CTR *ctr, uint32 status); -BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO *q_u, - const POLICY_HND *hnd, - ALIAS_INFO_CTR *ctr); -BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u, - const POLICY_HND *hnd, - uint32 num_sids, - uint32 *ptr_sid, DOM_SID2 *sid); -BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES *q_u, prs_struct *ps, int depth); -void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u); -BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES *r_u, - uint32 num_rids, uint32 *rid, uint32 status); -BOOL samr_io_rids(char *desc, uint32 *num_rids, uint32 **rid, prs_struct *ps, int depth); -BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS *q_u, const POLICY_HND *pol, - uint32 unknown_0, uint32 rid); -BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u, - const POLICY_HND *pol, uint32 flags, - uint32 num_rids, const uint32 *rid); -BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS *q_u, prs_struct *ps, int depth); -void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u); -BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u, - uint32 num_names, UNIHDR *hdr_name, UNISTR2 *uni_name, - uint32 *type); -BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS *r_u, prs_struct *ps, int depth); -void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u); -BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS *q_u, POLICY_HND *hnd); -BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS *q_u, POLICY_HND *hnd, - const char *acct_desc); -BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM *q_u, POLICY_HND *hnd, - DOM_SID *sid); -BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd, - DOM_SID *sid); -BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u, - uint32 status); -BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c, - const POLICY_HND *hnd); -BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM *r_u, - uint32 num_sids, DOM_SID2 *sid, uint32 status); -BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u, - const POLICY_HND *pol, uint32 flags, +BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES * q_e, + POLICY_HND * pol, uint32 start_idx, + uint32 size); +BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u, + prs_struct * ps, int depth); +BOOL make_samr_alias_info3(ALIAS_INFO3 * al3, const char *acct_desc); +BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 * al3, prs_struct * ps, + int depth); +BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR * ctr, prs_struct * ps, + int depth); +BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO * q_e, + const POLICY_HND * pol, uint16 switch_level); +BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO * r_u, + ALIAS_INFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO * q_u, + const POLICY_HND * hnd, ALIAS_INFO_CTR * ctr); +BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u, + const POLICY_HND * hnd, + uint32 num_sids, + uint32 * ptr_sid, DOM_SID2 * sid); +BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES * q_u, + prs_struct * ps, int depth); +void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u); +BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES * r_u, + uint32 num_rids, uint32 * rid, + uint32 status); +BOOL samr_io_rids(char *desc, uint32 * num_rids, uint32 ** rid, + prs_struct * ps, int depth); +BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS * q_u, const POLICY_HND * pol, + uint32 unknown_0, uint32 rid); +BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u, + const POLICY_HND * pol, uint32 flags, + uint32 num_rids, const uint32 * rid); +BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS * q_u, + prs_struct * ps, int depth); +void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u); +BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u, + uint32 num_names, UNIHDR * hdr_name, + UNISTR2 * uni_name, uint32 * type); +BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS * r_u, + prs_struct * ps, int depth); +void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u); +BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS * q_u, POLICY_HND * hnd); +BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS * q_u, + POLICY_HND * hnd, const char *acct_desc); +BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM * q_u, POLICY_HND * hnd, + DOM_SID * sid); +BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM * q_u, POLICY_HND * hnd, + DOM_SID * sid); +BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS * r_u, + uint32 status); +BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM * q_c, + const POLICY_HND * hnd); +BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM * r_u, + uint32 num_sids, DOM_SID2 * sid, + uint32 status); +BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_u, + const POLICY_HND * pol, uint32 flags, uint32 num_names, char **name); -BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES *q_u, prs_struct *ps, int depth); -void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_l); -BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_u, +BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES * q_u, + prs_struct * ps, int depth); +void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_l); +BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_u, uint32 num_rids, - const uint32 *rid, const uint32 *type, + const uint32 * rid, const uint32 * type, uint32 status); -BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES *r_u, prs_struct *ps, int depth); -void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_l); -BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER *q_u, - const POLICY_HND *pol, - uint32 access_mask, uint32 rid); -BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER *q_u, - POLICY_HND *pol, - const char *name, - uint16 acb_info, uint32 access_mask); -BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO *q_u, - POLICY_HND *hnd, uint16 switch_value); -BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO *q_u, prs_struct *ps, int depth); -BOOL make_sam_user_info12(SAM_USER_INFO_12 *usr, - uint16 acb_info, - const uint8 lm_pwd[16], - const uint8 nt_pwd[16]); -BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 *u, prs_struct *ps, int depth); -BOOL make_sam_user_info10(SAM_USER_INFO_10 *usr, - uint32 acb_info); -BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 *usr, prs_struct *ps, int depth); -BOOL make_sam_user_info11(SAM_USER_INFO_11 *usr, - NTTIME *expiry, - char *mach_acct, - uint32 rid_user, - uint32 rid_group, - uint16 acct_ctrl); -BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 *usr, prs_struct *ps, int depth); -BOOL make_sam_user_info24(SAM_USER_INFO_24 *usr, - const char newpass[516], uint16 passlen); -BOOL make_sam_user_info23W(SAM_USER_INFO_23 *usr, - - const NTTIME *logon_time, /* all zeros */ - const NTTIME *logoff_time, /* all zeros */ - const NTTIME *kickoff_time, /* all zeros */ - const NTTIME *pass_last_set_time, /* all zeros */ - const NTTIME *pass_can_change_time, /* all zeros */ - const NTTIME *pass_must_change_time, /* all zeros */ - - const UNISTR2 *user_name, - const UNISTR2 *full_name, - const UNISTR2 *home_dir, - const UNISTR2 *dir_drive, - const UNISTR2 *log_scr, - const UNISTR2 *prof_path, - const UNISTR2 *desc, - const UNISTR2 *wkstas, - const UNISTR2 *unk_str, - const UNISTR2 *mung_dial, - - uint32 user_rid, /* 0x0000 0000 */ - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - char newpass[516], - uint32 unknown_6); -BOOL make_sam_user_info23A(SAM_USER_INFO_23 *usr, - - NTTIME *logon_time, /* all zeros */ - NTTIME *logoff_time, /* all zeros */ - NTTIME *kickoff_time, /* all zeros */ - NTTIME *pass_last_set_time, /* all zeros */ - NTTIME *pass_can_change_time, /* all zeros */ - NTTIME *pass_must_change_time, /* all zeros */ - - char *user_name, /* NULL */ - char *full_name, - char *home_dir, - char *dir_drive, - char *log_scr, - char *prof_path, - char *desc, - char *wkstas, - char *unk_str, - char *mung_dial, - - uint32 user_rid, /* 0x0000 0000 */ - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - char newpass[516], - uint32 unknown_6); -BOOL make_sam_user_info21W(SAM_USER_INFO_21 *usr, - - const NTTIME *logon_time, - const NTTIME *logoff_time, - const NTTIME *kickoff_time, - const NTTIME *pass_last_set_time, - const NTTIME *pass_can_change_time, - const NTTIME *pass_must_change_time, - - const UNISTR2 *user_name, - const UNISTR2 *full_name, - const UNISTR2 *home_dir, - const UNISTR2 *dir_drive, - const UNISTR2 *log_scr, - const UNISTR2 *prof_path, - const UNISTR2 *desc, - const UNISTR2 *wkstas, - const UNISTR2 *unk_str, - const UNISTR2 *mung_dial, - - const uchar lm_pwd[16], - const uchar nt_pwd[16], - - uint32 user_rid, - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - const LOGON_HRS *hrs, - uint32 unknown_5, - uint32 unknown_6); -BOOL make_sam_user_info21A(SAM_USER_INFO_21 *usr, - - NTTIME *logon_time, - NTTIME *logoff_time, - NTTIME *kickoff_time, - NTTIME *pass_last_set_time, - NTTIME *pass_can_change_time, - NTTIME *pass_must_change_time, - - char *user_name, - char *full_name, - char *home_dir, - char *dir_drive, - char *log_scr, - char *prof_path, - char *desc, - char *wkstas, - char *unk_str, - char *mung_dial, - - uint32 user_rid, - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - uint32 unknown_6); -BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 *usr, prs_struct *ps, int depth); -uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR *ctr, - uint16 switch_value, - const SAM_USER_INFO_21 *usr); -BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr, const uchar *sess_key, - uint16 switch_value, void *info); -BOOL samr_io_userinfo_ctr(char *desc, SAM_USERINFO_CTR *ctr, prs_struct *ps, int depth); -void free_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr); -BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO *r_u, - SAM_USERINFO_CTR *ctr, uint32 status); -BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u, - POLICY_HND *hnd, - uint16 switch_value, void *info); -BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO *q_u, prs_struct *ps, int depth); -void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u); -BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO *r_u, uint32 status); -BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u, - POLICY_HND *hnd, - uint16 switch_value, - SAM_USERINFO_CTR *ctr); -BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 *q_u, prs_struct *ps, int depth); -void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u); -BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 *r_u, - uint32 status); -BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_connect(SAMR_Q_CONNECT *q_u, - const char *srv_name, uint32 access_mask); -BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON *q_u); -BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO *q_u, const char *srv_name); -BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO *r_u, prs_struct *ps, int depth); -BOOL make_enc_passwd(SAMR_ENC_PASSWD *pwd, const char pass[512]); -BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD *pwd, prs_struct *ps, int depth); -BOOL make_enc_hash(SAMR_ENC_HASH *hsh, const uchar hash[16]); -BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH *hsh, prs_struct *ps, int depth); -BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u, +BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES * r_u, + prs_struct * ps, int depth); +void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_l); +BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER * q_u, + const POLICY_HND * pol, + uint32 access_mask, uint32 rid); +BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER * q_u, + POLICY_HND * pol, + const char *name, + uint32 acb_info, uint32 access_mask); +BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO * q_u, + POLICY_HND * hnd, uint16 switch_value); +BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO * q_u, + prs_struct * ps, int depth); +BOOL make_sam_user_info12(SAM_USER_INFO_12 * usr, + uint16 acb_info, + const uint8 lm_pwd[16], const uint8 nt_pwd[16]); +BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 * u, prs_struct * ps, + int depth); +BOOL make_sam_user_info10(SAM_USER_INFO_10 * usr, uint32 acb_info); +BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 * usr, prs_struct * ps, + int depth); +BOOL make_sam_user_info11(SAM_USER_INFO_11 * usr, + NTTIME * expiry, + char *mach_acct, + uint32 rid_user, uint32 rid_group, uint16 acct_ctrl); +BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 * usr, prs_struct * ps, + int depth); +BOOL make_sam_user_info24(SAM_USER_INFO_24 * usr, + const char newpass[516], uint16 passlen); +BOOL make_sam_user_info23W(SAM_USER_INFO_23 * usr, const NTTIME * logon_time, /* all zeros */ + const NTTIME * logoff_time, /* all zeros */ + const NTTIME * kickoff_time, /* all zeros */ + const NTTIME * pass_last_set_time, /* all zeros */ + const NTTIME * pass_can_change_time, /* all zeros */ + const NTTIME * pass_must_change_time, /* all zeros */ + const UNISTR2 * user_name, + const UNISTR2 * full_name, + const UNISTR2 * home_dir, + const UNISTR2 * dir_drive, + const UNISTR2 * log_scr, + const UNISTR2 * prof_path, + const UNISTR2 * desc, + const UNISTR2 * wkstas, + const UNISTR2 * unk_str, + const UNISTR2 * mung_dial, uint32 user_rid, /* 0x0000 0000 */ + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, + char newpass[516], uint32 unknown_6); +BOOL make_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all zeros */ + NTTIME * logoff_time, /* all zeros */ + NTTIME * kickoff_time, /* all zeros */ + NTTIME * pass_last_set_time, /* all zeros */ + NTTIME * pass_can_change_time, /* all zeros */ + NTTIME * pass_must_change_time, /* all zeros */ + char *user_name, /* NULL */ + char *full_name, + char *home_dir, char *dir_drive, char *log_scr, char *prof_path, char *desc, char *wkstas, char *unk_str, char *mung_dial, uint32 user_rid, /* 0x0000 0000 */ + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, + char newpass[516], uint32 unknown_6); +BOOL make_sam_user_info21W(SAM_USER_INFO_21 * usr, + const NTTIME * logon_time, + const NTTIME * logoff_time, + const NTTIME * kickoff_time, + const NTTIME * pass_last_set_time, + const NTTIME * pass_can_change_time, + const NTTIME * pass_must_change_time, + const UNISTR2 * user_name, + const UNISTR2 * full_name, + const UNISTR2 * home_dir, + const UNISTR2 * dir_drive, + const UNISTR2 * log_scr, + const UNISTR2 * prof_path, + const UNISTR2 * desc, + const UNISTR2 * wkstas, + const UNISTR2 * unk_str, + const UNISTR2 * mung_dial, + const uchar lm_pwd[16], + const uchar nt_pwd[16], + uint32 user_rid, + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + const LOGON_HRS * hrs, + uint32 unknown_5, uint32 unknown_6); +BOOL make_sam_user_info21A(SAM_USER_INFO_21 * usr, + NTTIME * logon_time, + NTTIME * logoff_time, + NTTIME * kickoff_time, + NTTIME * pass_last_set_time, + NTTIME * pass_can_change_time, + NTTIME * pass_must_change_time, + char *user_name, + char *full_name, + char *home_dir, + char *dir_drive, + char *log_scr, + char *prof_path, + char *desc, + char *wkstas, + char *unk_str, + char *mung_dial, + uint32 user_rid, + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, uint32 unknown_6); +BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 * usr, prs_struct * ps, + int depth); +uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR * ctr, + uint16 switch_value, + const SAM_USER_INFO_21 * usr); +BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr, const uchar * sess_key, + uint16 switch_value, void *info); +BOOL samr_io_userinfo_ctr(char *desc, SAM_USERINFO_CTR * ctr, prs_struct * ps, + int depth); +void free_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr); +BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO * r_u, + SAM_USERINFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u, + POLICY_HND * hnd, + uint16 switch_value, void *info); +BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO * q_u, + prs_struct * ps, int depth); +void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u); +BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO * r_u, uint32 status); +BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u, + POLICY_HND * hnd, + uint16 switch_value, SAM_USERINFO_CTR * ctr); +BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 * q_u, + prs_struct * ps, int depth); +void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u); +BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 * r_u, uint32 status); +BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_connect(SAMR_Q_CONNECT * q_u, + const char *srv_name, uint32 access_mask); +BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON * q_u); +BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO * q_u, + const char *srv_name); +BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO * r_u, + prs_struct * ps, int depth); +BOOL make_enc_passwd(SAMR_ENC_PASSWD * pwd, const char pass[512]); +BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD * pwd, prs_struct * ps, + int depth); +BOOL make_enc_hash(SAMR_ENC_HASH * hsh, const uchar hash[16]); +BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH * hsh, prs_struct * ps, + int depth); +BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER * q_u, const char *dest_host, const char *user_name, const char nt_newpass[516], const uchar nt_oldhash[16], const char lm_newpass[516], const uchar lm_oldhash[16]); -BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER *r_u, uint32 status); -BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER *r_u, prs_struct *ps, int depth); +BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER * r_u, uint32 status); +BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER * r_u, + prs_struct * ps, int depth); /*The following definitions come from rpc_parse/parse_sec.c */ diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h index 80d0562206e..5f1fc20268e 100644 --- a/source/include/rpc_samr.h +++ b/source/include/rpc_samr.h @@ -181,8 +181,7 @@ typedef struct sam_user_info_23 uint32 user_rid; /* Primary User ID */ uint32 group_rid; /* Primary Group ID */ - uint16 acb_info; /* account info (ACB_xxxx bit-mask) */ - /* uint8 pad[2] */ + uint32 acb_info; /* account info (ACB_xxxx bit-mask) */ uint32 unknown_3; /* 0x09f8 27fa */ @@ -250,8 +249,7 @@ typedef struct sam_user_info_21 uint32 user_rid; /* Primary User ID */ uint32 group_rid; /* Primary Group ID */ - uint16 acb_info; /* account info (ACB_xxxx bit-mask) */ - /* uint8 pad[2] */ + uint32 acb_info; /* account info (ACB_xxxx bit-mask) */ uint32 unknown_3; /* 0x00ff ffff */ @@ -1338,7 +1336,7 @@ typedef struct q_samr_create_user_info UNIHDR hdr_name; /* unicode account name header */ UNISTR2 uni_name; /* unicode account name */ - uint16 acb_info; /* account control info */ + uint32 acb_info; /* account control info */ uint32 access_mask; /* 0xe005 00b0 */ } SAMR_Q_CREATE_USER; diff --git a/source/include/winbindd_proto.h b/source/include/winbindd_proto.h index 2f5db9b0edb..9cf7665cabb 100644 --- a/source/include/winbindd_proto.h +++ b/source/include/winbindd_proto.h @@ -2127,438 +2127,501 @@ BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER * rav, /*The following definitions come from rpc_parse/parse_samr.c */ -BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd); -BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u, - POLICY_HND *pol, const char *dom_name); -BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN *r_u, - DOM_SID *dom_sid, uint32 status); -BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D *q_u, - const POLICY_HND *dom_pol, - const DOM_SID *sid); -BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u, - const POLICY_HND *connect_pol, uint32 flags, - const DOM_SID *sid); -BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol); -BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ *q_u, - const POLICY_HND *user_pol, uint32 sec_info); -BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ *q_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u, - POLICY_HND *domain_pol, uint16 switch_value); -BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO *q_u, prs_struct *ps, int depth); -BOOL make_unk_info3(SAM_UNK_INFO_3 *u_3); -BOOL make_unk_info6(SAM_UNK_INFO_6 *u_6); -BOOL make_unk_info7(SAM_UNK_INFO_7 *u_7); -BOOL make_unk_info2(SAM_UNK_INFO_2 *u_2, char *domain, char *server); -BOOL make_unk_info1(SAM_UNK_INFO_1 *u_1); -BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO *r_u, - uint16 switch_value, SAM_UNK_CTR *ctr, +BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND * q_c, POLICY_HND * hnd); +BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN * q_u, + POLICY_HND * pol, const char *dom_name); +BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN * r_u, + DOM_SID * dom_sid, uint32 status); +BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D * q_u, + const POLICY_HND * dom_pol, const DOM_SID * sid); +BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN * q_u, + const POLICY_HND * connect_pol, uint32 flags, + const DOM_SID * sid); +BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO * q_u, + POLICY_HND * user_pol); +BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ * q_u, + const POLICY_HND * user_pol, uint32 sec_info); +BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ * q_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO * q_u, + POLICY_HND * domain_pol, uint16 switch_value); +BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO * q_u, + prs_struct * ps, int depth); +BOOL make_unk_info3(SAM_UNK_INFO_3 * u_3); +BOOL make_unk_info6(SAM_UNK_INFO_6 * u_6); +BOOL make_unk_info7(SAM_UNK_INFO_7 * u_7); +BOOL make_unk_info2(SAM_UNK_INFO_2 * u_2, char *domain, char *server); +BOOL make_unk_info1(SAM_UNK_INFO_1 * u_1); +BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO * r_u, + uint16 switch_value, SAM_UNK_CTR * ctr, uint32 status); -BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO *r_u, prs_struct *ps, int depth); -BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ *r_u, prs_struct *ps, int depth); -BOOL make_sam_entry(SAM_ENTRY *sam, uint32 len_sam_name, uint32 rid); -BOOL make_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol, - uint32 start_idx, +BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO * r_u, + prs_struct * ps, int depth); +BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ * r_u, + prs_struct * ps, int depth); +BOOL make_sam_entry(SAM_ENTRY * sam, uint32 len_sam_name, uint32 rid); +BOOL make_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); -BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS *r_u, - uint32 next_idx, - uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol, +BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO * q_e, POLICY_HND * pol, uint16 switch_level, uint32 start_idx, uint32 max_entries); -BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth); -BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, - DOMAIN_GRP *grp); -BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, +BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, + DOMAIN_GRP * grp); +BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]); -BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 *sam, uint32 *num_entries, - uint32 *data_size, uint32 start_idx, - DOMAIN_GRP *grp); -BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO *r_u, +BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 * sam, uint32 * num_entries, + uint32 * data_size, uint32 start_idx, + DOMAIN_GRP * grp); +BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO * r_u, uint32 num_entries, uint32 data_size, - uint16 switch_level, SAM_DISPINFO_CTR *ctr, + uint16 switch_level, SAM_DISPINFO_CTR * ctr, uint32 status); -BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP *q_c, - const POLICY_HND *hnd, - uint32 access_mask, uint32 rid); -BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_group_info1(GROUP_INFO1 *gr1, - char *acct_name, char *acct_desc, - uint32 num_members); -BOOL samr_io_group_info1(char *desc, GROUP_INFO1 *gr1, prs_struct *ps, int depth); -BOOL make_samr_group_info4(GROUP_INFO4 *gr4, const char *acct_desc); -BOOL samr_io_group_info4(char *desc, GROUP_INFO4 *gr4, prs_struct *ps, int depth); -BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR *ctr, prs_struct *ps, int depth); -BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP *q_e, - POLICY_HND *pol, - const char *acct_desc); -BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_struct *ps, int depth); -BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e, - POLICY_HND *pol, - uint32 rid); -BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol, - uint32 status); -BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM *q_e, - POLICY_HND *pol, - uint32 rid); -BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM *r_u, POLICY_HND *pol, - uint32 status); -BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO *q_e, - POLICY_HND *pol, GROUP_INFO_CTR *ctr); -BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO *r_u, - uint32 status); -BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO *q_e, - POLICY_HND *pol, - uint16 switch_level); -BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO *r_u, GROUP_INFO_CTR *ctr, - uint32 status); -BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM *q_c, POLICY_HND *hnd); -BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u, - uint32 num_entries, uint32 *rid, uint32 *attr, uint32 status); -BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM *r_u, prs_struct *ps, int depth); -void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u); -BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS *q_u, - POLICY_HND *hnd); -BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS *r_u, - uint32 num_gids, DOM_GID *gid, uint32 status); -BOOL samr_io_gids(char *desc, uint32 *num_gids, DOM_GID **gid, prs_struct *ps, int depth); -BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS *q_e, - const POLICY_HND *pol, +BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP * q_c, + const POLICY_HND * hnd, + uint32 access_mask, uint32 rid); +BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_group_info1(GROUP_INFO1 * gr1, + char *acct_name, char *acct_desc, + uint32 num_members); +BOOL samr_io_group_info1(char *desc, GROUP_INFO1 * gr1, prs_struct * ps, + int depth); +BOOL make_samr_group_info4(GROUP_INFO4 * gr4, const char *acct_desc); +BOOL samr_io_group_info4(char *desc, GROUP_INFO4 * gr4, prs_struct * ps, + int depth); +BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR * ctr, prs_struct * ps, + int depth); +BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP * q_e, + POLICY_HND * pol, const char *acct_desc); +BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP * q_e, + prs_struct * ps, int depth); +BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM * q_e, + POLICY_HND * pol, uint32 rid); +BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM * r_u, POLICY_HND * pol, + uint32 status); +BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM * q_e, + POLICY_HND * pol, uint32 rid); +BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM * r_u, POLICY_HND * pol, + uint32 status); +BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO * q_e, + POLICY_HND * pol, GROUP_INFO_CTR * ctr); +BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO * r_u, uint32 status); +BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO * q_e, + POLICY_HND * pol, uint16 switch_level); +BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO * r_u, + GROUP_INFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM * q_c, POLICY_HND * hnd); +BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u, + uint32 num_entries, uint32 * rid, + uint32 * attr, uint32 status); +BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM * r_u, + prs_struct * ps, int depth); +void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u); +BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS * q_u, + POLICY_HND * hnd); +BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS * r_u, + uint32 num_gids, DOM_GID * gid, + uint32 status); +BOOL samr_io_gids(char *desc, uint32 * num_gids, DOM_GID ** gid, + prs_struct * ps, int depth); +BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS * q_e, + const POLICY_HND * pol, uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS *r_u, - uint32 next_idx, uint32 num_sam_entries); -BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS *q_e, - const POLICY_HND *pol, +BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS * q_e, + const POLICY_HND * pol, uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS *r_u, - uint32 next_idx, uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol, - uint32 start_idx, uint32 size); -BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES *r_u, - uint32 next_idx, - uint32 num_sam_entries); -BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth); -BOOL make_samr_alias_info3(ALIAS_INFO3 *al3, const char *acct_desc); -BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 *al3, prs_struct *ps, int depth); -BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR *ctr, prs_struct *ps, int depth); -BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_e, - const POLICY_HND *pol, uint16 switch_level); -BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO *q_e, prs_struct *ps, int depth); -BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *r_u, - ALIAS_INFO_CTR *ctr, uint32 status); -BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO *q_u, - const POLICY_HND *hnd, - ALIAS_INFO_CTR *ctr); -BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u, - const POLICY_HND *hnd, - uint32 num_sids, - uint32 *ptr_sid, DOM_SID2 *sid); -BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES *q_u, prs_struct *ps, int depth); -void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u); -BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES *r_u, - uint32 num_rids, uint32 *rid, uint32 status); -BOOL samr_io_rids(char *desc, uint32 *num_rids, uint32 **rid, prs_struct *ps, int depth); -BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS *q_u, const POLICY_HND *pol, - uint32 unknown_0, uint32 rid); -BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u, - const POLICY_HND *pol, uint32 flags, - uint32 num_rids, const uint32 *rid); -BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS *q_u, prs_struct *ps, int depth); -void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u); -BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u, - uint32 num_names, UNIHDR *hdr_name, UNISTR2 *uni_name, - uint32 *type); -BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS *r_u, prs_struct *ps, int depth); -void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u); -BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS *q_u, POLICY_HND *hnd); -BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS *q_u, POLICY_HND *hnd, - const char *acct_desc); -BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM *q_u, POLICY_HND *hnd, - DOM_SID *sid); -BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd, - DOM_SID *sid); -BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u, - uint32 status); -BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c, - const POLICY_HND *hnd); -BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM *r_u, - uint32 num_sids, DOM_SID2 *sid, uint32 status); -BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u, - const POLICY_HND *pol, uint32 flags, +BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES * q_e, + POLICY_HND * pol, uint32 start_idx, + uint32 size); +BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES * r_u, + uint32 next_idx, uint32 num_sam_entries); +BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u, + prs_struct * ps, int depth); +BOOL make_samr_alias_info3(ALIAS_INFO3 * al3, const char *acct_desc); +BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 * al3, prs_struct * ps, + int depth); +BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR * ctr, prs_struct * ps, + int depth); +BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO * q_e, + const POLICY_HND * pol, uint16 switch_level); +BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO * q_e, + prs_struct * ps, int depth); +BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO * r_u, + ALIAS_INFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO * q_u, + const POLICY_HND * hnd, ALIAS_INFO_CTR * ctr); +BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u, + const POLICY_HND * hnd, + uint32 num_sids, + uint32 * ptr_sid, DOM_SID2 * sid); +BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES * q_u, + prs_struct * ps, int depth); +void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u); +BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES * r_u, + uint32 num_rids, uint32 * rid, + uint32 status); +BOOL samr_io_rids(char *desc, uint32 * num_rids, uint32 ** rid, + prs_struct * ps, int depth); +BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS * q_u, const POLICY_HND * pol, + uint32 unknown_0, uint32 rid); +BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u, + const POLICY_HND * pol, uint32 flags, + uint32 num_rids, const uint32 * rid); +BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS * q_u, + prs_struct * ps, int depth); +void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u); +BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u, + uint32 num_names, UNIHDR * hdr_name, + UNISTR2 * uni_name, uint32 * type); +BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS * r_u, + prs_struct * ps, int depth); +void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u); +BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS * q_u, POLICY_HND * hnd); +BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS * q_u, + POLICY_HND * hnd, const char *acct_desc); +BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM * q_u, POLICY_HND * hnd, + DOM_SID * sid); +BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM * q_u, POLICY_HND * hnd, + DOM_SID * sid); +BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS * r_u, + uint32 status); +BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM * q_c, + const POLICY_HND * hnd); +BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM * r_u, + uint32 num_sids, DOM_SID2 * sid, + uint32 status); +BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_u, + const POLICY_HND * pol, uint32 flags, uint32 num_names, char **name); -BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES *q_u, prs_struct *ps, int depth); -void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_l); -BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_u, +BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES * q_u, + prs_struct * ps, int depth); +void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_l); +BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_u, uint32 num_rids, - const uint32 *rid, const uint32 *type, + const uint32 * rid, const uint32 * type, uint32 status); -BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES *r_u, prs_struct *ps, int depth); -void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_l); -BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER *q_c, POLICY_HND *hnd); -BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER *q_u, - const POLICY_HND *pol, - uint32 access_mask, uint32 rid); -BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER *q_u, - POLICY_HND *pol, - const char *name, - uint16 acb_info, uint32 access_mask); -BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO *q_u, - POLICY_HND *hnd, uint16 switch_value); -BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO *q_u, prs_struct *ps, int depth); -BOOL make_sam_user_info12(SAM_USER_INFO_12 *usr, - uint16 acb_info, - const uint8 lm_pwd[16], - const uint8 nt_pwd[16]); -BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 *u, prs_struct *ps, int depth); -BOOL make_sam_user_info10(SAM_USER_INFO_10 *usr, - uint32 acb_info); -BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 *usr, prs_struct *ps, int depth); -BOOL make_sam_user_info11(SAM_USER_INFO_11 *usr, - NTTIME *expiry, - char *mach_acct, - uint32 rid_user, - uint32 rid_group, - uint16 acct_ctrl); -BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 *usr, prs_struct *ps, int depth); -BOOL make_sam_user_info24(SAM_USER_INFO_24 *usr, - const char newpass[516], uint16 passlen); -BOOL make_sam_user_info23W(SAM_USER_INFO_23 *usr, - - const NTTIME *logon_time, /* all zeros */ - const NTTIME *logoff_time, /* all zeros */ - const NTTIME *kickoff_time, /* all zeros */ - const NTTIME *pass_last_set_time, /* all zeros */ - const NTTIME *pass_can_change_time, /* all zeros */ - const NTTIME *pass_must_change_time, /* all zeros */ - - const UNISTR2 *user_name, - const UNISTR2 *full_name, - const UNISTR2 *home_dir, - const UNISTR2 *dir_drive, - const UNISTR2 *log_scr, - const UNISTR2 *prof_path, - const UNISTR2 *desc, - const UNISTR2 *wkstas, - const UNISTR2 *unk_str, - const UNISTR2 *mung_dial, - - uint32 user_rid, /* 0x0000 0000 */ - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - char newpass[516], - uint32 unknown_6); -BOOL make_sam_user_info23A(SAM_USER_INFO_23 *usr, - - NTTIME *logon_time, /* all zeros */ - NTTIME *logoff_time, /* all zeros */ - NTTIME *kickoff_time, /* all zeros */ - NTTIME *pass_last_set_time, /* all zeros */ - NTTIME *pass_can_change_time, /* all zeros */ - NTTIME *pass_must_change_time, /* all zeros */ - - char *user_name, /* NULL */ - char *full_name, - char *home_dir, - char *dir_drive, - char *log_scr, - char *prof_path, - char *desc, - char *wkstas, - char *unk_str, - char *mung_dial, - - uint32 user_rid, /* 0x0000 0000 */ - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - char newpass[516], - uint32 unknown_6); -BOOL make_sam_user_info21W(SAM_USER_INFO_21 *usr, - - const NTTIME *logon_time, - const NTTIME *logoff_time, - const NTTIME *kickoff_time, - const NTTIME *pass_last_set_time, - const NTTIME *pass_can_change_time, - const NTTIME *pass_must_change_time, - - const UNISTR2 *user_name, - const UNISTR2 *full_name, - const UNISTR2 *home_dir, - const UNISTR2 *dir_drive, - const UNISTR2 *log_scr, - const UNISTR2 *prof_path, - const UNISTR2 *desc, - const UNISTR2 *wkstas, - const UNISTR2 *unk_str, - const UNISTR2 *mung_dial, - - const uchar lm_pwd[16], - const uchar nt_pwd[16], - - uint32 user_rid, - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - const LOGON_HRS *hrs, - uint32 unknown_5, - uint32 unknown_6); -BOOL make_sam_user_info21A(SAM_USER_INFO_21 *usr, - - NTTIME *logon_time, - NTTIME *logoff_time, - NTTIME *kickoff_time, - NTTIME *pass_last_set_time, - NTTIME *pass_can_change_time, - NTTIME *pass_must_change_time, - - char *user_name, - char *full_name, - char *home_dir, - char *dir_drive, - char *log_scr, - char *prof_path, - char *desc, - char *wkstas, - char *unk_str, - char *mung_dial, - - uint32 user_rid, - uint32 group_rid, - uint16 acb_info, - - uint32 unknown_3, - uint16 logon_divs, - LOGON_HRS *hrs, - uint32 unknown_5, - uint32 unknown_6); -BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 *usr, prs_struct *ps, int depth); -uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR *ctr, - uint16 switch_value, - const SAM_USER_INFO_21 *usr); -BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr, const uchar *sess_key, - uint16 switch_value, void *info); -BOOL samr_io_userinfo_ctr(char *desc, SAM_USERINFO_CTR *ctr, prs_struct *ps, int depth); -void free_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr); -BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO *r_u, - SAM_USERINFO_CTR *ctr, uint32 status); -BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u, - POLICY_HND *hnd, - uint16 switch_value, void *info); -BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO *q_u, prs_struct *ps, int depth); -void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u); -BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO *r_u, uint32 status); -BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u, - POLICY_HND *hnd, - uint16 switch_value, - SAM_USERINFO_CTR *ctr); -BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 *q_u, prs_struct *ps, int depth); -void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u); -BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 *r_u, - uint32 status); -BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_connect(SAMR_Q_CONNECT *q_u, - const char *srv_name, uint32 access_mask); -BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON *q_u); -BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON *r_u, prs_struct *ps, int depth); -BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO *q_u, const char *srv_name); -BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO *r_u, prs_struct *ps, int depth); -BOOL make_enc_passwd(SAMR_ENC_PASSWD *pwd, const char pass[512]); -BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD *pwd, prs_struct *ps, int depth); -BOOL make_enc_hash(SAMR_ENC_HASH *hsh, const uchar hash[16]); -BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH *hsh, prs_struct *ps, int depth); -BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u, +BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES * r_u, + prs_struct * ps, int depth); +void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_l); +BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER * q_c, + POLICY_HND * hnd); +BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER * q_u, + const POLICY_HND * pol, + uint32 access_mask, uint32 rid); +BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER * q_u, + POLICY_HND * pol, + const char *name, + uint32 acb_info, uint32 access_mask); +BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO * q_u, + POLICY_HND * hnd, uint16 switch_value); +BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO * q_u, + prs_struct * ps, int depth); +BOOL make_sam_user_info12(SAM_USER_INFO_12 * usr, + uint16 acb_info, + const uint8 lm_pwd[16], const uint8 nt_pwd[16]); +BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 * u, prs_struct * ps, + int depth); +BOOL make_sam_user_info10(SAM_USER_INFO_10 * usr, uint32 acb_info); +BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 * usr, prs_struct * ps, + int depth); +BOOL make_sam_user_info11(SAM_USER_INFO_11 * usr, + NTTIME * expiry, + char *mach_acct, + uint32 rid_user, uint32 rid_group, uint16 acct_ctrl); +BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 * usr, prs_struct * ps, + int depth); +BOOL make_sam_user_info24(SAM_USER_INFO_24 * usr, + const char newpass[516], uint16 passlen); +BOOL make_sam_user_info23W(SAM_USER_INFO_23 * usr, const NTTIME * logon_time, /* all zeros */ + const NTTIME * logoff_time, /* all zeros */ + const NTTIME * kickoff_time, /* all zeros */ + const NTTIME * pass_last_set_time, /* all zeros */ + const NTTIME * pass_can_change_time, /* all zeros */ + const NTTIME * pass_must_change_time, /* all zeros */ + const UNISTR2 * user_name, + const UNISTR2 * full_name, + const UNISTR2 * home_dir, + const UNISTR2 * dir_drive, + const UNISTR2 * log_scr, + const UNISTR2 * prof_path, + const UNISTR2 * desc, + const UNISTR2 * wkstas, + const UNISTR2 * unk_str, + const UNISTR2 * mung_dial, uint32 user_rid, /* 0x0000 0000 */ + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, + char newpass[516], uint32 unknown_6); +BOOL make_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all zeros */ + NTTIME * logoff_time, /* all zeros */ + NTTIME * kickoff_time, /* all zeros */ + NTTIME * pass_last_set_time, /* all zeros */ + NTTIME * pass_can_change_time, /* all zeros */ + NTTIME * pass_must_change_time, /* all zeros */ + char *user_name, /* NULL */ + char *full_name, + char *home_dir, char *dir_drive, char *log_scr, char *prof_path, char *desc, char *wkstas, char *unk_str, char *mung_dial, uint32 user_rid, /* 0x0000 0000 */ + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, + char newpass[516], uint32 unknown_6); +BOOL make_sam_user_info21W(SAM_USER_INFO_21 * usr, + const NTTIME * logon_time, + const NTTIME * logoff_time, + const NTTIME * kickoff_time, + const NTTIME * pass_last_set_time, + const NTTIME * pass_can_change_time, + const NTTIME * pass_must_change_time, + const UNISTR2 * user_name, + const UNISTR2 * full_name, + const UNISTR2 * home_dir, + const UNISTR2 * dir_drive, + const UNISTR2 * log_scr, + const UNISTR2 * prof_path, + const UNISTR2 * desc, + const UNISTR2 * wkstas, + const UNISTR2 * unk_str, + const UNISTR2 * mung_dial, + const uchar lm_pwd[16], + const uchar nt_pwd[16], + uint32 user_rid, + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + const LOGON_HRS * hrs, + uint32 unknown_5, uint32 unknown_6); +BOOL make_sam_user_info21A(SAM_USER_INFO_21 * usr, + NTTIME * logon_time, + NTTIME * logoff_time, + NTTIME * kickoff_time, + NTTIME * pass_last_set_time, + NTTIME * pass_can_change_time, + NTTIME * pass_must_change_time, + char *user_name, + char *full_name, + char *home_dir, + char *dir_drive, + char *log_scr, + char *prof_path, + char *desc, + char *wkstas, + char *unk_str, + char *mung_dial, + uint32 user_rid, + uint32 group_rid, + uint32 acb_info, + uint32 unknown_3, + uint16 logon_divs, + LOGON_HRS * hrs, + uint32 unknown_5, uint32 unknown_6); +BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 * usr, prs_struct * ps, + int depth); +uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR * ctr, + uint16 switch_value, + const SAM_USER_INFO_21 * usr); +BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr, const uchar * sess_key, + uint16 switch_value, void *info); +BOOL samr_io_userinfo_ctr(char *desc, SAM_USERINFO_CTR * ctr, prs_struct * ps, + int depth); +void free_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr); +BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO * r_u, + SAM_USERINFO_CTR * ctr, uint32 status); +BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u, + POLICY_HND * hnd, + uint16 switch_value, void *info); +BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO * q_u, + prs_struct * ps, int depth); +void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u); +BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO * r_u, uint32 status); +BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u, + POLICY_HND * hnd, + uint16 switch_value, SAM_USERINFO_CTR * ctr); +BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 * q_u, + prs_struct * ps, int depth); +void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u); +BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 * r_u, uint32 status); +BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_connect(SAMR_Q_CONNECT * q_u, + const char *srv_name, uint32 access_mask); +BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT * q_u, prs_struct * ps, + int depth); +BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT * r_u, prs_struct * ps, + int depth); +BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON * q_u); +BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON * r_u, + prs_struct * ps, int depth); +BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO * q_u, + const char *srv_name); +BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO * q_u, + prs_struct * ps, int depth); +BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO * r_u, + prs_struct * ps, int depth); +BOOL make_enc_passwd(SAMR_ENC_PASSWD * pwd, const char pass[512]); +BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD * pwd, prs_struct * ps, + int depth); +BOOL make_enc_hash(SAMR_ENC_HASH * hsh, const uchar hash[16]); +BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH * hsh, prs_struct * ps, + int depth); +BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER * q_u, const char *dest_host, const char *user_name, const char nt_newpass[516], const uchar nt_oldhash[16], const char lm_newpass[516], const uchar lm_oldhash[16]); -BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER *r_u, uint32 status); -BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER *r_u, prs_struct *ps, int depth); +BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER * q_u, + prs_struct * ps, int depth); +BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER * r_u, uint32 status); +BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER * r_u, + prs_struct * ps, int depth); /*The following definitions come from rpc_parse/parse_sec.c */ diff --git a/source/netlogond/srv_netlogon_nt.c b/source/netlogond/srv_netlogon_nt.c index f9281e6cd02..1f33002933b 100644 --- a/source/netlogond/srv_netlogon_nt.c +++ b/source/netlogond/srv_netlogon_nt.c @@ -818,7 +818,8 @@ uint32 _net_srv_pwset(const DOM_CLNT_INFO * clnt_id, uint32 _net_sam_logon(const DOM_SAM_INFO * sam_id, uint16 validation_level, DOM_CRED * srv_creds, - NET_USER_INFO_CTR * uctr, uint16 remote_pid) + NET_USER_INFO_CTR * uctr, uint16 remote_pid, + uint32 * auth_resp) { UNISTR2 *uni_samusr = NULL; UNISTR2 *uni_domain = NULL; @@ -944,6 +945,7 @@ uint32 _net_sam_logon(const DOM_SAM_INFO * sam_id, { return status; } + (*auth_resp) = 1; } /* @@ -1010,9 +1012,10 @@ uint32 _net_sam_logon(const DOM_SAM_INFO * sam_id, /* interactive login. */ status = net_login_interactive(& - (sam_id-> - ctr->auth.id1), + (sam_id->ctr-> + auth.id1), &dc); + (*auth_resp) = 1; break; } case NETWORK_LOGON_TYPE: @@ -1020,12 +1023,13 @@ uint32 _net_sam_logon(const DOM_SAM_INFO * sam_id, /* network login. lm challenge and 24 byte responses */ status = net_login_network(& - (sam_id->ctr-> - auth.id2), - acb_info, &dc, -usr_sess_key, lm_pw8); + (sam_id->ctr->auth. + id2), acb_info, + &dc, usr_sess_key, +lm_pw8); padding = lm_pw8; enc_user_sess_key = usr_sess_key; + (*auth_resp) = 1; break; } case GENERAL_LOGON_TYPE: diff --git a/source/rpc_client/cli_login.c b/source/rpc_client/cli_login.c index c6b93c23765..9316e61f0fa 100644 --- a/source/rpc_client/cli_login.c +++ b/source/rpc_client/cli_login.c @@ -155,7 +155,7 @@ BOOL cli_nt_login_general(const char *srv_name, const char *myhostname, uint8 sess_key[16]; NET_USER_INFO_CTR user_ctr; uint32 status; - user_ctr.switch_value = 3; + user_ctr.switch_value = 2; DEBUG(5, ("cli_nt_login_general: %d\n", __LINE__)); @@ -205,7 +205,7 @@ uint32 cli_nt_login_interactive(const char *srv_name, const char *myhostname, uint32 status; uint8 sess_key[16]; NET_USER_INFO_CTR user_ctr; - user_ctr.switch_value = 3; + user_ctr.switch_value = 2; DEBUG(5, ("cli_nt_login_interactive: %d\n", __LINE__)); @@ -261,7 +261,7 @@ uint32 cli_nt_login_network(const char *srv_name, const char *myhostname, uint8 sess_key[16]; uint32 status; NET_USER_INFO_CTR user_ctr; - user_ctr.switch_value = 3; + user_ctr.switch_value = 2; DEBUG(5, ("cli_nt_login_network: %d\n", __LINE__)); diff --git a/source/rpc_client/msrpc_lsarpc.c b/source/rpc_client/msrpc_lsarpc.c index 0fbc3a513dd..2ee84569ed8 100644 --- a/source/rpc_client/msrpc_lsarpc.c +++ b/source/rpc_client/msrpc_lsarpc.c @@ -347,16 +347,22 @@ BOOL msrpc_lsa_query_trust_passwd(const char *srv_name, STRING2 secret; UNISTR2 uni_pwd; uint32 len; + pstring data; + int i; + if (!msrpc_lsa_query_secret(srv_name, secret_name, &secret, last_update)) { return False; } - if (!secret_get_data(&secret, (uchar*)&uni_pwd.buffer, &len)) + if (!secret_get_data(&secret, data, &len)) { return False; } - + for (i = 0; i < len; i++) + { + uni_pwd.buffer[i] = SVAL(data, i*2); + } uni_pwd.uni_str_len = len / 2; uni_pwd.uni_max_len = len / 2; nt_owf_genW(&uni_pwd, trust_passwd); diff --git a/source/rpc_parse/parse_net.c b/source/rpc_parse/parse_net.c index 1d4b78d0d25..90ae41d1101 100644 --- a/source/rpc_parse/parse_net.c +++ b/source/rpc_parse/parse_net.c @@ -1157,8 +1157,6 @@ BOOL make_net_user_info2W(NET_USER_INFO_2 * usr, make_dom_sid2(&(usr->dom_sid), dom_sid); /* "other" sids are set up above */ - usr->auth_resp = 1; - return True; } @@ -1271,8 +1269,6 @@ BOOL make_net_user_info2(NET_USER_INFO_2 * usr, make_dom_sid2(&(usr->dom_sid), dom_sid); /* "other" sids are set up above */ - usr->auth_resp = 1; - return True; } @@ -1352,8 +1348,6 @@ BOOL net_io_user_info2(char *desc, NET_USER_INFO_2 * usr, prs_struct * ps, smb_io_dom_sid2("sid", &(usr->dom_sid), ps, depth); /* domain SID */ - prs_uint32("auth_resp ", ps, depth, &usr->auth_resp); /* 1 - Authoritative response; 0 - Non-Auth? */ - return True; } @@ -1535,8 +1529,6 @@ BOOL make_net_user_info3W(NET_USER_INFO_3 * usr, make_dom_sid2(&(usr->dom_sid), dom_sid); /* "other" sids are set up above */ - usr->auth_resp = 1; - return True; } @@ -1657,8 +1649,6 @@ BOOL make_net_user_info3(NET_USER_INFO_3 * usr, make_dom_sid2(&(usr->dom_sid), dom_sid); /* "other" sids are set up above */ - usr->auth_resp = 1; - return True; } @@ -1748,8 +1738,6 @@ BOOL net_io_user_info3(char *desc, NET_USER_INFO_3 * usr, prs_struct * ps, smb_io_dom_sid2("sids", &(usr->other_sids[i]), ps, depth); /* other domain SIDs */ } - prs_uint32("auth_resp ", ps, depth, &usr->auth_resp); /* 1 - Authoritative response; 0 - Non-Auth? */ - return True; } @@ -1817,6 +1805,8 @@ BOOL make_r_sam_logon(NET_R_SAM_LOGON * r_s, r_s->ctr.usr.id = NULL; } + r_s->auth_resp = 1; + r_s->status = status; return True; @@ -1908,12 +1898,13 @@ BOOL net_io_r_sam_logon(char *desc, NET_R_SAM_LOGON * r_l, prs_struct * ps, prs_debug(ps, depth, desc, "net_io_r_sam_logon"); depth++; - prs_uint32("buffer_creds", ps, depth, &(r_l->buffer_creds)); /* undocumented buffer pointer */ - smb_io_cred("", &(r_l->srv_creds), ps, depth); /* server credentials. server time stamp appears to be ignored. */ + prs_uint32("buffer_creds", ps, depth, &r_l->buffer_creds); + smb_io_cred("", &(r_l->srv_creds), ps, depth); net_io_user_info_ctr("", &r_l->ctr, ps, depth); - prs_uint32("status ", ps, depth, &(r_l->status)); + prs_uint32("auth_resp ", ps, depth, &r_l->auth_resp); + prs_uint32("status ", ps, depth, &r_l->status); prs_align(ps); diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index 6777fb4e213..3af6b51d144 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -4843,7 +4843,7 @@ reads or writes a structure. BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER * q_u, POLICY_HND * pol, const char *name, - uint16 acb_info, uint32 access_mask) + uint32 acb_info, uint32 access_mask) { int len_name; if (q_u == NULL) @@ -4885,8 +4885,7 @@ BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER * q_u, depth); prs_align(ps); - prs_uint16("acb_info ", ps, depth, &(q_u->acb_info)); - prs_align(ps); + prs_uint32("acb_info ", ps, depth, &(q_u->acb_info)); prs_uint32("access_mask", ps, depth, &(q_u->access_mask)); prs_align(ps); @@ -5253,7 +5252,7 @@ BOOL make_sam_user_info23W(SAM_USER_INFO_23 * usr, const NTTIME * logon_time, /* const UNISTR2 * unk_str, const UNISTR2 * mung_dial, uint32 user_rid, /* 0x0000 0000 */ uint32 group_rid, - uint16 acb_info, + uint32 acb_info, uint32 unknown_3, uint16 logon_divs, LOGON_HRS * hrs, @@ -5350,7 +5349,7 @@ BOOL make_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time, /* all z char *full_name, char *home_dir, char *dir_drive, char *log_scr, char *prof_path, char *desc, char *wkstas, char *unk_str, char *mung_dial, uint32 user_rid, /* 0x0000 0000 */ uint32 group_rid, - uint16 acb_info, + uint32 acb_info, uint32 unknown_3, uint16 logon_divs, LOGON_HRS * hrs, @@ -5471,8 +5470,7 @@ static BOOL sam_io_user_info23(char *desc, SAM_USER_INFO_23 * usr, prs_uint32("user_rid ", ps, depth, &(usr->user_rid)); /* User ID */ prs_uint32("group_rid ", ps, depth, &(usr->group_rid)); /* Group ID */ - prs_uint16("acb_info ", ps, depth, &(usr->acb_info)); /* Group ID */ - prs_align(ps); + prs_uint32("acb_info ", ps, depth, &(usr->acb_info)); prs_uint32("unknown_3 ", ps, depth, &(usr->unknown_3)); prs_uint16("logon_divs ", ps, depth, &(usr->logon_divs)); /* logon divisions per week */ @@ -5560,7 +5558,7 @@ BOOL make_sam_user_info21W(SAM_USER_INFO_21 * usr, const uchar nt_pwd[16], uint32 user_rid, uint32 group_rid, - uint16 acb_info, + uint32 acb_info, uint32 unknown_3, uint16 logon_divs, const LOGON_HRS * hrs, @@ -5676,7 +5674,7 @@ BOOL make_sam_user_info21A(SAM_USER_INFO_21 * usr, char *mung_dial, uint32 user_rid, uint32 group_rid, - uint16 acb_info, + uint32 acb_info, uint32 unknown_3, uint16 logon_divs, LOGON_HRS * hrs, @@ -5794,8 +5792,7 @@ BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 * usr, prs_struct * ps, prs_uint32("user_rid ", ps, depth, &(usr->user_rid)); /* User ID */ prs_uint32("group_rid ", ps, depth, &(usr->group_rid)); /* Group ID */ - prs_uint16("acb_info ", ps, depth, &(usr->acb_info)); /* Group ID */ - prs_align(ps); + prs_uint32("acb_info ", ps, depth, &(usr->acb_info)); prs_uint32("unknown_3 ", ps, depth, &(usr->unknown_3)); prs_uint16("logon_divs ", ps, depth, &(usr->logon_divs)); /* logon divisions per week */ diff --git a/source/rpc_server/srv_netlog.c b/source/rpc_server/srv_netlog.c index 2ad872e5ad8..4a0ccf6e957 100644 --- a/source/rpc_server/srv_netlog.c +++ b/source/rpc_server/srv_netlog.c @@ -275,7 +275,8 @@ static BOOL api_net_sam_logon(rpcsrv_struct * p, status = _net_sam_logon(&q_l.sam_id, q_l.validation_level, - &srv_creds, &uctr, p->key.pid); + &srv_creds, &uctr, p->key.pid, + &r_s.auth_resp); make_r_sam_logon(&r_s, &srv_creds, q_l.validation_level, status == NT_STATUS_NOPROBLEMO ? uctr.usr.id : NULL, status); -- cgit