mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
Add an extra parameter to our 'set_remote_machine_name' and
'set_local_machine_name' so that the client can't change it from under us.
(.NET RC2 and WinXP install calls the machine 'machinename' during NTLMSSP
on the domain join).
Andrew Bartlett
(This used to be commit 4c7163e7c2
)
This commit is contained in:
parent
50eea93516
commit
cdc6fc8acb
@ -50,7 +50,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state)
|
||||
/* the client has given us its machine name (which we otherwise would not get on port 445).
|
||||
we need to possibly reload smb.conf if smb.conf includes depend on the machine name */
|
||||
|
||||
set_remote_machine_name(auth_ntlmssp_state->ntlmssp_state->workstation);
|
||||
set_remote_machine_name(auth_ntlmssp_state->ntlmssp_state->workstation, True);
|
||||
|
||||
/* setup the string used by %U */
|
||||
/* sub_set_smb_name checks for weird internally */
|
||||
|
@ -398,7 +398,7 @@ static void send_fs_socket(char *the_service, char *mount_point, struct cli_stat
|
||||
}
|
||||
|
||||
/* here we are no longer interactive */
|
||||
set_remote_machine_name("smbmount"); /* sneaky ... */
|
||||
set_remote_machine_name("smbmount", False); /* sneaky ... */
|
||||
setup_logging("mount.smbfs", False);
|
||||
reopen_logs();
|
||||
DEBUG(0, ("mount.smbfs: entering daemon mode for service %s, pid=%d\n", the_service, sys_getpid()));
|
||||
|
@ -29,21 +29,44 @@ fstring remote_proto="UNKNOWN";
|
||||
static fstring remote_machine;
|
||||
static fstring smb_user_name;
|
||||
|
||||
/**
|
||||
* Set the 'local' machine name
|
||||
* @param local_name the name we are being called
|
||||
* @param if this is the 'final' name for us, not be be changed again
|
||||
*/
|
||||
|
||||
void set_local_machine_name(const char* local_name)
|
||||
void set_local_machine_name(const char* local_name, BOOL perm)
|
||||
{
|
||||
static BOOL already_perm = False;
|
||||
fstring tmp_local_machine;
|
||||
|
||||
if (already_perm)
|
||||
return;
|
||||
|
||||
already_perm = perm;
|
||||
|
||||
fstrcpy(tmp_local_machine,local_name);
|
||||
trim_string(tmp_local_machine," "," ");
|
||||
strlower(tmp_local_machine);
|
||||
alpha_strcpy(local_machine,tmp_local_machine,SAFE_NETBIOS_CHARS,sizeof(local_machine)-1);
|
||||
}
|
||||
|
||||
void set_remote_machine_name(const char* remote_name)
|
||||
/**
|
||||
* Set the 'remote' machine name
|
||||
* @param remote_name the name our client wants to be called by
|
||||
* @param if this is the 'final' name for them, not be be changed again
|
||||
*/
|
||||
|
||||
void set_remote_machine_name(const char* remote_name, BOOL perm)
|
||||
{
|
||||
static BOOL already_perm = False;
|
||||
fstring tmp_remote_machine;
|
||||
|
||||
if (already_perm)
|
||||
return;
|
||||
|
||||
already_perm = perm;
|
||||
|
||||
fstrcpy(tmp_remote_machine,remote_name);
|
||||
trim_string(tmp_remote_machine," "," ");
|
||||
strlower(tmp_remote_machine);
|
||||
@ -57,6 +80,10 @@ const char* get_remote_machine_name(void)
|
||||
|
||||
const char* get_local_machine_name(void)
|
||||
{
|
||||
if (!*local_machine) {
|
||||
return global_myname();
|
||||
}
|
||||
|
||||
return local_machine;
|
||||
}
|
||||
|
||||
|
@ -292,7 +292,7 @@ static BOOL reload_nmbd_services(BOOL test)
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
set_remote_machine_name("nmbd");
|
||||
set_remote_machine_name("nmbd", False);
|
||||
|
||||
if ( lp_loaded() ) {
|
||||
pstring fname;
|
||||
|
@ -87,8 +87,8 @@ int reply_special(char *inbuf,char *outbuf)
|
||||
name2[15] = 0;
|
||||
}
|
||||
|
||||
set_local_machine_name(name1);
|
||||
set_remote_machine_name(name2);
|
||||
set_local_machine_name(name1, True);
|
||||
set_remote_machine_name(name2, True);
|
||||
|
||||
DEBUG(2,("netbios connect: local=%s remote=%s\n",
|
||||
get_local_machine_name(), get_remote_machine_name() ));
|
||||
|
@ -398,7 +398,7 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_
|
||||
|
||||
/* this is needed so that we get decent entries
|
||||
in smbstatus for port 445 connects */
|
||||
set_remote_machine_name(get_socket_addr(smbd_server_fd()));
|
||||
set_remote_machine_name(get_socket_addr(smbd_server_fd()), False);
|
||||
|
||||
/* Reset global variables in util.c so
|
||||
that client substitutions will be
|
||||
@ -703,7 +703,7 @@ static BOOL init_structs(void )
|
||||
|
||||
load_case_tables();
|
||||
|
||||
set_remote_machine_name("smbd");
|
||||
set_remote_machine_name("smbd", False);
|
||||
|
||||
if (interactive) {
|
||||
Fork = False;
|
||||
|
@ -619,7 +619,7 @@ static void process(void)
|
||||
lp_set_logfile(logfile);
|
||||
}
|
||||
|
||||
set_remote_machine_name("wrepld");
|
||||
set_remote_machine_name("wrepld", False);
|
||||
|
||||
setup_logging(argv[0],log_stdout);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user