[SCM] Samba Shared Repository - branch v3-6-test updated

Günther Deschner gd at samba.org
Tue Feb 1 06:00:04 MST 2011


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 <gd at 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 <gd at 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 <gd at 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 <gd at 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 <gd at 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


More information about the samba-cvs mailing list