From: Stefan Metzmacher Date: Mon, 11 Nov 2019 16:47:42 +0000 (+0100) Subject: s3:smbspool: avoid using CLI_FULL_CONNECTION_{USE,FALLBACK_AFTER}_KERBEROS flags X-Git-Tag: ldb-2.2.0~289 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0c742ee2686fe1444279dbb75efc899d67969b74;p=thirdparty%2Fsamba.git s3:smbspool: avoid using CLI_FULL_CONNECTION_{USE,FALLBACK_AFTER}_KERBEROS flags Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider --- diff --git a/source3/client/smbspool.c b/source3/client/smbspool.c index e8be739f5cd..f56dc323b6e 100644 --- a/source3/client/smbspool.c +++ b/source3/client/smbspool.c @@ -64,16 +64,6 @@ static int get_exit_code(NTSTATUS nt_status); static void list_devices(void); static NTSTATUS -smb_complete_connection(struct cli_state **output_cli, - const char *myname, - const char *server, - int port, - const char *username, - const char *password, - const char *workgroup, - const char *share, - int flags); -static NTSTATUS smb_connect(struct cli_state **output_cli, const char *workgroup, const char *server, @@ -546,30 +536,21 @@ smb_complete_connection(struct cli_state **output_cli, const char *password, const char *workgroup, const char *share, - int flags) + bool use_kerberos, + bool fallback_after_kerberos) { struct cli_state *cli; /* New connection */ NTSTATUS nt_status; struct cli_credentials *creds = NULL; - bool use_kerberos = false; - bool fallback_after_kerberos = false; /* Start the SMB connection */ nt_status = cli_start_connection(&cli, myname, server, NULL, port, - SMB_SIGNING_DEFAULT, flags); + SMB_SIGNING_DEFAULT, 0); if (!NT_STATUS_IS_OK(nt_status)) { fprintf(stderr, "ERROR: Connection failed: %s\n", nt_errstr(nt_status)); return nt_status; } - if (flags & CLI_FULL_CONNECTION_USE_KERBEROS) { - use_kerberos = true; - } - - if (flags & CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS) { - fallback_after_kerberos = true; - } - creds = cli_session_creds_init(cli, username, workgroup, @@ -694,8 +675,8 @@ smb_connect(struct cli_state **output_cli, struct cli_state *cli = NULL; /* New connection */ char *myname = NULL; /* Client name */ struct passwd *pwd; - int flags = CLI_FULL_CONNECTION_USE_KERBEROS; bool use_kerberos = false; + bool fallback_after_kerberos = false; const char *user = username; NTSTATUS nt_status; @@ -726,7 +707,7 @@ smb_connect(struct cli_state **output_cli, } /* Fallback to NTLM */ - flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS; + fallback_after_kerberos = true; fprintf(stderr, "DEBUG: Try to connect using username/password ...\n"); @@ -734,7 +715,7 @@ smb_connect(struct cli_state **output_cli, goto anonymous; } else if (strcmp(auth_info_required, "samba") == 0) { if (username != NULL) { - flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS; + fallback_after_kerberos = true; } else if (kerberos_ccache_is_valid()) { auth_info_required = "negotiate"; @@ -757,7 +738,8 @@ smb_connect(struct cli_state **output_cli, password, workgroup, share, - flags); + true, /* try kerberos */ + fallback_after_kerberos); if (NT_STATUS_IS_OK(nt_status)) { fprintf(stderr, "DEBUG: SMB connection established.\n"); @@ -784,7 +766,7 @@ smb_connect(struct cli_state **output_cli, "", workgroup, share, - 0); + false, false); if (NT_STATUS_IS_OK(nt_status)) { fputs("DEBUG: Connected with NTLMSSP...\n", stderr); @@ -805,7 +787,7 @@ anonymous: "", workgroup, share, - 0); + false, false); if (NT_STATUS_IS_OK(nt_status)) { *output_cli = cli; return NT_STATUS_OK;