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/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 policy_handle *domain_handle,
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)
{
NTSTATUS status;
WERROR werr;
struct lsa_String lsa_account_name;
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,
&name_types);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
return status;
}
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:
break;
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,
access_rights,
user_rids.ids[0],
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;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle,
alias_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO,
&alias_handle);
if (ctx->disable_policy_handle_cache) {
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
}
if (W_ERROR_IS_OK(werr)) {
if (NT_STATUS_IS_OK(status)) {
werr = WERR_ALIAS_EXISTS;
goto done;
}
@ -312,7 +300,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle,
r->in.group_name,
SEC_STD_DELETE,
@ -322,7 +310,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
}
if (W_ERROR_IS_OK(werr)) {
if (NT_STATUS_IS_OK(status)) {
goto delete_alias;
}
@ -338,7 +326,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle,
r->in.group_name,
SEC_STD_DELETE,
@ -348,7 +336,8 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
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;
}
@ -492,7 +481,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&builtin_handle,
r->in.group_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO,
@ -502,7 +491,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
}
if (W_ERROR_IS_OK(werr)) {
if (NT_STATUS_IS_OK(status)) {
goto query_alias;
}
@ -518,7 +507,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle,
r->in.group_name,
SAMR_ALIAS_ACCESS_LOOKUP_INFO,
@ -528,7 +517,8 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
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;
}
@ -673,7 +663,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
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,
r->in.group_name,
SAMR_ALIAS_ACCESS_SET_INFO,
@ -683,7 +673,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
}
if (W_ERROR_IS_OK(werr)) {
if (NT_STATUS_IS_OK(status)) {
goto set_alias;
}
@ -698,12 +688,13 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle,
r->in.group_name,
SAMR_ALIAS_ACCESS_SET_INFO,
&alias_handle);
if (!W_ERROR_IS_OK(werr)) {
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
@ -1137,7 +1128,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
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,
r->in.group_name,
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);
}
if (W_ERROR_IS_OK(werr)) {
if (NT_STATUS_IS_OK(status)) {
goto modify_membership;
}
@ -1165,7 +1156,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
goto done;
}
werr = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
&domain_handle,
r->in.group_name,
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_LOOKUP_INFO,
&alias_handle);
if (!W_ERROR_IS_OK(werr)) {
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}