[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Sat Dec 4 04:12:02 MST 2010


The branch, master has been updated
       via  14d3027 s4:samr RPC server - dcesrv_samr_GetBootKeyInformation - return NOT_SUPPORTED
       via  b6750ee s4:dsdb/common/util_samr.c - "dsdb_enum_group_mem" - fix it up regarding non SAM members
       via  b604e94 s4:torture/rpc/samr.c - fix output message
      from  b8282a2 Fix bug #3185 - testparm exits 0 if it can read the config file regardless of errors

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


- Log -----------------------------------------------------------------
commit 14d3027458dc3831330e316e9de1cc71b73c9c5b
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Dec 4 10:34:05 2010 +0100

    s4:samr RPC server - dcesrv_samr_GetBootKeyInformation - return NOT_SUPPORTED
    
    Windows Server 2008 does this
    
    Autobuild-User: Matthias Dieter Wallnöfer <mdw at samba.org>
    Autobuild-Date: Sat Dec  4 12:11:47 CET 2010 on sn-devel-104

commit b6750eee281427bf7c570b9b594f924583fa6bb5
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Dec 4 10:24:30 2010 +0100

    s4:dsdb/common/util_samr.c - "dsdb_enum_group_mem" - fix it up regarding non SAM members
    
    For example contacts.

commit b604e9425b3f1a1c4c9a627ac6f939837c9c0665
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Sat Dec 4 10:07:25 2010 +0100

    s4:torture/rpc/samr.c - fix output message

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

Summary of changes:
 source4/dsdb/common/util_samr.c       |   23 ++++++++++++++++-------
 source4/rpc_server/samr/dcesrv_samr.c |    3 ++-
 source4/torture/rpc/samr.c            |    2 +-
 3 files changed, 19 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/util_samr.c b/source4/dsdb/common/util_samr.c
index 72d42cb..e6c7797 100644
--- a/source4/dsdb/common/util_samr.c
+++ b/source4/dsdb/common/util_samr.c
@@ -409,7 +409,7 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb,
 			     unsigned int *pnum_members)
 {
 	struct ldb_message *msg;
-	unsigned int i;
+	unsigned int i, j;
 	int ret;
 	struct dom_sid *members;
 	struct ldb_message_element *member_el;
@@ -443,6 +443,7 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb,
 		return NT_STATUS_NO_MEMORY;
 	}
 
+	j = 0;
 	for (i=0; i <member_el->num_values; i++) {
 		struct ldb_dn *member_dn = ldb_dn_from_ldb_val(tmp_ctx, ldb,
 							       &member_el->values[i]);
@@ -455,17 +456,25 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb,
 			return NT_STATUS_INTERNAL_DB_CORRUPTION;
 		}
 
-		status = dsdb_get_extended_dn_sid(member_dn, &members[i], "SID");
-		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(1, ("Could find SID attribute on extended DN %s\n",
-				  ldb_dn_get_extended_linearized(tmp_ctx, dn, 1)));
+		status = dsdb_get_extended_dn_sid(member_dn, &members[j],
+						  "SID");
+		if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
+			/* If we fail finding a SID then this is no error since
+			 * it could be a non SAM object - e.g. a contact */
+			continue;
+		} else if (!NT_STATUS_IS_OK(status)) {
+			DEBUG(1, ("When parsing DN %s we failed to parse our SID component, so we cannot fetch the membership: %s\n",
+				  ldb_dn_get_extended_linearized(tmp_ctx, dn, 1),
+				  nt_errstr(status)));
 			talloc_free(tmp_ctx);
-			return NT_STATUS_INTERNAL_DB_CORRUPTION;
+			return status;
 		}
+
+		++j;
 	}
 
 	*members_out = talloc_steal(mem_ctx, members);
-	*pnum_members = member_el->num_values;
+	*pnum_members = j;
 	talloc_free(tmp_ctx);
 	return NT_STATUS_OK;
 }
diff --git a/source4/rpc_server/samr/dcesrv_samr.c b/source4/rpc_server/samr/dcesrv_samr.c
index 391bc7f..399b146 100644
--- a/source4/rpc_server/samr/dcesrv_samr.c
+++ b/source4/rpc_server/samr/dcesrv_samr.c
@@ -4172,7 +4172,8 @@ static NTSTATUS dcesrv_samr_SetBootKeyInformation(struct dcesrv_call_state *dce_
 static NTSTATUS dcesrv_samr_GetBootKeyInformation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct samr_GetBootKeyInformation *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	/* Windows Server 2008 returns this */
+	return NT_STATUS_NOT_SUPPORTED;
 }
 
 
diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index 8ee1198..8d10671 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -5630,7 +5630,7 @@ static bool test_QueryGroupMember(struct dcerpc_binding_handle *b,
 	torture_assert_ntstatus_ok(tctx, dcerpc_samr_QueryGroupMember_r(b, tctx, &r),
 		"QueryGroupMember failed");
 	if (!NT_STATUS_IS_OK(r.out.result)) {
-		torture_warning(tctx, "QueryGroupInfo failed - %s\n", nt_errstr(r.out.result));
+		torture_warning(tctx, "QueryGroupMember failed - %s\n", nt_errstr(r.out.result));
 		ret = false;
 	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list