diff options
Diffstat (limited to 'source3')
| -rw-r--r-- | source3/libsmb/clidfs.c | 53 | 
1 files changed, 52 insertions, 1 deletions
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c index 971cde1252..0b55d930aa 100644 --- a/source3/libsmb/clidfs.c +++ b/source3/libsmb/clidfs.c @@ -46,6 +46,7 @@ static struct cm_cred_struct {  	char *password;  	bool got_pass;  	bool use_kerberos; +	bool fallback_after_kerberos;  	int signing_state;  } cm_creds; @@ -172,6 +173,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,  	c->protocol = max_protocol;  	c->use_kerberos = cm_creds.use_kerberos; +	c->fallback_after_kerberos = cm_creds.fallback_after_kerberos;  	cli_setup_signing_state(c, cm_creds.signing_state);  	if (!cli_session_request(c, &calling, &called)) { @@ -199,7 +201,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,  		return NULL;  	} -	if (!cm_creds.got_pass) { +	if (!cm_creds.got_pass && !cm_creds.use_kerberos) {  		char *pass = getpass("Password: ");  		if (pass) {  			cm_set_password(pass); @@ -461,6 +463,9 @@ static void cm_set_password(const char *newpass)  	}  } +/**************************************************************************** +****************************************************************************/ +  void cli_cm_set_credentials(void)  {  	SAFE_FREE(cm_creds.username); @@ -471,6 +476,7 @@ void cli_cm_set_credentials(void)  	}  	cm_creds.use_kerberos = get_cmdline_auth_info_use_kerberos(); +	cm_creds.fallback_after_kerberos = false;  	cm_creds.signing_state = get_cmdline_auth_info_signing_state();  } @@ -493,6 +499,51 @@ void cli_cm_set_dest_name_type(int type)  /****************************************************************************  ****************************************************************************/ +void cli_cm_set_signing_state(int state) +{ +	cm_creds.signing_state = state; +} + +/**************************************************************************** +****************************************************************************/ + +void cli_cm_set_username(const char *username) +{ +	SAFE_FREE(cm_creds.username); +	cm_creds.username = SMB_STRDUP(username); +} + +/**************************************************************************** +****************************************************************************/ + +void cli_cm_set_password(const char *newpass) +{ +	SAFE_FREE(cm_creds.password); +	cm_creds.password = SMB_STRDUP(newpass); +	if (cm_creds.password) { +		cm_creds.got_pass = true; +	} +} + +/**************************************************************************** +****************************************************************************/ + +void cli_cm_set_use_kerberos(void) +{ +	cm_creds.use_kerberos = true; +} + +/**************************************************************************** +****************************************************************************/ + +void cli_cm_set_fallback_after_kerberos(void) +{ +	cm_creds.fallback_after_kerberos = true; +} + +/**************************************************************************** +****************************************************************************/ +  void cli_cm_set_dest_ss(struct sockaddr_storage *pss)  {  	dest_ss = *pss;  | 
