1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-29 21:47:30 +03:00

r11655: Two small fixes

* remove redundant call to sub_set_smb_name() in session setup code.
* Fix lockup when running 'wbinfo -t' on a Samba PDC.  Cause
  was new authenticated session setup from winbindd which
  resulted in a mangled username (machine_) that was not found
  in the local files and so was queiued up to nss_winbindd.
  Deadlock....
  So now make sure to keep the trailing '$' for machine account
  names when calling sub_set_smb_name().
This commit is contained in:
Gerald Carter 2005-11-10 21:10:24 +00:00 committed by Gerald (Jerry) Carter
parent 6bf4d88ab5
commit b0a2d43b60
2 changed files with 26 additions and 7 deletions

View File

@ -107,15 +107,37 @@ const char* get_local_machine_name(void)
void sub_set_smb_name(const char *name)
{
fstring tmp;
int len;
BOOL is_machine_account = False;
/* don't let anonymous logins override the name */
if (! *name)
return;
fstrcpy(tmp,name);
trim_char(tmp,' ',' ');
strlower_m(tmp);
alpha_strcpy(smb_user_name,tmp,SAFE_NETBIOS_CHARS,sizeof(smb_user_name)-1);
fstrcpy( tmp, name );
trim_char( tmp, ' ', ' ' );
strlower_m( tmp );
len = strlen( tmp );
if ( len == 0 )
return;
/* long story but here goes....we have to allow usernames
ending in '$' as they are valid machine account names.
So check for a machine account and re-add the '$'
at the end after the call to alpha_strcpy(). --jerry */
if ( tmp[len-1] == '$' )
is_machine_account = True;
alpha_strcpy( smb_user_name, tmp, SAFE_NETBIOS_CHARS, sizeof(smb_user_name)-1 );
if ( is_machine_account ) {
len = strlen( smb_user_name );
smb_user_name[len-1] = '$';
}
}
char* sub_get_smb_name( void )

View File

@ -954,9 +954,6 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
fstrcpy(sub_user, user);
/* setup the string used by %U */
sub_set_smb_name(user);
} else {
fstrcpy(sub_user, lp_guestaccount());
}