diff options
Diffstat (limited to 'source3/rpc_server/samr/srv_samr_nt.c')
-rw-r--r-- | source3/rpc_server/samr/srv_samr_nt.c | 84 |
1 files changed, 62 insertions, 22 deletions
diff --git a/source3/rpc_server/samr/srv_samr_nt.c b/source3/rpc_server/samr/srv_samr_nt.c index 124d6d38cd7..7b8c42271bb 100644 --- a/source3/rpc_server/samr/srv_samr_nt.c +++ b/source3/rpc_server/samr/srv_samr_nt.c @@ -62,6 +62,14 @@ #define MAX_SAM_ENTRIES_W2K 0x400 /* 1024 */ #define MAX_SAM_ENTRIES_W95 50 +enum samr_handle { + SAMR_HANDLE_CONNECT, + SAMR_HANDLE_DOMAIN, + SAMR_HANDLE_USER, + SAMR_HANDLE_GROUP, + SAMR_HANDLE_ALIAS +}; + struct samr_connect_info { uint8_t dummy; }; @@ -495,8 +503,12 @@ NTSTATUS _samr_OpenDomain(struct pipes_struct *p, return NT_STATUS_NO_SUCH_DOMAIN; } - dinfo = policy_handle_create(p, r->out.domain_handle, acc_granted, - struct samr_domain_info, &status); + dinfo = policy_handle_create(p, + r->out.domain_handle, + SAMR_HANDLE_DOMAIN, + acc_granted, + struct samr_domain_info, + &status); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -2214,8 +2226,12 @@ NTSTATUS _samr_OpenUser(struct pipes_struct *p, /* If we did the rid admins hack above, allow access. */ acc_granted |= extra_access; - uinfo = policy_handle_create(p, r->out.user_handle, acc_granted, - struct samr_user_info, &nt_status); + uinfo = policy_handle_create(p, + r->out.user_handle, + SAMR_HANDLE_USER, + acc_granted, + struct samr_user_info, + &nt_status); if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; } @@ -3776,8 +3792,12 @@ NTSTATUS _samr_CreateUser2(struct pipes_struct *p, return nt_status; } - uinfo = policy_handle_create(p, r->out.user_handle, acc_granted, - struct samr_user_info, &nt_status); + uinfo = policy_handle_create(p, + r->out.user_handle, + SAMR_HANDLE_USER, + acc_granted, + struct samr_user_info, + &nt_status); if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; } @@ -3845,9 +3865,12 @@ NTSTATUS _samr_Connect(struct pipes_struct *p, /* set up the SAMR connect_anon response */ - (void)policy_handle_create(p, &hnd, acc_granted, - struct samr_connect_info, - &status); + (void)policy_handle_create(p, + &hnd, + SAMR_HANDLE_CONNECT, + acc_granted, + struct samr_connect_info, + &status); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -3909,8 +3932,12 @@ NTSTATUS _samr_Connect2(struct pipes_struct *p, if ( !NT_STATUS_IS_OK(nt_status) ) return nt_status; - (void)policy_handle_create(p, &hnd, acc_granted, - struct samr_connect_info, &nt_status); + (void)policy_handle_create(p, + &hnd, + SAMR_HANDLE_CONNECT, + acc_granted, + struct samr_connect_info, + &nt_status); if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; } @@ -4146,8 +4173,12 @@ NTSTATUS _samr_OpenAlias(struct pipes_struct *p, } - ainfo = policy_handle_create(p, r->out.alias_handle, acc_granted, - struct samr_alias_info, &status); + ainfo = policy_handle_create(p, + r->out.alias_handle, + SAMR_HANDLE_ALIAS, + acc_granted, + struct samr_alias_info, + &status); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -5818,9 +5849,12 @@ NTSTATUS _samr_CreateDomainGroup(struct pipes_struct *p, if ( !NT_STATUS_IS_OK(status) ) return status; - ginfo = policy_handle_create(p, r->out.group_handle, - GENERIC_RIGHTS_GROUP_ALL_ACCESS, - struct samr_group_info, &status); + ginfo = policy_handle_create(p, + r->out.group_handle, + SAMR_HANDLE_GROUP, + GENERIC_RIGHTS_GROUP_ALL_ACCESS, + struct samr_group_info, + &status); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -5892,9 +5926,12 @@ NTSTATUS _samr_CreateDomAlias(struct pipes_struct *p, return NT_STATUS_ACCESS_DENIED; } - ainfo = policy_handle_create(p, r->out.alias_handle, - GENERIC_RIGHTS_ALIAS_ALL_ACCESS, - struct samr_alias_info, &result); + ainfo = policy_handle_create(p, + r->out.alias_handle, + SAMR_HANDLE_ALIAS, + GENERIC_RIGHTS_ALIAS_ALL_ACCESS, + struct samr_alias_info, + &result); if (!NT_STATUS_IS_OK(result)) { return result; } @@ -6296,9 +6333,12 @@ NTSTATUS _samr_OpenGroup(struct pipes_struct *p, TALLOC_FREE(map); - ginfo = policy_handle_create(p, r->out.group_handle, - acc_granted, - struct samr_group_info, &status); + ginfo = policy_handle_create(p, + r->out.group_handle, + SAMR_HANDLE_GROUP, + acc_granted, + struct samr_group_info, + &status); if (!NT_STATUS_IS_OK(status)) { return status; } |