iboukris / rpms / samba

Forked from rpms/samba 4 years ago
Clone
Blob Blame History Raw
Index: source/nsswitch/idmap.c
===================================================================
--- source/nsswitch/idmap.c	(revision 25609)
+++ source/nsswitch/idmap.c	(working copy)
@@ -252,12 +252,6 @@
 	return NT_STATUS_OK;
 }
 
-/**********************************************************************
- Initialise idmap cache and a remote backend (if configured).
-**********************************************************************/
-
-static const char *idmap_default_domain[] = { "default domain", NULL };
-
 /****************************************************************************
  ****************************************************************************/
 
@@ -292,6 +286,7 @@
 	char *compat_backend = NULL;
 	char *compat_params = NULL;
 	const char **dom_list = NULL;
+	const char *default_domain = NULL;
 	char *alloc_backend = NULL;
 	BOOL default_already_defined = False;
 	BOOL pri_dom_is_in_list = False;
@@ -356,7 +351,25 @@
 	}
 
 	if ( ! dom_list) {
-		dom_list = idmap_default_domain;
+		/* generate a list with our main domain */
+		char ** dl;
+
+		dl = talloc_array(idmap_ctx, char *, 2);
+		if (dl == NULL) {
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		dl[0] = talloc_strdup(dl, lp_workgroup());
+		if (dl[0] == NULL) {
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+
+		/* terminate */
+		dl[1] = NULL;
+
+		dom_list = dl;
+		default_domain = dl[0];
 	}
 
 	/***************************
@@ -398,10 +411,10 @@
 						   "default", False);
 
 		if (dom->default_domain ||
-		    strequal(dom_list[i], idmap_default_domain[0])) {
+		    (default_domain && strequal(dom_list[i], default_domain))) {
 
 			/* make sure this is set even when we match
-			 * idmap_default_domain[0] */
+			 * default_domain */
 			dom->default_domain = True;
 
 			if (default_already_defined) {