1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-25 19:17:10 +03:00

netapi: let libnetapi_samr_lookup_and_open_alias return NTSTATUS.

Guenther
(cherry picked from commit dcf6d879a14a70ce5795eb8dcfbfe2fc5a8ad859)
(This used to be commit 8ac6a2739be870f286d19dc6bf8f0054a559b43b)
This commit is contained in:
Günther Deschner 2008-08-11 20:39:14 +02:00
parent 4136ab3c98
commit 11db643962

View File

@ -24,7 +24,7 @@
#include "lib/netapi/netapi_private.h" #include "lib/netapi/netapi_private.h"
#include "lib/netapi/libnetapi.h" #include "lib/netapi/libnetapi.h"
static WERROR libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx, static NTSTATUS libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *pipe_cli, struct rpc_pipe_client *pipe_cli,
struct policy_handle *domain_handle, struct policy_handle *domain_handle,
const char *group_name, const char *group_name,
@ -32,7 +32,6 @@ static WERROR libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
struct policy_handle *alias_handle) struct policy_handle *alias_handle)
{ {
NTSTATUS status; NTSTATUS status;
WERROR werr;
struct lsa_String lsa_account_name; struct lsa_String lsa_account_name;
struct samr_Ids user_rids, name_types; struct samr_Ids user_rids, name_types;
@ -46,8 +45,7 @@ static WERROR libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
&user_rids, &user_rids,
&name_types); &name_types);
if (!NT_STATUS_IS_OK(status)) { if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status); return status;
goto done;
} }
switch (name_types.ids[0]) { switch (name_types.ids[0]) {
@ -55,23 +53,14 @@ static WERROR libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
case SID_NAME_WKN_GRP: case SID_NAME_WKN_GRP:
break; break;
default: default:
return WERR_INVALID_DATATYPE; return NT_STATUS_INVALID_SID;
} }
status = rpccli_samr_OpenAlias(pipe_cli, mem_ctx, return rpccli_samr_OpenAlias(pipe_cli, mem_ctx,
domain_handle, domain_handle,
access_rights, access_rights,
user_rids.ids[0], user_rids.ids[0],
alias_handle); alias_handle);
if (NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
werr = WERR_OK;
done:
return werr;
} }
/**************************************************************** /****************************************************************
@ -182,17 +171,16 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle, &builtin_handle,
alias_name, alias_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO, SAMR_ALIAS_ACCESS_LOOKUP_INFO,
&alias_handle); &alias_handle);
if (ctx->disable_policy_handle_cache) { if (ctx->disable_policy_handle_cache) {
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle); libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
} }
if (W_ERROR_IS_OK(werr)) { if (NT_STATUS_IS_OK(status)) {
werr = WERR_ALIAS_EXISTS; werr = WERR_ALIAS_EXISTS;
goto done; goto done;
} }
@ -312,7 +300,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle, &builtin_handle,
r->in.group_name, r->in.group_name,
SEC_STD_DELETE, SEC_STD_DELETE,
@ -322,7 +310,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle); libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
} }
if (W_ERROR_IS_OK(werr)) { if (NT_STATUS_IS_OK(status)) {
goto delete_alias; goto delete_alias;
} }
@ -338,7 +326,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle, &domain_handle,
r->in.group_name, r->in.group_name,
SEC_STD_DELETE, SEC_STD_DELETE,
@ -348,7 +336,8 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_domain_handle(ctx, &domain_handle); libnetapi_samr_close_domain_handle(ctx, &domain_handle);
} }
if (!W_ERROR_IS_OK(werr)) { if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done; goto done;
} }
@ -492,7 +481,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle, &builtin_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO, SAMR_ALIAS_ACCESS_LOOKUP_INFO,
@ -502,7 +491,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle); libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
} }
if (W_ERROR_IS_OK(werr)) { if (NT_STATUS_IS_OK(status)) {
goto query_alias; goto query_alias;
} }
@ -518,7 +507,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle, &domain_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO, SAMR_ALIAS_ACCESS_LOOKUP_INFO,
@ -528,7 +517,8 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_domain_handle(ctx, &domain_handle); libnetapi_samr_close_domain_handle(ctx, &domain_handle);
} }
if (!W_ERROR_IS_OK(werr)) { if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done; goto done;
} }
@ -673,7 +663,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
init_lsa_String(&lsa_account_name, r->in.group_name); init_lsa_String(&lsa_account_name, r->in.group_name);
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle, &builtin_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_SET_INFO, SAMR_ALIAS_ACCESS_SET_INFO,
@ -683,7 +673,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle); libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
} }
if (W_ERROR_IS_OK(werr)) { if (NT_STATUS_IS_OK(status)) {
goto set_alias; goto set_alias;
} }
@ -698,12 +688,13 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle, &domain_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_SET_INFO, SAMR_ALIAS_ACCESS_SET_INFO,
&alias_handle); &alias_handle);
if (!W_ERROR_IS_OK(werr)) { if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done; goto done;
} }
@ -1137,7 +1128,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
init_lsa_String(&lsa_account_name, r->in.group_name); init_lsa_String(&lsa_account_name, r->in.group_name);
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle, &builtin_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_ADD_MEMBER | SAMR_ALIAS_ACCESS_ADD_MEMBER |
@ -1150,7 +1141,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle); libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
} }
if (W_ERROR_IS_OK(werr)) { if (NT_STATUS_IS_OK(status)) {
goto modify_membership; goto modify_membership;
} }
@ -1165,7 +1156,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
goto done; goto done;
} }
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli, status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle, &domain_handle,
r->in.group_name, r->in.group_name,
SAMR_ALIAS_ACCESS_ADD_MEMBER | SAMR_ALIAS_ACCESS_ADD_MEMBER |
@ -1173,7 +1164,8 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
SAMR_ALIAS_ACCESS_GET_MEMBERS | SAMR_ALIAS_ACCESS_GET_MEMBERS |
SAMR_ALIAS_ACCESS_LOOKUP_INFO, SAMR_ALIAS_ACCESS_LOOKUP_INFO,
&alias_handle); &alias_handle);
if (!W_ERROR_IS_OK(werr)) { if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done; goto done;
} }