s3-net: prefer dcerpc_samr_X functions in rpc_add_groupmem.
authorGünther Deschner <gd@samba.org>
Tue, 18 Jan 2011 10:44:42 +0000 (11:44 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 1 Feb 2011 22:29:13 +0000 (23:29 +0100)
Guenther

source3/utils/net_rpc.c

index 1461beb9b68be0fdd99a03a80eb74a8d93489863..2f062ebb4de0a1b649c12501a922965cd9181a6c 100644 (file)
@@ -1981,9 +1981,10 @@ static NTSTATUS rpc_add_groupmem(struct rpc_pipe_client *pipe_hnd,
                                const char *member)
 {
        struct policy_handle connect_pol, domain_pol;
-       NTSTATUS result;
+       NTSTATUS status, result;
        uint32 group_rid;
        struct policy_handle group_pol;
+       struct dcerpc_binding_handle *b = pipe_hnd->binding_handle;
 
        struct samr_Ids rids, rid_types;
        struct lsa_String lsa_acct_name;
@@ -1997,57 +1998,83 @@ static NTSTATUS rpc_add_groupmem(struct rpc_pipe_client *pipe_hnd,
        }
 
        /* Get sam policy handle */
-       result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+       status = dcerpc_samr_Connect2(b, mem_ctx,
                                      pipe_hnd->desthost,
                                      MAXIMUM_ALLOWED_ACCESS,
-                                     &connect_pol);
+                                     &connect_pol,
+                                     &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
        if (!NT_STATUS_IS_OK(result)) {
                return result;
        }
 
        /* Get domain policy handle */
-       result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+       status = dcerpc_samr_OpenDomain(b, mem_ctx,
                                        &connect_pol,
                                        MAXIMUM_ALLOWED_ACCESS,
                                        &sid,
-                                       &domain_pol);
+                                       &domain_pol,
+                                       &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
        if (!NT_STATUS_IS_OK(result)) {
                return result;
        }
 
        init_lsa_String(&lsa_acct_name, member);
 
-       result = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+       status = dcerpc_samr_LookupNames(b, mem_ctx,
                                         &domain_pol,
                                         1,
                                         &lsa_acct_name,
                                         &rids,
-                                        &rid_types);
+                                        &rid_types,
+                                        &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_fprintf(stderr, _("Could not lookup up group member %s\n"),
+                         member);
+               goto done;
+       }
 
        if (!NT_STATUS_IS_OK(result)) {
+               status = result;
                d_fprintf(stderr, _("Could not lookup up group member %s\n"),
                          member);
                goto done;
        }
 
-       result = rpccli_samr_OpenGroup(pipe_hnd, mem_ctx,
+       status = dcerpc_samr_OpenGroup(b, mem_ctx,
                                       &domain_pol,
                                       MAXIMUM_ALLOWED_ACCESS,
                                       group_rid,
-                                      &group_pol);
+                                      &group_pol,
+                                      &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
 
        if (!NT_STATUS_IS_OK(result)) {
+               status = result;
                goto done;
        }
 
-       result = rpccli_samr_AddGroupMember(pipe_hnd, mem_ctx,
+       status = dcerpc_samr_AddGroupMember(b, mem_ctx,
                                            &group_pol,
                                            rids.ids[0],
-                                           0x0005); /* unknown flags */
+                                           0x0005, /* unknown flags */
+                                           &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
+
+       status = result;
 
  done:
-       rpccli_samr_Close(pipe_hnd, mem_ctx, &connect_pol);
-       return result;
+       dcerpc_samr_Close(b, mem_ctx, &connect_pol, &result);
+       return status;
 }
 
 static NTSTATUS rpc_add_aliasmem(struct rpc_pipe_client *pipe_hnd,