[SCM] Samba Shared Repository - branch v3-5-test updated

Karolin Seeger kseeger at samba.org
Tue Nov 16 07:49:04 MST 2010


The branch, v3-5-test has been updated
       via  b5c8b1b Second part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
       via  32a5aa6 First part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
      from  82e15a5 s3: Fix bug 7779, crash in expand_msdfs

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


- Log -----------------------------------------------------------------
commit b5c8b1bbb53caa0ceabb4a5180ff7deb1e58b538
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Nov 5 12:13:38 2010 -0700

    Second part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
    
    Ensure we return after calling passdb for SID lookups for which we are
    authoritative.
    
    Jeremy.

commit 32a5aa62cb54e90947bd027e72871ffc07c3dbcf
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Nov 5 12:11:53 2010 -0700

    First part of fix for bug #7777 - When requesting lookups for BUILTIN sids, winbindd allocates new uids/gids in error.
    
    Ensure idmap_init_passdb_domain() correctly initialized the default
    domain first.
    
    Jeremy.

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

Summary of changes:
 source3/winbindd/idmap.c      |   10 ++++++++++
 source3/winbindd/idmap_util.c |   31 +++++++++++++++++++++++++------
 2 files changed, 35 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c
index 4aa229c..7aa2853 100644
--- a/source3/winbindd/idmap.c
+++ b/source3/winbindd/idmap.c
@@ -428,6 +428,16 @@ fail:
 
 static struct idmap_domain *idmap_init_passdb_domain(TALLOC_CTX *mem_ctx)
 {
+	/*
+	 * Always init the default domain, we can't go without one
+	 */
+	if (default_idmap_domain == NULL) {
+		default_idmap_domain = idmap_init_default_domain(NULL);
+	}
+	if (default_idmap_domain == NULL) {
+		return NULL;
+	}
+
 	if (passdb_idmap_domain != NULL) {
 		return passdb_idmap_domain;
 	}
diff --git a/source3/winbindd/idmap_util.c b/source3/winbindd/idmap_util.c
index 37b7ecb..ba5e637 100644
--- a/source3/winbindd/idmap_util.c
+++ b/source3/winbindd/idmap_util.c
@@ -25,6 +25,23 @@
 #define DBGC_CLASS DBGC_IDMAP
 
 /*****************************************************************
+ Returns true if the request was for a specific domain, or
+ for a sid we are authoritative for - BUILTIN, or our own domain.
+*****************************************************************/
+
+static bool is_specific_domain_request(const char *dom_name, DOM_SID *sid)
+{
+	if (dom_name && dom_name[0] != '\0') {
+		return true;
+	}
+	if (sid_check_is_in_builtin(sid) ||
+			sid_check_is_in_our_domain(sid)) {
+		return true;
+	}
+	return false;
+}
+
+/*****************************************************************
  Returns the SID mapped to the given UID.
  If mapping is not possible returns an error.
 *****************************************************************/  
@@ -194,10 +211,11 @@ backend:
 		goto done;
 	}
 
-	if (dom_name[0] != '\0') {
+	if (is_specific_domain_request(dom_name, sid)) {
 		/*
-		 * We had the task to go to a specific domain which
-		 * could not answer our request. Fail.
+		 * We had the task to go to a specific domain or
+		 * a domain for which we are authoritative for and
+		 * it could not answer our request. Fail.
 		 */
 		if (winbindd_use_idmap_cache()) {
 			idmap_cache_set_sid2uid(sid, -1);
@@ -275,10 +293,11 @@ backend:
 		goto done;
 	}
 
-	if (domname[0] != '\0') {
+	if (is_specific_domain_request(domname, sid)) {
 		/*
-		 * We had the task to go to a specific domain which
-		 * could not answer our request. Fail.
+		 * We had the task to go to a specific domain or
+		 * a domain for which we are authoritative for and
+		 * it could not answer our request. Fail.
 		 */
 		if (winbindd_use_idmap_cache()) {
 			idmap_cache_set_sid2uid(sid, -1);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list