svn commit: samba r21860 - in branches: SAMBA_3_0/source/nsswitch SAMBA_3_0_25/source/nsswitch

jerry at samba.org jerry at samba.org
Fri Mar 16 17:54:12 GMT 2007


Author: jerry
Date: 2007-03-16 17:54:10 +0000 (Fri, 16 Mar 2007)
New Revision: 21860

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

Log:
Fixes for "winbind normalize names" functionality:

* Fix getgroups() call called using a normalized name
* Fix some more name mappings that could cause for example
  a user to be unable to unlock the screen as the username
  would not match in the PAM authenticate call.



Modified:
   branches/SAMBA_3_0/source/nsswitch/winbindd.h
   branches/SAMBA_3_0/source/nsswitch/winbindd_group.c
   branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c
   branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
   branches/SAMBA_3_0/source/nsswitch/winbindd_user.c
   branches/SAMBA_3_0_25/source/nsswitch/winbindd.h
   branches/SAMBA_3_0_25/source/nsswitch/winbindd_group.c
   branches/SAMBA_3_0_25/source/nsswitch/winbindd_pam.c
   branches/SAMBA_3_0_25/source/nsswitch/winbindd_rpc.c
   branches/SAMBA_3_0_25/source/nsswitch/winbindd_user.c


Changeset:
Modified: branches/SAMBA_3_0/source/nsswitch/winbindd.h
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd.h	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd.h	2007-03-16 17:54:10 UTC (rev 21860)
@@ -40,6 +40,8 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
+#define WB_REPLACE_CHAR		'_'
+
 /* bits for fd_event.flags */
 #define EVENT_FD_READ 1
 #define EVENT_FD_WRITE 2

Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_group.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_group.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_group.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -508,7 +508,7 @@
 
 	/* Get rid and name type from name */
 
