svn commit: samba r17406 - in branches: SAMBA_3_0/source/passdb SAMBA_3_0/source/smbd SAMBA_3_0_23/source/passdb SAMBA_3_0_23/source/smbd

vlendec at samba.org vlendec at samba.org
Fri Aug 4 21:07:33 GMT 2006


Author: vlendec
Date: 2006-08-04 21:07:32 +0000 (Fri, 04 Aug 2006)
New Revision: 17406

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17406

Log:
We need to do a translation of winbind separator -> '\\' in
lookup_name_smbconf, otherwise 

force user = domain+administrator

can not work. Also attempt to fix the 'valid users = domain+group' bug at the
same time.

Volker
Modified:
   branches/SAMBA_3_0/source/passdb/lookup_sid.c
   branches/SAMBA_3_0/source/smbd/share_access.c
   branches/SAMBA_3_0_23/source/passdb/lookup_sid.c
   branches/SAMBA_3_0_23/source/smbd/share_access.c


Changeset:
Modified: branches/SAMBA_3_0/source/passdb/lookup_sid.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/lookup_sid.c	2006-08-04 20:49:17 UTC (rev 17405)
+++ branches/SAMBA_3_0/source/passdb/lookup_sid.c	2006-08-04 21:07:32 UTC (rev 17406)
@@ -395,8 +395,25 @@
 	char *qualified_name;
 
 	/* NB. No winbindd_separator here as lookup_name needs \\' */
-	if (strchr_m(full_name, '\\')) {
+	if (strchr_m(full_name, *lp_winbind_separator())) {
+
 		/* The name is already qualified with a domain. */
+
+		if (*lp_winbind_separator() != '\\') {
+			char *p, *tmp;
+
+			/* lookup_name() needs '\\' as a separator */
+
+			tmp = talloc_strdup(mem_ctx, full_name);
+			if (!tmp) {
+				return False;
+			}
+			p = strchr_m(tmp, *lp_winbind_separator());
+			SMB_ASSERT(p != NULL);
+			*p = '\\';
+			full_name = tmp;
+		}
+
 		return lookup_name(mem_ctx, full_name, flags,
 				ret_domain, ret_name,
 				ret_sid, ret_type);

Modified: branches/SAMBA_3_0/source/smbd/share_access.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/share_access.c	2006-08-04 20:49:17 UTC (rev 17405)
+++ branches/SAMBA_3_0/source/smbd/share_access.c	2006-08-04 21:07:32 UTC (rev 17406)
@@ -97,7 +97,7 @@
 	}
 
 	if (!do_group_checks(&name, &prefix)) {
-		if (!lookup_name(mem_ctx, name, LOOKUP_NAME_ALL,
+		if (!lookup_name_smbconf(mem_ctx, name, LOOKUP_NAME_ALL,
 				 NULL, NULL, &sid, &type)) {
 			DEBUG(5, ("lookup_name %s failed\n", name));
 			return False;
@@ -112,7 +112,7 @@
 
 	for (/* initialized above */ ; *prefix != '\0'; prefix++) {
 		if (*prefix == '+') {
-			if (!lookup_name(mem_ctx, name,
+			if (!lookup_name_smbconf(mem_ctx, name,
 					 LOOKUP_NAME_ALL|LOOKUP_NAME_GROUP,
 					 NULL, NULL, &sid, &type)) {
 				DEBUG(5, ("lookup_name %s failed\n", name));

Modified: branches/SAMBA_3_0_23/source/passdb/lookup_sid.c
===================================================================
--- branches/SAMBA_3_0_23/source/passdb/lookup_sid.c	2006-08-04 20:49:17 UTC (rev 17405)
+++ branches/SAMBA_3_0_23/source/passdb/lookup_sid.c	2006-08-04 21:07:32 UTC (rev 17406)
@@ -370,8 +370,25 @@
 	char *qualified_name;
 
 	/* NB. No winbindd_separator here as lookup_name needs \\' */
-	if (strchr_m(full_name, '\\')) {
+	if (strchr_m(full_name, *lp_winbind_separator())) {
+
 		/* The name is already qualified with a domain. */
+
+		if (*lp_winbind_separator() != '\\') {
+			char *p, *tmp;
+
+			/* lookup_name() needs '\\' as a separator */
+
+			tmp = talloc_strdup(mem_ctx, full_name);
+			if (!tmp) {
+				return False;
+			}
+			p = strchr_m(tmp, *lp_winbind_separator());
+			SMB_ASSERT(p != NULL);
+			*p = '\\';
+			full_name = tmp;
+		}
+
 		return lookup_name(mem_ctx, full_name, flags,
 				ret_domain, ret_name,
 				ret_sid, ret_type);

Modified: branches/SAMBA_3_0_23/source/smbd/share_access.c
===================================================================
--- branches/SAMBA_3_0_23/source/smbd/share_access.c	2006-08-04 20:49:17 UTC (rev 17405)
+++ branches/SAMBA_3_0_23/source/smbd/share_access.c	2006-08-04 21:07:32 UTC (rev 17406)
@@ -94,7 +94,7 @@
 	}
 
 	if (!do_group_checks(&name, &prefix)) {
-		if (!lookup_name(mem_ctx, name, LOOKUP_NAME_ALL,
+		if (!lookup_name_smbconf(mem_ctx, name, LOOKUP_NAME_ALL,
 				 NULL, NULL, &sid, &type)) {
 			DEBUG(5, ("lookup_name %s failed\n", name));
 			return False;
@@ -109,7 +109,7 @@
 
 	for (/* initialized above */ ; *prefix != '\0'; prefix++) {
 		if (*prefix == '+') {
-			if (!lookup_name(mem_ctx, name,
+			if (!lookup_name_smbconf(mem_ctx, name,
 					 LOOKUP_NAME_ALL|LOOKUP_NAME_GROUP,
 					 NULL, NULL, &sid, &type)) {
 				DEBUG(5, ("lookup_name %s failed\n", name));



More information about the samba-cvs mailing list