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 <[email protected]>
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 <[email protected]>
    Autobuild-Date: Sat Dec  4 12:11:47 CET 2010 on sn-devel-104

commit b6750eee281427bf7c570b9b594f924583fa6bb5
Author: Matthias Dieter Wallnöfer <[email protected]>
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 <[email protected]>
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

Reply via email to