s3-auth Change type of num_sids to uint32_t
[samba.git] / source3 / lib / netapi / localgroup.c
index 5e738e1262cf954fbf48ac2072a111bd05ba126c..69cf97422577a20bab792e7a491ffd65507214ee 100644 (file)
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
+#include "rpc_client/cli_lsarpc.h"
+#include "rpc_client/init_lsa.h"
 
 static NTSTATUS libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
                                                     struct rpc_pipe_client *pipe_cli,
@@ -113,7 +117,6 @@ static NTSTATUS libnetapi_samr_open_alias_queryinfo(TALLOC_CTX *mem_ctx,
 WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
                          struct NetLocalGroupAdd *r)
 {
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        NTSTATUS status;
        WERROR werr;
@@ -152,14 +155,13 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                                  &connect_handle,
@@ -184,7 +186,7 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
-                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_ACCESS_LOOKUP_DOMAIN,
                                          SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
                                          SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                          &connect_handle,
@@ -227,10 +229,6 @@ WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
        werr = WERR_OK;
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (is_valid_policy_hnd(&alias_handle)) {
                rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
        }
@@ -260,7 +258,6 @@ WERROR NetLocalGroupAdd_l(struct libnetapi_ctx *ctx,
 WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
                          struct NetLocalGroupDel *r)
 {
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        NTSTATUS status;
        WERROR werr;
@@ -278,14 +275,13 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                                  &connect_handle,
@@ -310,7 +306,7 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
-                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_ACCESS_LOOKUP_DOMAIN,
                                          SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
                                          SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                          &connect_handle,
@@ -349,10 +345,6 @@ WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
        werr = WERR_OK;
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (is_valid_policy_hnd(&alias_handle)) {
                rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
        }
@@ -427,7 +419,6 @@ static WERROR map_alias_info_to_buffer(TALLOC_CTX *mem_ctx,
 WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
                              struct NetLocalGroupGetInfo *r)
 {
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        NTSTATUS status;
        WERROR werr;
@@ -456,14 +447,13 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                                  &connect_handle,
@@ -488,7 +478,7 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
-                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_ACCESS_LOOKUP_DOMAIN,
                                          SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
                                          SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                          &connect_handle,
@@ -530,10 +520,6 @@ WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
                                        r->out.buffer);
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (is_valid_policy_hnd(&alias_handle)) {
                rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
        }
@@ -603,7 +589,6 @@ static WERROR map_buffer_to_alias_info(TALLOC_CTX *mem_ctx,
 WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
                              struct NetLocalGroupSetInfo *r)
 {
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        NTSTATUS status;
        WERROR werr;
@@ -633,14 +618,13 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                                  &connect_handle,
@@ -667,7 +651,7 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
-                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_ACCESS_LOOKUP_DOMAIN,
                                          SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                          &connect_handle,
                                          &domain_handle,
@@ -710,10 +694,6 @@ WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
        werr = WERR_OK;
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (is_valid_policy_hnd(&alias_handle)) {
                rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
        }
@@ -742,7 +722,6 @@ WERROR NetLocalGroupSetInfo_l(struct libnetapi_ctx *ctx,
 WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
                           struct NetLocalGroupEnum *r)
 {
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        NTSTATUS status;
        WERROR werr;
@@ -781,14 +760,13 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
                                                  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
@@ -800,7 +778,7 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
        }
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-                                         SAMR_ACCESS_OPEN_DOMAIN |
+                                         SAMR_ACCESS_LOOKUP_DOMAIN |
                                          SAMR_ACCESS_ENUM_DOMAINS,
                                          SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
                                          SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
@@ -911,10 +889,6 @@ WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
        }
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (ctx->disable_policy_handle_cache) {
                libnetapi_samr_close_domain_handle(ctx, &domain_handle);
                libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
@@ -961,7 +935,7 @@ static NTSTATUS libnetapi_lsa_lookup_names3(TALLOC_CTX *mem_ctx,
 
        status = rpccli_lsa_open_policy2(lsa_pipe, mem_ctx,
                                         false,
-                                        STD_RIGHT_READ_CONTROL_ACCESS |
+                                        SEC_STD_READ_CONTROL |
                                         LSA_POLICY_VIEW_LOCAL_INFORMATION |
                                         LSA_POLICY_LOOKUP_NAMES,
                                         &lsa_handle);
@@ -997,7 +971,6 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
 {
        struct NetLocalGroupAddMembers *r = NULL;
 
-       struct cli_state *cli = NULL;
        struct rpc_pipe_client *pipe_cli = NULL;
        struct rpc_pipe_client *lsa_pipe = NULL;
        NTSTATUS status;
@@ -1013,8 +986,8 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
 
        struct dom_sid *add_sids = NULL;
        struct dom_sid *del_sids = NULL;
-       size_t num_add_sids = 0;
-       size_t num_del_sids = 0;
+       uint32_t num_add_sids = 0;
+       uint32_t num_del_sids = 0;
 
        if ((!add && !del && !set) || (add && del && set)) {
                return WERR_INVALID_PARAM;
@@ -1074,7 +1047,6 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
        if (r->in.level == 3) {
                werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                           &ndr_table_lsarpc.syntax_id,
-                                          &cli,
                                           &lsa_pipe);
                if (!W_ERROR_IS_OK(werr)) {
                        goto done;
@@ -1094,14 +1066,13 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_open_pipe(ctx, r->in.server_name,
                                   &ndr_table_samr.syntax_id,
-                                  &cli,
                                   &pipe_cli);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
        }
 
        werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-                                                 SAMR_ACCESS_OPEN_DOMAIN |
+                                                 SAMR_ACCESS_LOOKUP_DOMAIN |
                                                  SAMR_ACCESS_ENUM_DOMAINS,
                                                  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                                  &connect_handle,
@@ -1131,7 +1102,7 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
 
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
-                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_ACCESS_LOOKUP_DOMAIN,
                                          SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
                                          &connect_handle,
                                          &domain_handle,
@@ -1267,10 +1238,6 @@ static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
        werr = WERR_OK;
 
  done:
-       if (!cli) {
-               return werr;
-       }
-
        if (is_valid_policy_hnd(&alias_handle)) {
                rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
        }
@@ -1355,4 +1322,3 @@ WERROR NetLocalGroupSetMembers_l(struct libnetapi_ctx *ctx,
 {
        LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupSetMembers);
 }
-