[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha5-95-g40a55b3

Andrew Bartlett abartlet at samba.org
Mon Jul 21 02:06:35 GMT 2008


The branch, v4-0-test has been updated
       via  40a55b34c2ce75267cf004dc4cfb8153c061e66b (commit)
      from  55bde3c9daeafdac04574365c23d181345639f34 (commit)

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


- Log -----------------------------------------------------------------
commit 40a55b34c2ce75267cf004dc4cfb8153c061e66b
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Mon Jul 21 12:05:53 2008 +1000

    Remove bogus test in 'enum trusted domains' LSA server.
    
    The change to the RPC-LSA test proves that when the remote server has
    0 trusted domains, it will return NT_STATUS_NO_MORE_ENTRIES, not
    NT_STATUS_OK.
    
    Andrew Bartlett

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

Summary of changes:
 source/rpc_server/lsa/dcesrv_lsa.c |    6 -----
 source/torture/rpc/lsa.c           |   40 ++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/rpc_server/lsa/dcesrv_lsa.c b/source/rpc_server/lsa/dcesrv_lsa.c
index eb60f42..f02e232 100644
--- a/source/rpc_server/lsa/dcesrv_lsa.c
+++ b/source/rpc_server/lsa/dcesrv_lsa.c
@@ -1130,9 +1130,6 @@ static NTSTATUS dcesrv_lsa_EnumTrustDom(struct dcesrv_call_state *dce_call, TALL
 	if (count == -1) {
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
-	if (count == 0 || r->in.max_size == 0) {
-		return NT_STATUS_OK;
-	}
 
 	/* convert to lsa_TrustInformation format */
 	entries = talloc_array(mem_ctx, struct lsa_DomainInfo, count);
@@ -1218,9 +1215,6 @@ static NTSTATUS dcesrv_lsa_EnumTrustedDomainsEx(struct dcesrv_call_state *dce_ca
 	if (count == -1) {
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
-	if (count == 0 || r->in.max_size == 0) {
-		return NT_STATUS_OK;
-	}
 
 	/* convert to lsa_DomainInformation format */
 	entries = talloc_array(mem_ctx, struct lsa_TrustDomainInfoInfoEx, count);
diff --git a/source/torture/rpc/lsa.c b/source/torture/rpc/lsa.c
index a4e702f..e6102f0 100644
--- a/source/torture/rpc/lsa.c
+++ b/source/torture/rpc/lsa.c
@@ -1822,6 +1822,19 @@ static bool test_EnumTrustDom(struct dcerpc_pipe *p,
 
 	printf("\nTesting EnumTrustDom\n");
 
+	r.in.handle = handle;
+	r.in.resume_handle = &resume_handle;
+	r.in.max_size = 0;
+	r.out.domains = &domains;
+	r.out.resume_handle = &resume_handle;
+	
+	enum_status = dcerpc_lsa_EnumTrustDom(p, mem_ctx, &r);
+	
+	if (!(NT_STATUS_EQUAL(enum_status, STATUS_MORE_ENTRIES) || NT_STATUS_EQUAL(enum_status, NT_STATUS_NO_MORE_ENTRIES))) {
+		printf("EnumTrustDom of zero size failed - %s\n", nt_errstr(enum_status));
+		return false;
+	}
+		
 	do {
 		r.in.handle = handle;
 		r.in.resume_handle = &resume_handle;
@@ -1848,12 +1861,30 @@ static bool test_EnumTrustDom(struct dcerpc_pipe *p,
 			return false;
 		}
 		
+		if (domains.count == 0) {
+			printf("EnumTrustDom failed - should have returned 'NT_STATUS_NO_MORE_ENTRIES' for 0 trusted domains\n");
+			return false;
+		}
+
 		ret &= test_query_each_TrustDom(p, mem_ctx, handle, &domains);
 		
 	} while ((NT_STATUS_EQUAL(enum_status, STATUS_MORE_ENTRIES)));
 
 	printf("\nTesting EnumTrustedDomainsEx\n");
 
+	r_ex.in.handle = handle;
+	r_ex.in.resume_handle = &resume_handle;
+	r_ex.in.max_size = LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER * 3;
+	r_ex.out.domains = &domains_ex;
+	r_ex.out.resume_handle = &resume_handle;
+	
+	enum_status = dcerpc_lsa_EnumTrustedDomainsEx(p, mem_ctx, &r_ex);
+	
+	if (!(NT_STATUS_EQUAL(enum_status, STATUS_MORE_ENTRIES) || NT_STATUS_EQUAL(enum_status, NT_STATUS_NO_MORE_ENTRIES))) {
+		printf("EnumTrustedDomainEx of zero size failed - %s\n", nt_errstr(enum_status));
+		return false;
+	}
+		
 	resume_handle = 0;
 	do {
 		r_ex.in.handle = handle;
@@ -1884,6 +1915,11 @@ static bool test_EnumTrustDom(struct dcerpc_pipe *p,
 			return false;
 		}
 
+		if (domains_ex.count == 0) {
+			printf("EnumTrustDomainEx failed - should have returned 'NT_STATUS_NO_MORE_ENTRIES' for 0 trusted domains\n");
+			return false;
+		}
+
 		ret &= test_query_each_TrustDomEx(p, mem_ctx, handle, &domains_ex);
 		
 	} while ((NT_STATUS_EQUAL(enum_status, STATUS_MORE_ENTRIES)));
@@ -1906,6 +1942,10 @@ static bool test_CreateTrustedDomain(struct dcerpc_pipe *p,
 
 	printf("Testing CreateTrustedDomain for 12 domains\n");
 
+	if (!test_EnumTrustDom(p, mem_ctx, handle)) {
+		ret = false;
+	}
+	
 	for (i=0; i< 12; i++) {
 		char *trust_name = talloc_asprintf(mem_ctx, "torturedom%02d", i);
 		char *trust_sid = talloc_asprintf(mem_ctx, "S-1-5-21-97398-379795-100%02d", i);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list