The branch, v3-6-test has been updated
       via  a2eb55e s3-libnetapi: prefer dcerpc_samr_X functions in 
lib/netapi/user.c.
       via  da312fc s3-libnetapi: prefer dcerpc_samr_X functions in 
lib/netapi/samr.c.
       via  7a22e9c s3-libnetapi: prefer dcerpc_samr_X functions in 
lib/netapi/localgroup.c.
       via  ba6c8f3 s3-libnetapi: prefer dcerpc_samr_X functions in 
lib/netapi/group.c.
      from  95c1355 Ensure we send the direct levelII oplock break to the 
correct fid. (cherry picked from commit 
24883229e3ec6237d28b88a2bacc812e1e98b931)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit a2eb55e2d060464146186e47a17ac8d2786a3fa3
Author: Günther Deschner <g...@samba.org>
Date:   Fri Jan 14 17:05:32 2011 +0100

    s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/user.c.
    
    Guenther
    
    Autobuild-User: Günther Deschner <g...@samba.org>
    Autobuild-Date: Tue Feb  1 13:41:42 CET 2011 on sn-devel-104
    (cherry picked from commit f9af242886ac014baa3247bfdc1fe8be6cb8366e)

commit da312fc2f34e872315ad6866625260a43802f142
Author: Günther Deschner <g...@samba.org>
Date:   Fri Jan 14 16:16:31 2011 +0100

    s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/samr.c.
    
    Guenther
    (cherry picked from commit 32fb4f5206bf754cecc761e5c2634f84a073e1eb)

commit 7a22e9cefb9fad9c5a4235fc972aa78084adf2de
Author: Günther Deschner <g...@samba.org>
Date:   Fri Jan 14 16:11:19 2011 +0100

    s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/localgroup.c.
    
    Guenther
    (cherry picked from commit b76657f8d9fea54430b048e61ed7c8c78eb582e5)

commit ba6c8f36d0c7b4915bcfa319620ea54eab83702d
Author: Günther Deschner <g...@samba.org>
Date:   Fri Jan 14 15:49:37 2011 +0100

    s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/group.c.
    
    Guenther
    (cherry picked from commit 7f6301811781675a7f8f5509e67fb34820a9806d)

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/netapi/group.c      |  487 ++++++++++++++++++++++++++++---------
 source3/lib/netapi/localgroup.c |  201 ++++++++++++----
 source3/lib/netapi/samr.c       |   62 ++++-
 source3/lib/netapi/user.c       |  507 +++++++++++++++++++++++++++++----------
 4 files changed, 943 insertions(+), 314 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/netapi/group.c b/source3/lib/netapi/group.c
index b9dd1e9..5507f71 100644
--- a/source3/lib/netapi/group.c
+++ b/source3/lib/netapi/group.c
@@ -23,7 +23,7 @@
 #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/ndr_samr_c.h"
 #include "rpc_client/init_lsa.h"
 #include "../libcli/security/security.h"
 
@@ -34,12 +34,13 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                     struct NetGroupAdd *r)
 {
        struct rpc_pipe_client *pipe_cli = NULL;
-       NTSTATUS status;
+       NTSTATUS status, result;
        WERROR werr;
        struct policy_handle connect_handle, domain_handle, group_handle;
        struct lsa_String lsa_group_name;
        struct dom_sid2 *domain_sid = NULL;
        uint32_t rid = 0;
+       struct dcerpc_binding_handle *b = NULL;
 
        struct GROUP_INFO_0 *info0 = NULL;
        struct GROUP_INFO_1 *info1 = NULL;
@@ -80,6 +81,8 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
+       b = pipe_cli->binding_handle;
+
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
                                          SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -107,18 +110,23 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                        break;
        }
 
-       status = rpccli_samr_CreateDomainGroup(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_CreateDomainGroup(b, talloc_tos(),
                                               &domain_handle,
                                               &lsa_group_name,
                                               SEC_STD_DELETE |
                                               SAMR_GROUP_ACCESS_SET_INFO,
                                               &group_handle,
-                                              &rid);
+                                              &rid,
+                                              &result);
 
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        switch (r->in.level) {
                case 1:
@@ -126,10 +134,11 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                                init_lsa_String(&info.description,
                                                info1->grpi1_comment);
 
-                               status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                               status = dcerpc_samr_SetGroupInfo(b, 
talloc_tos(),
                                                                  &group_handle,
                                                                  
GROUPINFODESCRIPTION,
-                                                                 &info);
+                                                                 &info,
+                                                                 &result);
                        }
                        break;
                case 2:
@@ -137,22 +146,28 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                                init_lsa_String(&info.description,
                                                info2->grpi2_comment);
 
-                               status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                               status = dcerpc_samr_SetGroupInfo(b, 
talloc_tos(),
                                                                  &group_handle,
                                                                  
GROUPINFODESCRIPTION,
-                                                                 &info);
+                                                                 &info,
+                                                                 &result);
                                if (!NT_STATUS_IS_OK(status)) {
                                        werr = ntstatus_to_werror(status);
                                        goto failed;
                                }
