The branch, v4-0-test has been updated
       via  def46f6852075e1efe2bb7c5a7cffa5defdbb4ee (commit)
       via  7e85f318b571d1a909dffad0ecd661468ed497ca (commit)
       via  7c80cd18d5cd9cbf32dac15a4734f5a3c67cd0e7 (commit)
       via  52947fc0c019e57438a21e54953601b6cc08eb49 (commit)
      from  bda6a38b055fed2394e65cdc0b308a1442116402 (commit)

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


- Log -----------------------------------------------------------------
commit def46f6852075e1efe2bb7c5a7cffa5defdbb4ee
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Thu Mar 13 14:13:31 2008 +1100

    Report binding in libnet failure message.
    
    Andrew Bartlett

commit 7e85f318b571d1a909dffad0ecd661468ed497ca
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Thu Mar 13 14:12:50 2008 +1100

    Bail out, rather than segfault on no domain sid.
    
    Andrew Bartlett

commit 7c80cd18d5cd9cbf32dac15a4734f5a3c67cd0e7
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Thu Mar 13 14:12:18 2008 +1100

    Correctly normalise records against OpenLDAP.
    
    Fixing this simple typo allows more of the ldap.js test to pass.
    
    Andrew Bartlett

commit 52947fc0c019e57438a21e54953601b6cc08eb49
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Thu Mar 13 14:11:06 2008 +1100

    Don't search the whole tree for the domains's sid
    
    This change removes a dependency on objectclass=domainDNS, and avoids
    a subtree search when we really know exactly where this record is.
    
    Andrew Bartlett

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

Summary of changes:
 source/dsdb/common/util.c                   |   22 ++++++++++++++++++----
 source/dsdb/samdb/ldb_modules/normalise.c   |    2 +-
 source/dsdb/samdb/ldb_modules/objectclass.c |    5 +++--
 source/libnet/libnet_rpc.c                  |    5 ++++-
 4 files changed, 26 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/dsdb/common/util.c b/source/dsdb/common/util.c
index 3be60ac..807c028 100644
--- a/source/dsdb/common/util.c
+++ b/source/dsdb/common/util.c
@@ -1004,7 +1004,13 @@ struct ldb_dn *samdb_sites_dn(struct ldb_context 
*sam_ctx, TALLOC_CTX *mem_ctx)
 const struct dom_sid *samdb_domain_sid(struct ldb_context *ldb)
 {
        TALLOC_CTX *tmp_ctx;
-       struct dom_sid *domain_sid;
+       const struct dom_sid *domain_sid;
+       const char *attrs[] = {
+               "objectSid",
+               NULL
+       };
+       struct ldb_result *res;
+       int ret;
 
        /* see if we have a cached copy */
        domain_sid = (struct dom_sid *)ldb_get_opaque(ldb, "cache.domain_sid");
@@ -1017,9 +1023,17 @@ const struct dom_sid *samdb_domain_sid(struct 
ldb_context *ldb)
                goto failed;
        }
 
-       /* find the domain_sid */
-       domain_sid = samdb_search_dom_sid(ldb, tmp_ctx, 
ldb_get_default_basedn(ldb),
-                                         "objectSid", "objectClass=domainDNS");
+       ret = ldb_search_exp_fmt(ldb, tmp_ctx, &res, 
ldb_get_default_basedn(ldb), LDB_SCOPE_BASE, attrs, "objectSid=*");
+
+       if (ret != LDB_SUCCESS) {
+               goto failed;
+       }
+       
+       if (res->count != 1) {
+               goto failed;
+       }
+
+       domain_sid = samdb_result_dom_sid(tmp_ctx, res->msgs[0], "objectSid");
        if (domain_sid == NULL) {
                goto failed;
        }
diff --git a/source/dsdb/samdb/ldb_modules/normalise.c 
b/source/dsdb/samdb/ldb_modules/normalise.c
index a0eff43..8de9e33 100644
--- a/source/dsdb/samdb/ldb_modules/normalise.c
+++ b/source/dsdb/samdb/ldb_modules/normalise.c
@@ -117,7 +117,7 @@ static int normalise_search_callback(struct ldb_context 
*ldb, void *context, str
                                talloc_free(mem_ctx);
                                return LDB_ERR_OPERATIONS_ERROR;
                        }
-                       ret = fix_dn(ares->message->dn);
+                       ret = fix_dn(dn);
                        if (ret != LDB_SUCCESS) {
                                talloc_free(mem_ctx);
                                return ret;
diff --git a/source/dsdb/samdb/ldb_modules/objectclass.c 
b/source/dsdb/samdb/ldb_modules/objectclass.c
index 537a560..4d4ef58 100644
--- a/source/dsdb/samdb/ldb_modules/objectclass.c
+++ b/source/dsdb/samdb/ldb_modules/objectclass.c
@@ -258,14 +258,15 @@ static DATA_BLOB *get_sd(struct ldb_module *module, 
TALLOC_CTX *mem_ctx,
        struct auth_session_info *session_info
                = ldb_get_opaque(module->ldb, "sessionInfo");
        struct security_descriptor *sd;
+       struct dom_sid *domain_sid = samdb_domain_sid(module->ldb);
 
-       if (!objectclass->defaultSecurityDescriptor) {
+       if (!objectclass->defaultSecurityDescriptor || !domain_sid) {
                return NULL;
        }
        
        sd = sddl_decode(mem_ctx, 
                         objectclass->defaultSecurityDescriptor,
-                        samdb_domain_sid(module->ldb));
+                        domain_sid);
 
        if (!sd || !session_info || !session_info->security_token) {
                return NULL;
diff --git a/source/libnet/libnet_rpc.c b/source/libnet/libnet_rpc.c
index 667f54c..50cc114 100644
--- a/source/libnet/libnet_rpc.c
+++ b/source/libnet/libnet_rpc.c
@@ -867,8 +867,11 @@ static NTSTATUS libnet_RpcConnectDCInfo_recv(struct 
composite_context *c, struct
        } else {
                if (s->r.out.error_string) {
                        r->out.error_string = talloc_steal(mem_ctx, 
s->r.out.error_string);
-               } else {
+               } else if (r->in.binding == NULL) {
                        r->out.error_string = talloc_asprintf(mem_ctx, 
"Connection to DC failed: %s", nt_errstr(status));
+               } else {
+                       r->out.error_string = talloc_asprintf(mem_ctx, 
"Connection to DC %s failed: %s", 
+                                                             r->in.binding, 
nt_errstr(status));
                }
        }
 


-- 
Samba Shared Repository

Reply via email to