[SCM] Samba Shared Repository - branch master updated

Tim Prouty tprouty at samba.org
Tue Dec 15 14:52:24 MST 2009


The branch, master has been updated
       via  4a19ada... smbtorture4: Add rpc-samba3-getaliasmembership-0
      from  20bcdf8... s3: Fix _samr_GetAliasMembership for results with 0 rids

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 4a19adadcc543f289f4f1c70e696153b488f79c6
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Dec 15 17:49:24 2009 +0100

    smbtorture4: Add rpc-samba3-getaliasmembership-0

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

Summary of changes:
 source4/torture/rpc/rpc.c       |    2 +
 source4/torture/rpc/samba3rpc.c |   60 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/rpc.c b/source4/torture/rpc/rpc.c
index 141a39e..3362bad 100644
--- a/source4/torture/rpc/rpc.c
+++ b/source4/torture/rpc/rpc.c
@@ -488,6 +488,8 @@ NTSTATUS torture_rpc_init(void)
 	torture_suite_add_simple_test(suite, "SAMBA3-SPOOLSS", torture_samba3_rpc_spoolss);
 	torture_suite_add_simple_test(suite, "SAMBA3-WKSSVC", torture_samba3_rpc_wkssvc);
 	torture_suite_add_simple_test(suite, "SAMBA3-WINREG", torture_samba3_rpc_winreg);
+	torture_suite_add_simple_test(suite, "SAMBA3-GETALIASMEMBERSHIP-0",
+				      torture_samba3_getaliasmembership_0);
 	torture_rpc_drsuapi_tcase(suite);
 	torture_rpc_drsuapi_cracknames_tcase(suite);
 	torture_suite_add_suite(suite, torture_rpc_dssetup(suite));
diff --git a/source4/torture/rpc/samba3rpc.c b/source4/torture/rpc/samba3rpc.c
index d439e1f..7cae8db 100644
--- a/source4/torture/rpc/samba3rpc.c
+++ b/source4/torture/rpc/samba3rpc.c
@@ -3541,3 +3541,63 @@ bool torture_samba3_regconfig(struct torture_context *torture)
 	talloc_free(cli);
 	return ret;
 }
+
+/*
+ * Test that even with a result of 0 rids the array is returned as a
+ * non-NULL pointer. Yes, XP does notice.
+ */
+
+bool torture_samba3_getaliasmembership_0(struct torture_context *torture)
+{
+	struct dcerpc_pipe *p;
+	NTSTATUS status;
+	bool ret;
+	struct samr_Connect2 c;
+	struct samr_OpenDomain o;
+	struct dom_sid sid;
+	struct lsa_SidPtr ptr;
+	struct lsa_SidArray sids;
+	struct samr_GetAliasMembership g;
+	struct samr_Ids rids;
+	struct policy_handle samr, domain;
+
+	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
+	if (!NT_STATUS_IS_OK(status)) {
+		return false;
+	}
+	c.in.system_name = NULL;
+	c.in.access_mask = SAMR_ACCESS_LOOKUP_DOMAIN;
+	c.out.connect_handle = &samr;
+	status = dcerpc_samr_Connect2(p, torture, &c);
+	if (!NT_STATUS_IS_OK(status)) {
+		return false;
+	}
+	dom_sid_parse("S-1-5-32", &sid);
+	o.in.connect_handle = &samr;
+	o.in.access_mask = SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS;
+	o.in.sid = &sid;
+	o.out.domain_handle = &domain;
+	status = dcerpc_samr_OpenDomain(p, torture, &o);
+	if (!NT_STATUS_IS_OK(status)) {
+		return false;
+	}
+	dom_sid_parse("S-1-2-3-4-5", &sid);
+	ptr.sid = &sid;
+	sids.num_sids = 1;
+	sids.sids = &ptr;
+	g.in.domain_handle = &domain;
+	g.in.sids = &sids;
+	g.out.rids = &rids;
+	status = dcerpc_samr_GetAliasMembership(p, torture, &g);
+	if (!NT_STATUS_IS_OK(status)) {
+		return false;
+	}
+	if (rids.ids == NULL) {
+		/* This is the piece to test here */
+		torture_warning(torture,
+				"torture_samba3_getaliasmembership_0: "
+				"Server returns NULL rids array\n");
+		return false;
+	}
+	return true;
+}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list