+                               if (!NT_STATUS_IS_OK(result)) {
+                                       werr = ntstatus_to_werror(result);
+                                       goto failed;
+                               }
                        }
 
                        if (info2->grpi2_attributes != 0) {
                                info.attributes.attributes = 
info2->grpi2_attributes;
-                               status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                               status = dcerpc_samr_SetGroupInfo(b, 
talloc_tos(),
                                                                  &group_handle,
                                                                  
GROUPINFOATTRIBUTES,
-                                                                 &info);
+                                                                 &info,
+                                                                 &result);
 
                        }
                        break;
@@ -161,22 +176,28 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                                init_lsa_String(&info.description,
                                                info3->grpi3_comment);
 
-                               status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                               status = dcerpc_samr_SetGroupInfo(b, 
talloc_tos(),
                                                                  &group_handle,
                                                                  
GROUPINFODESCRIPTION,
-                                                                 &info);
+                                                                 &info,
+                                                                 &result);
                                if (!NT_STATUS_IS_OK(status)) {
                                        werr = ntstatus_to_werror(status);
                                        goto failed;
                                }
+                               if (!NT_STATUS_IS_OK(result)) {
+                                       werr = ntstatus_to_werror(result);
+                                       goto failed;
+                               }
                        }
 
                        if (info3->grpi3_attributes != 0) {
                                info.attributes.attributes = 
info3->grpi3_attributes;
-                               status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                               status = dcerpc_samr_SetGroupInfo(b, 
talloc_tos(),
                                                                  &group_handle,
                                                                  
GROUPINFOATTRIBUTES,
-                                                                 &info);
+                                                                 &info,
+                                                                 &result);
                        }
                        break;
                default:
@@ -187,17 +208,21 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
                werr = ntstatus_to_werror(status);
                goto failed;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto failed;
+       }
 
        werr = WERR_OK;
        goto done;
 
  failed:
-       rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
-                                     &group_handle);
+       dcerpc_samr_DeleteDomainGroup(b, talloc_tos(),
+                                     &group_handle, &result);
 
  done:
        if (is_valid_policy_hnd(&group_handle)) {
-               rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
+               dcerpc_samr_Close(b, talloc_tos(), &group_handle, &result);
        }
 
        if (ctx->disable_policy_handle_cache) {
@@ -224,12 +249,13 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
                     struct NetGroupDel *r)
 {
        struct rpc_pipe_client *pipe_cli = NULL;
-       NTSTATUS status;
+       NTSTATUS status, result;
        WERROR werr;
        struct policy_handle connect_handle, domain_handle, group_handle;
        struct lsa_String lsa_group_name;
        struct dom_sid2 *domain_sid = NULL;
        int i = 0;
+       struct dcerpc_binding_handle *b = NULL;
 
        struct samr_Ids rids;
        struct samr_Ids types;
@@ -251,6 +277,8 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
+       b = pipe_cli->binding_handle;
+
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
                                          SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -264,23 +292,28 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
 
        init_lsa_String(&lsa_group_name, r->in.group_name);
 
-       status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_LookupNames(b, talloc_tos(),
                                         &domain_handle,
                                         1,
                                         &lsa_group_name,
                                         &rids,
-                                        &types);
+                                        &types,
+                                        &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        if (types.ids[0] != SID_NAME_DOM_GRP) {
                werr = WERR_INVALID_DATATYPE;
                goto done;
        }
 
-       status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_OpenGroup(b, talloc_tos(),
                                       &domain_handle,
                                       SEC_STD_DELETE |
                                       SAMR_GROUP_ACCESS_GET_MEMBERS |
@@ -288,20 +321,30 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
                                       SAMR_GROUP_ACCESS_ADD_MEMBER |
                                       SAMR_GROUP_ACCESS_LOOKUP_INFO,
                                       rids.ids[0],
-                                      &group_handle);
+                                      &group_handle,
+                                      &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
-       status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_QueryGroupInfo(b, talloc_tos(),
                                            &group_handle,
                                            GROUPINFOATTRIBUTES,
-                                           &info);
+                                           &info,
+                                           &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
 #if 0
        /* breaks against NT4 */
@@ -310,47 +353,67 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 #endif
-       status = rpccli_samr_QueryGroupMember(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_QueryGroupMember(b, talloc_tos(),
                                              &group_handle,
-                                             &rid_array);
+                                             &rid_array,
+                                             &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        {
        struct lsa_Strings names;
        struct samr_Ids member_types;
 
-       status = rpccli_samr_LookupRids(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_LookupRids(b, talloc_tos(),
                                        &domain_handle,
                                        rid_array->count,
                                        rid_array->rids,
                                        &names,
-                                       &member_types);
+                                       &member_types,
+                                       &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
        }
 
        for (i=0; i < rid_array->count; i++) {
 
-               status = rpccli_samr_DeleteGroupMember(pipe_cli, talloc_tos(),
+               status = dcerpc_samr_DeleteGroupMember(b, talloc_tos(),
                                                       &group_handle,
-                                                      rid_array->rids[i]);
+                                                      rid_array->rids[i],
+                                                      &result);
                if (!NT_STATUS_IS_OK(status)) {
                        werr = ntstatus_to_werror(status);
                        goto done;
                }
+               if (!NT_STATUS_IS_OK(result)) {
+                       werr = ntstatus_to_werror(result);
+                       goto done;
+               }
        }
 
-       status = rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
-                                              &group_handle);
+       status = dcerpc_samr_DeleteDomainGroup(b, talloc_tos(),
+                                              &group_handle,
+                                              &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        ZERO_STRUCT(group_handle);
 
@@ -358,7 +421,7 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
 
  done:
        if (is_valid_policy_hnd(&group_handle)) {
-               rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
+               dcerpc_samr_Close(b, talloc_tos(), &group_handle, &result);
        }
 
        if (ctx->disable_policy_handle_cache) {
@@ -385,11 +448,12 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
                         struct NetGroupSetInfo *r)
 {
        struct rpc_pipe_client *pipe_cli = NULL;
-       NTSTATUS status;
+       NTSTATUS status, result;
        WERROR werr;
        struct policy_handle connect_handle, domain_handle, group_handle;
        struct lsa_String lsa_group_name;
        struct dom_sid2 *domain_sid = NULL;
+       struct dcerpc_binding_handle *b = NULL;
 
        struct samr_Ids rids;
        struct samr_Ids types;
@@ -416,6 +480,8 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
+       b = pipe_cli->binding_handle;
+
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
                                          SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -429,99 +495,127 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
 
        init_lsa_String(&lsa_group_name, r->in.group_name);
 
-       status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_LookupNames(b, talloc_tos(),
                                         &domain_handle,
                                         1,
                                         &lsa_group_name,
                                         &rids,
-                                        &types);
+                                        &types,
+                                        &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        if (types.ids[0] != SID_NAME_DOM_GRP) {
                werr = WERR_INVALID_DATATYPE;
                goto done;
        }
 
-       status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
+       status = dcerpc_samr_OpenGroup(b, talloc_tos(),
                                       &domain_handle,
                                       SAMR_GROUP_ACCESS_SET_INFO |
                                       SAMR_GROUP_ACCESS_LOOKUP_INFO,
                                       rids.ids[0],
-                                      &group_handle);
+                                      &group_handle,
+                                      &result);
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
+       if (!NT_STATUS_IS_OK(result)) {
+               werr = ntstatus_to_werror(result);
+               goto done;
+       }
 
        switch (r->in.level) {
                case 0:
                        g0 = (struct GROUP_INFO_0 *)r->in.buffer;
                        init_lsa_String(&info.name, g0->grpi0_name);
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFONAME,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        break;
                case 1:
                        g1 = (struct GROUP_INFO_1 *)r->in.buffer;
                        init_lsa_String(&info.description, g1->grpi1_comment);
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFODESCRIPTION,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        break;
                case 2:
                        g2 = (struct GROUP_INFO_2 *)r->in.buffer;
                        init_lsa_String(&info.description, g2->grpi2_comment);
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFODESCRIPTION,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        if (!NT_STATUS_IS_OK(status)) {
                                werr = ntstatus_to_werror(status);
                                goto done;
                        }
+                       if (!NT_STATUS_IS_OK(result)) {
+                               werr = ntstatus_to_werror(result);
+                               goto done;
+                       }
+
                        info.attributes.attributes = g2->grpi2_attributes;
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFOATTRIBUTES,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        break;
                case 3:
                        g3 = (struct GROUP_INFO_3 *)r->in.buffer;
                        init_lsa_String(&info.description, g3->grpi3_comment);
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFODESCRIPTION,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        if (!NT_STATUS_IS_OK(status)) {
                                werr = ntstatus_to_werror(status);
                                goto done;
                        }
+                       if (!NT_STATUS_IS_OK(result)) {
+                               werr = ntstatus_to_werror(result);
+                               goto done;
+                       }
+
                        info.attributes.attributes = g3->grpi3_attributes;
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFOATTRIBUTES,
-                                                         &info);
+                                                         &info,
+                                                         &result);
                        break;
                case 1002:
                        g1002 = (struct GROUP_INFO_1002 *)r->in.buffer;
                        init_lsa_String(&info.description, 
g1002->grpi1002_comment);
-                       status = rpccli_samr_SetGroupInfo(pipe_cli, 
talloc_tos(),
+                       status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
                                                          &group_handle,
                                                          GROUPINFODESCRIPTION,
-                                                         &info);
+                                                         &info,
+                                                         &result);


-- 
Samba Shared Repository

Reply via email to