[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-341-g99b75ca

Gerald (Jerry) Carter jerry at samba.org
Tue Nov 20 19:27:41 GMT 2007


The branch, v3-2-test has been updated
       via  99b75cada2c4caaec5d30c8351080f0a41e44bd1 (commit)
      from  ae7885711f504f1442335f09088cbe149a7e00f9 (commit)

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


- Log -----------------------------------------------------------------
commit 99b75cada2c4caaec5d30c8351080f0a41e44bd1
Author: Gerald (Jerry) Carter <jerry at samba.org>
Date:   Tue Nov 20 13:24:03 2007 -0600

    Prevent segv in winbindd running on a DC using the "idmap backend" syntax.
    
    The number of domains should be counted as they are added and not assumed
    to match the loop counter.
    
    manually cherry-picked 8ad2826c48a0d4d26abc3bb209860c776f55822f

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

Summary of changes:
 source/winbindd/idmap.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/winbindd/idmap.c b/source/winbindd/idmap.c
index e89ad73..6756c2a 100644
--- a/source/winbindd/idmap.c
+++ b/source/winbindd/idmap.c
@@ -387,7 +387,7 @@ NTSTATUS idmap_init(void)
 	 */
 	DEBUG(1, ("Initializing idmap domains\n"));
 
-	for (i = 0; dom_list[i]; i++) {
+	for (i=0, num_domains=0; dom_list[i]; i++) {
 	       	const char *parm_backend;
 		char *config_option;
 
@@ -395,7 +395,7 @@ NTSTATUS idmap_init(void)
 		if (strequal(dom_list[i], "BUILTIN")
 		     || strequal(dom_list[i], get_global_sam_name()))
 		{
-			DEBUG(0,("idmap_init: Ignoring invalid domain %s\n",
+			DEBUG(0,("idmap_init: Ignoring domain %s\n",
 				 dom_list[i]));
 			continue;
 		}
@@ -503,13 +503,17 @@ NTSTATUS idmap_init(void)
 			ret = NT_STATUS_NO_MEMORY;
 			goto done;
 		}
-		idmap_domains[i] = dom;
+		idmap_domains[num_domains] = dom;
 
 		/* save default domain position for future uses */
 		if (dom->default_domain) {
-			def_dom_num = i;
+			def_dom_num = num_domains;
 		}
 
+		/* Bump counter to next available slot */
+
+		num_domains++;
+
 		DEBUG(10, ("Domain %s - Backend %s - %sdefault - %sreadonly\n",
 				dom->name, parm_backend,
 				dom->default_domain?"":"not ",
@@ -518,9 +522,6 @@ NTSTATUS idmap_init(void)
 		talloc_free(config_option);
 	}
 
-	/* save the number of domains we have */
-	num_domains = i;
-
 	/* automatically add idmap_nss backend if needed */
 	if ((lp_server_role() == ROLE_DOMAIN_MEMBER) &&
 	    ( ! pri_dom_is_in_list) &&


-- 
Samba Shared Repository


More information about the samba-cvs mailing list