-	ws_name_replace( name_group, '_' );
+	ws_name_replace( name_group, WB_REPLACE_CHAR );
         
 	if (!winbindd_lookup_sid_by_name(state->mem_ctx, domain, domain->name,
 					 name_group, &group_sid, &name_type)) {
@@ -1275,6 +1275,8 @@
 
 	s->state = state;
 
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
+
 	if (!parse_domain_user_talloc(state->mem_ctx,
 				      state->request.data.username,
 				      &s->domname, &s->username)) {

Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -744,6 +744,8 @@
 
 	/* Parse domain and username */
 	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
+
 	if (!canonicalize_username(state->request.data.auth.user,
 			       name_domain, name_user)) {
 		set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
@@ -1332,6 +1334,8 @@
 
 	/* Parse domain and username */
 	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
+
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	if (domain->online == False) {

Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -262,7 +262,7 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	ws_name_return( full_name, '_' );
+	ws_name_return( full_name, WB_REPLACE_CHAR );
 
 	DEBUG(3,("name_to_sid [rpc] %s for domain %s\n", full_name?full_name:"", domain_name ));
 
@@ -317,7 +317,7 @@
 	*domain_name = domains[0];
 	*name = names[0];
 
-	ws_name_replace( *name, '_' );	
+	ws_name_replace( *name, WB_REPLACE_CHAR );	
 		
 	DEBUG(5,("Mapped sid to [%s]\\[%s]\n", domains[0], *name));
 	return NT_STATUS_OK;
@@ -369,7 +369,7 @@
 	ret_names = *names;
 	for (i=0; i<num_rids; i++) {
 		if ((*types)[i] != SID_NAME_UNKNOWN) {
-			ws_name_replace( ret_names[i], '_' );
+			ws_name_replace( ret_names[i], WB_REPLACE_CHAR );
 			*domain_name = domains[i];
 		}
 	}

Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_user.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_user.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_user.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -243,7 +243,7 @@
 	strlower_m( username );
 	s->username = talloc_strdup(s->state->mem_ctx, username);
 
-	ws_name_replace( s->username, '_' );
+	ws_name_replace( s->username, WB_REPLACE_CHAR );
 	 
 	s->fullname = talloc_strdup(s->state->mem_ctx, full_name);
 	s->homedir = talloc_strdup(s->state->mem_ctx, homedir);
@@ -345,6 +345,8 @@
 	DEBUG(3, ("[%5lu]: getpwnam %s\n", (unsigned long)state->pid,
 		  state->request.data.username));
 
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
+
 	if (!parse_domain_user(state->request.data.username, domname,
 			       username)) {
 		DEBUG(5, ("Could not parse domain user: %s\n",

Modified: branches/SAMBA_3_0_25/source/nsswitch/winbindd.h
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/winbindd.h	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0_25/source/nsswitch/winbindd.h	2007-03-16 17:54:10 UTC (rev 21860)
@@ -40,6 +40,8 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
+#define WB_REPLACE_CHAR		'_'
+
 /* bits for fd_event.flags */
 #define EVENT_FD_READ 1
 #define EVENT_FD_WRITE 2

Modified: branches/SAMBA_3_0_25/source/nsswitch/winbindd_group.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/winbindd_group.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0_25/source/nsswitch/winbindd_group.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -508,7 +508,7 @@
 
 	/* Get rid and name type from name */
 
-	ws_name_replace( name_group, '_' );
+	ws_name_replace( name_group, WB_REPLACE_CHAR );
         
 	if (!winbindd_lookup_sid_by_name(state->mem_ctx, domain, domain->name,
 					 name_group, &group_sid, &name_type)) {
@@ -1275,6 +1275,8 @@
 
 	s->state = state;
 
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
+
 	if (!parse_domain_user_talloc(state->mem_ctx,
 				      state->request.data.username,
 				      &s->domname, &s->username)) {

Modified: branches/SAMBA_3_0_25/source/nsswitch/winbindd_pam.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/winbindd_pam.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0_25/source/nsswitch/winbindd_pam.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -744,6 +744,8 @@
 
 	/* Parse domain and username */
 	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
+
 	if (!canonicalize_username(state->request.data.auth.user,
 			       name_domain, name_user)) {
 		set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
@@ -1332,6 +1334,8 @@
 
 	/* Parse domain and username */
 	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
+
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	if (domain->online == False) {

Modified: branches/SAMBA_3_0_25/source/nsswitch/winbindd_rpc.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/winbindd_rpc.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0_25/source/nsswitch/winbindd_rpc.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -262,7 +262,7 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	ws_name_return( full_name, '_' );
+	ws_name_return( full_name, WB_REPLACE_CHAR );
 
 	DEBUG(3,("name_to_sid [rpc] %s for domain %s\n", full_name?full_name:"", domain_name ));
 
@@ -317,7 +317,7 @@
 	*domain_name = domains[0];
 	*name = names[0];
 
-	ws_name_replace( *name, '_' );	
+	ws_name_replace( *name, WB_REPLACE_CHAR );	
 		
 	DEBUG(5,("Mapped sid to [%s]\\[%s]\n", domains[0], *name));
 	return NT_STATUS_OK;
@@ -369,7 +369,7 @@
 	ret_names = *names;
 	for (i=0; i<num_rids; i++) {
 		if ((*types)[i] != SID_NAME_UNKNOWN) {
-			ws_name_replace( ret_names[i], '_' );
+			ws_name_replace( ret_names[i], WB_REPLACE_CHAR );
 			*domain_name = domains[i];
 		}
 	}

Modified: branches/SAMBA_3_0_25/source/nsswitch/winbindd_user.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/winbindd_user.c	2007-03-16 16:35:44 UTC (rev 21859)
+++ branches/SAMBA_3_0_25/source/nsswitch/winbindd_user.c	2007-03-16 17:54:10 UTC (rev 21860)
@@ -243,7 +243,7 @@
 	strlower_m( username );
 	s->username = talloc_strdup(s->state->mem_ctx, username);
 
-	ws_name_replace( s->username, '_' );
+	ws_name_replace( s->username, WB_REPLACE_CHAR );
 	 
 	s->fullname = talloc_strdup(s->state->mem_ctx, full_name);
 	s->homedir = talloc_strdup(s->state->mem_ctx, homedir);
@@ -345,6 +345,8 @@
 	DEBUG(3, ("[%5lu]: getpwnam %s\n", (unsigned long)state->pid,
 		  state->request.data.username));
 
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
+
 	if (!parse_domain_user(state->request.data.username, domname,
 			       username)) {
 		DEBUG(5, ("Could not parse domain user: %s\n",



More information about the samba-cvs mailing list